diff options
author | Junio C Hamano <gitster@pobox.com> | 2016-02-03 14:16:06 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-02-03 14:16:06 -0800 |
commit | e01c6b15c97e30baedc45021e6dcbd90140616cd (patch) | |
tree | ef740ad7bbef152f294149f3ad10f95de0919025 /compat/mingw.c | |
parent | ebcdd635c58e89dbf931a9f90a1b248fb5e90315 (diff) | |
parent | e7d5ce816579723150c341116737fb51d8e33eb3 (diff) | |
download | git-e01c6b15c97e30baedc45021e6dcbd90140616cd.tar.gz |
Merge branch 'js/dirname-basename'
dirname() emulation has been added, as Msys2 lacks it.
* js/dirname-basename:
mingw: avoid linking to the C library's isalpha()
t0060: loosen overly strict expectations
t0060: verify that basename() and dirname() work as expected
compat/basename.c: provide a dirname() compatibility function
compat/basename: make basename() conform to POSIX
Refactor skipping DOS drive prefixes
Diffstat (limited to 'compat/mingw.c')
-rw-r--r-- | compat/mingw.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/compat/mingw.c b/compat/mingw.c index 7115e4e09e..77a51d3f72 100644 --- a/compat/mingw.c +++ b/compat/mingw.c @@ -1935,28 +1935,31 @@ pid_t waitpid(pid_t pid, int *status, int options) return -1; } +int mingw_skip_dos_drive_prefix(char **path) +{ + int ret = has_dos_drive_prefix(*path); + *path += ret; + return ret; +} + int mingw_offset_1st_component(const char *path) { - int offset = 0; - if (has_dos_drive_prefix(path)) - offset = 2; + char *pos = (char *)path; /* unc paths */ - else if (is_dir_sep(path[0]) && is_dir_sep(path[1])) { - + if (!skip_dos_drive_prefix(&pos) && + is_dir_sep(pos[0]) && is_dir_sep(pos[1])) { /* skip server name */ - char *pos = strpbrk(path + 2, "\\/"); + pos = strpbrk(pos + 2, "\\/"); if (!pos) return 0; /* Error: malformed unc path */ do { pos++; } while (*pos && !is_dir_sep(*pos)); - - offset = pos - path; } - return offset + is_dir_sep(path[offset]); + return pos + is_dir_sep(*pos) - path; } int xutftowcsn(wchar_t *wcs, const char *utfs, size_t wcslen, int utflen) |