diff options
author | Torsten Bögershausen <tboegi@web.de> | 2013-03-23 13:40:29 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-03-25 14:57:33 -0700 |
commit | 0117c2f043183fb99e9b046b0df7d64c1b296624 (patch) | |
tree | a14923132f37710b05f36e596cc8cd9acff23517 /git-compat-util.h | |
parent | 7b592fadf1e23b10b913e0771b9f711770597266 (diff) | |
download | git-0117c2f043183fb99e9b046b0df7d64c1b296624.tar.gz git-0117c2f043183fb99e9b046b0df7d64c1b296624.tar.xz |
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>
Diffstat (limited to 'git-compat-util.h')
-rw-r--r-- | git-compat-util.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/git-compat-util.h b/git-compat-util.h index 90e037203..cde442fb5 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -163,6 +163,7 @@ typedef long intptr_t; typedef unsigned long uintptr_t; #endif +int get_st_mode_bits(const char *path, int *mode); #if defined(__CYGWIN__) #undef _XOPEN_SOURCE #include <grp.h> |