-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
mingw: move common functionality to win32.h
Some small Win32 specific functions will be shared by MinGW and Cygwin compatibility layer. Place them into a separate header. Signed-off-by: Dmitry Potapov <dpotapov@gmail.com> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
- Loading branch information
Dmitry Potapov
authored and
Shawn O. Pearce
committed
Sep 30, 2008
1 parent
d2b0708
commit 444dc90
Showing
2 changed files
with
38 additions
and
38 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
/* common Win32 functions for MinGW and Cygwin */ | ||
#include <windows.h> | ||
|
||
static inline int file_attr_to_st_mode (DWORD attr) | ||
{ | ||
int fMode = S_IREAD; | ||
if (attr & FILE_ATTRIBUTE_DIRECTORY) | ||
fMode |= S_IFDIR; | ||
else | ||
fMode |= S_IFREG; | ||
if (!(attr & FILE_ATTRIBUTE_READONLY)) | ||
fMode |= S_IWRITE; | ||
return fMode; | ||
} | ||
|
||
static inline int get_file_attr(const char *fname, WIN32_FILE_ATTRIBUTE_DATA *fdata) | ||
{ | ||
if (GetFileAttributesExA(fname, GetFileExInfoStandard, fdata)) | ||
return 0; | ||
|
||
switch (GetLastError()) { | ||
case ERROR_ACCESS_DENIED: | ||
case ERROR_SHARING_VIOLATION: | ||
case ERROR_LOCK_VIOLATION: | ||
case ERROR_SHARING_BUFFER_EXCEEDED: | ||
return EACCES; | ||
case ERROR_BUFFER_OVERFLOW: | ||
return ENAMETOOLONG; | ||
case ERROR_NOT_ENOUGH_MEMORY: | ||
return ENOMEM; | ||
default: | ||
return ENOENT; | ||
} | ||
} |