From: Erik Faye-Lund Date: Fri, 05 Aug 2011 17:58:18 GMT Subject: Re: [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names Message-ID: In-Reply-To: <7vipqb3g1w.fsf@alter.siamese.dyndns.org> On Fri, Aug 5, 2011 at 7:48 PM, Junio C Hamano wrote: > Pascal Obry writes: > >> In fact Cygwin supports both, so make Git agree with this. >> The failing case is when a file is committed in a sub-dir of the >> repository using a log message from a file specified with a DOS >> style path-name. To reproduce: >> >>    $ cd src >>    $ git commit -F c:\tmp\log.txt file.c >>    fatal: could not read log file 'src/c:\tmp\log.txt': No such file \ >>    or directory. >> >> Signed-off-by: Pascal Obry >> --- >>  compat/cygwin.h |    3 +++ >>  1 files changed, 3 insertions(+), 0 deletions(-) >> >> diff --git a/compat/cygwin.h b/compat/cygwin.h >> index a3229f5..de9737c 100644 >> --- a/compat/cygwin.h >> +++ b/compat/cygwin.h >> @@ -7,3 +7,6 @@ extern stat_fn_t cygwin_lstat_fn; >> >>  #define stat(path, buf) (*cygwin_stat_fn)(path, buf) >>  #define lstat(path, buf) (*cygwin_lstat_fn)(path, buf) >> + >> +#define has_dos_drive_prefix(path) (isalpha(*(path)) && (path)[1] == ':') >> +#define is_dir_sep(c) ((c) == '/' || (c) == '\\') > > I wonder if these two that are the same as mingw should further be > consolidated into one implementation, something like below. > > Note that I am just wondering, not suggesting, without knowing which is > better. IMO this becomes a bit hard to read as you have to ping-pong between sources to understand exactly what that flag does. We have compat/win32.h, perhaps we should move the macros there and include it from both compat/mingw.h and compat/cygwin.h instead (given that we're going to do this, of course)?