summaryrefslogtreecommitdiff
path: root/git-compat-util.h
diff options
context:
space:
mode:
authorTorsten Bögershausen <tboegi@web.de>2013-03-23 12:40:29 (GMT)
committerJunio C Hamano <gitster@pobox.com>2013-03-25 21:57:33 (GMT)
commit0117c2f043183fb99e9b046b0df7d64c1b296624 (patch)
treea14923132f37710b05f36e596cc8cd9acff23517 /git-compat-util.h
parent7b592fadf1e23b10b913e0771b9f711770597266 (diff)
downloadgit-0117c2f043183fb99e9b046b0df7d64c1b296624.zip
git-0117c2f043183fb99e9b046b0df7d64c1b296624.tar.gz
git-0117c2f043183fb99e9b046b0df7d64c1b296624.tar.bz2
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.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/git-compat-util.h b/git-compat-util.h
index 90e0372..cde442f 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>