diff options
author | Junio C Hamano <gitster@pobox.com> | 2016-02-05 14:54:17 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-02-05 14:54:17 -0800 |
commit | 07be1da216debe1f76cd4d03ac5effcb9e40e6c6 (patch) | |
tree | 7642a42d6b7348710a13374c6b6dda1b6a51d225 /compat/mingw.c | |
parent | 081363dde231346c2f051cd7d41622f6fa02e3cb (diff) | |
parent | e7d5ce816579723150c341116737fb51d8e33eb3 (diff) | |
download | git-07be1da216debe1f76cd4d03ac5effcb9e40e6c6.tar.gz |
Merge branch 'js/dirname-basename' into maint
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 5edea29508..9b2a1f552e 100644 --- a/compat/mingw.c +++ b/compat/mingw.c @@ -1932,28 +1932,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) |