Fix "Load/Save to cloudstorage" for non-ASCII user names

On Windows that would fail because stat() doesn't deal well with our
utf8 strings.

Added new subsurface_stat() portability function to replace stat().
Added Windows implementation of subsurface_stat() using wstat(),
with conversion to ut16 of the inputed path.
Other platform implementations (linux, android) make use of the normal stat().

Added non ASCII test case in TestGitStorage::testGitStorageLocal()

Signed-off-by: Jeremie Guichard <djebrest@gmail.com>
This commit is contained in:
Jeremie Guichard 2017-02-24 14:06:48 +07:00 committed by Dirk Hohndel
parent 5640a6a839
commit 5ed93a9d9e
6 changed files with 27 additions and 2 deletions

View file

@ -768,7 +768,7 @@ static struct git_repository *get_remote_repo(const char *localdir, const char *
}
git_storage_update_progress(false, "start git interaction");
/* Do we already have a local cache? */
if (!stat(localdir, &st)) {
if (!subsurface_stat(localdir, &st)) {
if (!S_ISDIR(st.st_mode)) {
if (is_subsurface_cloud)
(void)cleanup_local_cache(remote, branch);
@ -934,7 +934,7 @@ struct git_repository *is_git_repository(const char *filename, const char **bran
return repo;
}
if (stat(loc, &st) < 0 || !S_ISDIR(st.st_mode)) {
if (subsurface_stat(loc, &st) < 0 || !S_ISDIR(st.st_mode)) {
free(loc);
free(branch);
return dummy_git_repository;