summaryrefslogtreecommitdiff
path: root/compat/mingw.h
diff options
context:
space:
mode:
authorPat Thoyts <patthoyts@users.sourceforge.net>2010-03-17 15:17:34 (GMT)
committerPat Thoyts <patthoyts@users.sourceforge.net>2010-10-01 22:08:44 (GMT)
commit9b9784cab9bba925ab35c7aa8d4e5967a4268093 (patch)
tree1ae137409181e94bb8742e1a4fec9c1e9f361e20 /compat/mingw.h
parent4091bfc9616d5ac0371bb2ed80558f4a8f4d12f5 (diff)
downloadgit-9b9784cab9bba925ab35c7aa8d4e5967a4268093.zip
git-9b9784cab9bba925ab35c7aa8d4e5967a4268093.tar.gz
git-9b9784cab9bba925ab35c7aa8d4e5967a4268093.tar.bz2
MinGW: fix stat() and lstat() implementations for handling symlinks
In msysGit the stat() function has been implemented using mingw_lstat which sets the st_mode member to S_IFLNK when a symbolic links is found. This causes the is_executable function to return when git attempts to build a list of available commands in the help code and we end up missing most git commands. (msysGit issue #445) This patch modifies the implementation so that lstat() will return the link flag but if we are called as stat() we read the size of the target and set the mode to that of a regular file. Includes squashed fix st_mode for symlink dirs Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net> Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Diffstat (limited to 'compat/mingw.h')
-rw-r--r--compat/mingw.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/compat/mingw.h b/compat/mingw.h
index 74c799a..4783966 100644
--- a/compat/mingw.h
+++ b/compat/mingw.h
@@ -235,10 +235,11 @@ int mingw_getpagesize(void);
#ifndef ALREADY_DECLARED_STAT_FUNCS
#define stat _stati64
int mingw_lstat(const char *file_name, struct stat *buf);
+int mingw_stat(const char *file_name, struct stat *buf);
int mingw_fstat(int fd, struct stat *buf);
#define fstat mingw_fstat
#define lstat mingw_lstat
-#define _stati64(x,y) mingw_lstat(x,y)
+#define _stati64(x,y) mingw_stat(x,y)
#endif
int mingw_utime(const char *file_name, const struct utimbuf *times);