winansi: fix compile warnings
[4msysgit-hv.git] / compat / win32.h
blobd531130b124faa3e72836c861f65188480519009
1 /* common Win32 functions for MinGW and Cygwin */
2 #include <windows.h>
3 #include <conio.h>
5 static inline int file_attr_to_st_mode (DWORD attr)
7 int fMode = S_IREAD;
8 if (attr & FILE_ATTRIBUTE_DIRECTORY)
9 fMode |= S_IFDIR;
10 else
11 fMode |= S_IFREG;
12 if (!(attr & FILE_ATTRIBUTE_READONLY))
13 fMode |= S_IWRITE;
14 return fMode;
17 static inline int get_file_attr(const char *fname, WIN32_FILE_ATTRIBUTE_DATA *fdata)
19 if (GetFileAttributesExA(fname, GetFileExInfoStandard, fdata))
20 return 0;
22 switch (GetLastError()) {
23 case ERROR_ACCESS_DENIED:
24 case ERROR_SHARING_VIOLATION:
25 case ERROR_LOCK_VIOLATION:
26 case ERROR_SHARING_BUFFER_EXCEEDED:
27 return EACCES;
28 case ERROR_BUFFER_OVERFLOW:
29 return ENAMETOOLONG;
30 case ERROR_NOT_ENOUGH_MEMORY:
31 return ENOMEM;
32 default:
33 return ENOENT;