diff options
| author | Junio C Hamano <gitster@pobox.com> | 2019-01-14 15:29:32 -0800 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2019-01-14 15:29:32 -0800 |
| commit | 25d90d1cb72ce51407324259516843406142fe89 (patch) | |
| tree | 459b0885da10de9eddeed12f49cc9ebd10f0fac8 /compat/win32/path-utils.c | |
| parent | d95f610c64b9b33957beaa1da60a489d0b4aa7fc (diff) | |
| parent | 1cadad6f658bfb3ab54b25dd04bac372253473b6 (diff) | |
| download | git-25d90d1cb72ce51407324259516843406142fe89.tar.gz | |
Merge branch 'tb/use-common-win32-pathfuncs-on-cygwin'
Cygwin update.
* tb/use-common-win32-pathfuncs-on-cygwin:
git clone <url> C:\cygwin\home\USER\repo' is working (again)
Diffstat (limited to 'compat/win32/path-utils.c')
| -rw-r--r-- | compat/win32/path-utils.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/compat/win32/path-utils.c b/compat/win32/path-utils.c new file mode 100644 index 0000000000..d9d3641de8 --- /dev/null +++ b/compat/win32/path-utils.c @@ -0,0 +1,28 @@ +#include "../../git-compat-util.h" + +int win32_skip_dos_drive_prefix(char **path) +{ + int ret = has_dos_drive_prefix(*path); + *path += ret; + return ret; +} + +int win32_offset_1st_component(const char *path) +{ + char *pos = (char *)path; + + /* unc paths */ + if (!skip_dos_drive_prefix(&pos) && + is_dir_sep(pos[0]) && is_dir_sep(pos[1])) { + /* skip server name */ + pos = strpbrk(pos + 2, "\\/"); + if (!pos) + return 0; /* Error: malformed unc path */ + + do { + pos++; + } while (*pos && !is_dir_sep(*pos)); + } + + return pos + is_dir_sep(*pos) - path; +} |
