aboutsummaryrefslogtreecommitdiffstats
path: root/win32/file.c
blob: cd89da24f5f1ed49c3a3bcb81fa542809f0aa4e4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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;
}