git-commit-vandalism/compat/win32
Torsten Bögershausen 1cadad6f65 git clone <url> C:\cygwin\home\USER\repo' is working (again)
A regression for cygwin users was introduced with commit 05b458c,
 "real_path: resolve symlinks by hand".

In the the commit message we read:
  The current implementation of real_path uses chdir() in order to resolve
    symlinks.  Unfortunately this isn't thread-safe as chdir() affects a
      process as a whole...

The old (and non-thread-save) OS calls chdir()/pwd() had been
replaced by a string operation.
The cygwin layer "knows" that "C:\cygwin" is an absolute path,
but the new string operation does not.

"git clone <url> C:\cygwin\home\USER\repo" fails like this:
fatal: Invalid path '/home/USER/repo/C:\cygwin\home\USER\repo'

The solution is to implement has_dos_drive_prefix(), skip_dos_drive_prefix()
is_dir_sep(), offset_1st_component() and convert_slashes() for cygwin
in the same way as it is done in 'Git for Windows' in compat/mingw.[ch]

Extract the needed code into compat/win32/path-utils.[ch] and use it
for cygwin as well.

Reported-by: Steven Penny <svnpenn@gmail.com>
Helped-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-12-26 15:26:17 -08:00
..
alloca.h mingw: activate alloca 2014-04-09 10:08:35 -07:00
dirent.c Win32: Unicode file name support (dirent) 2014-07-15 11:19:09 -07:00
dirent.h Win32: Unicode file name support (dirent) 2014-07-15 11:19:09 -07:00
lazyload.h Win32: simplify loading of DLL functions 2017-09-26 11:02:49 +09:00
path-utils.c git clone <url> C:\cygwin\home\USER\repo' is working (again) 2018-12-26 15:26:17 -08:00
path-utils.h git clone <url> C:\cygwin\home\USER\repo' is working (again) 2018-12-26 15:26:17 -08:00
pthread.c compat/win32/pthread.c: Fix a sparse warning 2013-04-28 12:26:45 -07:00
pthread.h Merge branch 'jk/push-client-deadlock-fix' 2016-05-18 15:11:46 -07:00
syslog.c win32: plug memory leak on realloc() failure in syslog() 2017-08-10 13:57:52 -07:00
syslog.h mingw: implement syslog 2010-11-04 16:53:49 -07:00