git-commit-vandalism/compat
Torsten Bögershausen 0117c2f043 Make core.sharedRepository work under cygwin 1.7
When core.sharedRepository is used, set_shared_perm() in path.c
needs lstat() to return the correct POSIX permissions.

The default for cygwin is core.ignoreCygwinFSTricks = false, which
means that the fast implementation in do_stat() is used instead of
lstat().

lstat() under cygwin uses the Windows security model to implement
POSIX-like permissions.  The user, group or everyone bits can be set
individually.

do_stat() simplifes the file permission bits, and may return a wrong
value.  The read-only attribute of a file is used to calculate the
permissions, resulting in either rw-r--r-- or r--r--r--

One effect of the simplified do_stat() is that t1301 fails.

Add a function cygwin_get_st_mode_bits() which returns the POSIX
permissions.  When not compiling for cygwin, true_mode_bits() in
path.c is used.

Side note:

t1301 passes under cygwin 1.5.

The "user write" bit is synchronized with the "read only" attribute
of a file:

    $ chmod 444 x
    $ attrib x
    A    R     C:\temp\pt\x

    cygwin 1.7 would show
    A          C:\temp\pt\x

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-03-25 14:57:33 -07:00
..
fnmatch Merge branch 'nd/wildmatch' 2013-01-10 13:47:20 -08:00
nedmalloc nedmalloc: Fix a compile warning (exposed as error) with GCC 4.7.2 2012-12-11 22:10:22 -08:00
poll make poll() work on platforms that can't recv() on a non-socket 2012-09-17 15:44:20 -07:00
regex Fix compat/regex ANSIfication on MinGW 2010-08-26 09:25:53 -07:00
vcbuild msvc: Fix build by adding missing symbol defines 2013-02-25 12:40:03 -08:00
win32 make poll available for other platforms lacking it 2012-09-17 15:42:57 -07:00
basename.c compat: add a basename() compatibility function 2009-05-31 17:57:59 -07:00
bswap.h compat: make gcc bswap an inline function 2011-03-16 12:44:59 -07:00
cygwin.c Make core.sharedRepository work under cygwin 1.7 2013-03-25 14:57:33 -07:00
cygwin.h Make core.sharedRepository work under cygwin 1.7 2013-03-25 14:57:33 -07:00
fopen.c
hstrerror.c
inet_ntop.c Drop system includes from inet_pton/inet_ntop compatibility wrappers 2012-02-05 16:32:33 -08:00
inet_pton.c Drop system includes from inet_pton/inet_ntop compatibility wrappers 2012-02-05 16:32:33 -08:00
memmem.c
mingw.c Merge branch 'ef/mingw-rmdir' 2012-12-11 15:51:14 -08:00
mingw.h mingw: get rid of getpass implementation 2012-12-04 08:03:42 -08:00
mkdir.c compat: some mkdir() do not like a slash at the end 2012-08-24 09:48:51 -07:00
mkdtemp.c Fix gitmkdtemp: correct test for mktemp() return value 2010-02-25 12:08:22 -08:00
mmap.c
msvc.c win32: use our own dirent.h 2010-11-23 16:06:50 -08:00
msvc.h msvc: test-svn-fe: Fix linker "unresolved external" error 2013-02-25 12:40:34 -08:00
obstack.c obstack.c: Fix some sparse warnings 2011-09-11 14:43:33 -07:00
obstack.h obstack: Fix portability issues 2011-08-28 22:03:26 -07:00
pread.c
precompose_utf8.c precompose-utf8: do not call checks for non-ascii "utf8" 2012-08-20 11:12:58 -07:00
precompose_utf8.h git on Mac OS and precomposed unicode 2012-07-08 22:03:46 -07:00
qsort.c cleanup: use internal memory allocation wrapper functions everywhere 2011-10-06 13:54:32 -07:00
setenv.c compat/setenv.c: error if name contains '=' 2011-12-14 19:31:03 -08:00
snprintf.c compat/snprintf: don't look at va_list twice 2011-12-12 09:09:35 -08:00
strcasestr.c
strlcpy.c
strtoimax.c Add strtoimax() compatibility function. 2011-11-02 13:06:30 -07:00
strtoumax.c
terminal.c mingw: reuse tty-version of git_terminal_prompt 2012-12-04 08:03:08 -08:00
terminal.h add generic terminal prompt function 2011-12-12 16:09:38 -08:00
unsetenv.c
win32.h Make usage of windows.h lean and mean 2009-09-18 20:00:42 -07:00
win32mmap.c remove superfluous newlines in error messages 2012-04-30 15:45:51 -07:00
winansi.c Make usage of windows.h lean and mean 2009-09-18 20:00:42 -07:00