diff options
Diffstat (limited to 'win32/file.c')
-rw-r--r-- | win32/file.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/win32/file.c b/win32/file.c new file mode 100644 index 0000000000..cd89da24f5 --- /dev/null +++ b/win32/file.c @@ -0,0 +1,25 @@ +#include "ruby/ruby.h" +#include <winbase.h> + +int +rb_file_load_ok(const char *path) +{ + int ret = 1; + DWORD attr = GetFileAttributes(path); + if (attr == INVALID_FILE_ATTRIBUTES || + attr & FILE_ATTRIBUTE_DIRECTORY) { + ret = 0; + } + else { + HANDLE h = CreateFile(path, GENERIC_READ, + FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (h != INVALID_HANDLE_VALUE) { + CloseHandle(h); + } + else { + ret = 0; + } + } + return ret; +} |