Commit 94ed23f86a0708a95c5d2c58b38ba0cd8acd0c97

Patrick Pokatilo 2013-02-07T01:41:20

Call p_readlink to determine symlink size

diff --git a/src/win32/posix_w32.c b/src/win32/posix_w32.c
index 0c23e29..b561e32 100644
--- a/src/win32/posix_w32.c
+++ b/src/win32/posix_w32.c
@@ -99,6 +99,19 @@ static int do_lstat(
 		buf->st_atime = filetime_to_time_t(&(fdata.ftLastAccessTime));
 		buf->st_mtime = filetime_to_time_t(&(fdata.ftLastWriteTime));
 		buf->st_ctime = filetime_to_time_t(&(fdata.ftCreationTime));
+		
+		if (fMode & S_IFLNK)
+		{
+			char target[GIT_WIN_PATH];
+			int readlink_result;
+			
+			readlink_result = p_readlink(file_name, target, GIT_WIN_PATH);
+			
+			if (readlink_result)
+				return -1;
+				
+			buf->st_size = strnlen(target, GIT_WIN_PATH);
+		}
 
 		return 0;
 	}