MinGW: fix stat() and lstat() implementations for handling symlinks
authorPat Thoyts <patthoyts@users.sourceforge.net>
Wed, 17 Mar 2010 15:17:34 +0000 (15:17 +0000)
committerPat Thoyts <patthoyts@users.sourceforge.net>
Fri, 1 Oct 2010 22:08:44 +0000 (23:08 +0100)
commit9b9784cab9bba925ab35c7aa8d4e5967a4268093
tree1ae137409181e94bb8742e1a4fec9c1e9f361e20
parent4091bfc9616d5ac0371bb2ed80558f4a8f4d12f5
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>
compat/mingw.c
compat/mingw.h