AGWA / AGWA/git-crypt

Unicode file/dir name bug fix

Ouverte
#292 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
C++
Étoiles
9.9k
Forks
544
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

- add 'utf8_to_gb' func into commands.cpp
```
static std::string utf8_to_gb(const char* str)
{
std::string result;
WCHAR* strSrc;
LPSTR szRes;

int i = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
strSrc = new WCHAR[i + 1];
MultiByteToWideChar(CP_UTF8, 0, str, -1, strSrc, i);

i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);
szRes = new CHAR[i + 1];
WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);

result = szRes;
delete[]strSrc;
delete[]szRes;

return result;
}
```
- modify 'get_encrypted_files' func in commands.cpp
```
while (ls_files_stdout->peek() != -1) {
std::string mode;
std::string object_id;
std::string stage;
std::string filename;
*ls_files_stdout >> mode >> object_id >> stage >> std::ws;
std::getline(*ls_files_stdout, filename, '\0');
filename = utf8_to_gb(filename.c_str()).c_str();
```
- modify 'status' func in commands.cpp
```
while (output.peek() != -1) {
std::string tag;
std::string object_id;
std::string filename;
output >> tag;
if (tag != "?") {
std::string mode;
std::string stage;
output >> mode >> object_id >> stage;
if (!is_git_file_mode(mode)) {
continue;
}
}
output >> std::ws;
std::getline(output, filename, '\0');
filename = utf8_to_gb(filename.c_str()).c_str();
```
- rebuild binary and done.

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.