compat / win32.hon commit Add MinGW header files to build git with MSVC (16fe1e0)
   1#ifndef WIN32_H
   2#define WIN32_H
   3
   4/* common Win32 functions for MinGW and Cygwin */
   5#include <windows.h>
   6
   7static inline int file_attr_to_st_mode (DWORD attr)
   8{
   9        int fMode = S_IREAD;
  10        if (attr & FILE_ATTRIBUTE_DIRECTORY)
  11                fMode |= S_IFDIR;
  12        else
  13                fMode |= S_IFREG;
  14        if (!(attr & FILE_ATTRIBUTE_READONLY))
  15                fMode |= S_IWRITE;
  16        return fMode;
  17}
  18
  19static inline int get_file_attr(const char *fname, WIN32_FILE_ATTRIBUTE_DATA *fdata)
  20{
  21        if (GetFileAttributesExA(fname, GetFileExInfoStandard, fdata))
  22                return 0;
  23
  24        switch (GetLastError()) {
  25        case ERROR_ACCESS_DENIED:
  26        case ERROR_SHARING_VIOLATION:
  27        case ERROR_LOCK_VIOLATION:
  28        case ERROR_SHARING_BUFFER_EXCEEDED:
  29                return EACCES;
  30        case ERROR_BUFFER_OVERFLOW:
  31                return ENAMETOOLONG;
  32        case ERROR_NOT_ENOUGH_MEMORY:
  33                return ENOMEM;
  34        default:
  35                return ENOENT;
  36        }
  37}
  38
  39#endif