Commit 43e380a8 by Vicent Marti

Fix gitfo_isdir() in Win32 systems

Because adhering to the POSIX standards is overrated.

Signed-off-by: Vicent Marti <tanoku@gmail.com>
parent 6b1eab39
...@@ -56,7 +56,25 @@ int gitfo_write(git_file fd, void *buf, size_t cnt) ...@@ -56,7 +56,25 @@ int gitfo_write(git_file fd, void *buf, size_t cnt)
int gitfo_isdir(const char *path) int gitfo_isdir(const char *path)
{ {
struct stat st; struct stat st;
return (path && gitfo_stat(path, &st) == 0 && S_ISDIR(st.st_mode)) ? int len, stat_error;
if (!path)
return GIT_ENOTFOUND;
len = strlen(path);
/* win32: stat path for folders cannot end in a slash */
if (path[len - 1] == '/') {
char *path_fixed = NULL;
path_fixed = git__strdup(path);
path_fixed[len - 1] = 0;
stat_error = gitfo_stat(path_fixed, &st);
free(path_fixed);
} else {
stat_error = gitfo_stat(path, &st);
}
return (stat_error == 0 && S_ISDIR(st.st_mode)) ?
GIT_SUCCESS : GIT_ENOTFOUND; GIT_SUCCESS : GIT_ENOTFOUND;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment