]>
Commit | Line | Data |
---|---|---|
f4626df5 JS |
1 | #include "../git-compat-util.h" |
2 | ||
3 | unsigned int _CRT_fmode = _O_BINARY; | |
4 | ||
3e4a1ba0 JS |
5 | #undef open |
6 | int mingw_open (const char *filename, int oflags, ...) | |
7 | { | |
8 | va_list args; | |
9 | unsigned mode; | |
10 | va_start(args, oflags); | |
11 | mode = va_arg(args, int); | |
12 | va_end(args); | |
13 | ||
14 | if (!strcmp(filename, "/dev/null")) | |
15 | filename = "nul"; | |
16 | int fd = open(filename, oflags, mode); | |
17 | if (fd < 0 && (oflags & O_CREAT) && errno == EACCES) { | |
18 | DWORD attrs = GetFileAttributes(filename); | |
19 | if (attrs != INVALID_FILE_ATTRIBUTES && (attrs & FILE_ATTRIBUTE_DIRECTORY)) | |
20 | errno = EISDIR; | |
21 | } | |
22 | return fd; | |
23 | } | |
24 | ||
f4626df5 JS |
25 | unsigned int sleep (unsigned int seconds) |
26 | { | |
27 | Sleep(seconds*1000); | |
28 | return 0; | |
29 | } | |
30 | ||
31 | int mkstemp(char *template) | |
32 | { | |
33 | char *filename = mktemp(template); | |
34 | if (filename == NULL) | |
35 | return -1; | |
36 | return open(filename, O_RDWR | O_CREAT, 0600); | |
37 | } | |
38 | ||
39 | int gettimeofday(struct timeval *tv, void *tz) | |
40 | { | |
41 | return -1; | |
42 | } | |
43 | ||
44 | int poll(struct pollfd *ufds, unsigned int nfds, int timeout) | |
45 | { | |
46 | return -1; | |
47 | } | |
48 | ||
49 | struct tm *gmtime_r(const time_t *timep, struct tm *result) | |
50 | { | |
51 | /* gmtime() in MSVCRT.DLL is thread-safe, but not reentrant */ | |
52 | memcpy(result, gmtime(timep), sizeof(struct tm)); | |
53 | return result; | |
54 | } | |
55 | ||
56 | struct tm *localtime_r(const time_t *timep, struct tm *result) | |
57 | { | |
58 | /* localtime() in MSVCRT.DLL is thread-safe, but not reentrant */ | |
59 | memcpy(result, localtime(timep), sizeof(struct tm)); | |
60 | return result; | |
61 | } | |
62 | ||
25fe217b JS |
63 | #undef getcwd |
64 | char *mingw_getcwd(char *pointer, int len) | |
65 | { | |
66 | int i; | |
67 | char *ret = getcwd(pointer, len); | |
68 | if (!ret) | |
69 | return ret; | |
70 | for (i = 0; pointer[i]; i++) | |
71 | if (pointer[i] == '\\') | |
72 | pointer[i] = '/'; | |
73 | return ret; | |
74 | } | |
75 | ||
f4626df5 JS |
76 | struct passwd *getpwuid(int uid) |
77 | { | |
f7597aca | 78 | static char user_name[100]; |
f4626df5 | 79 | static struct passwd p; |
f7597aca JS |
80 | |
81 | DWORD len = sizeof(user_name); | |
82 | if (!GetUserName(user_name, &len)) | |
83 | return NULL; | |
84 | p.pw_name = user_name; | |
85 | p.pw_gecos = "unknown"; | |
86 | p.pw_dir = NULL; | |
f4626df5 JS |
87 | return &p; |
88 | } | |
89 | ||
90 | int setitimer(int type, struct itimerval *in, struct itimerval *out) | |
91 | { | |
92 | return -1; | |
93 | } | |
94 | ||
95 | int sigaction(int sig, struct sigaction *in, struct sigaction *out) | |
96 | { | |
97 | return -1; | |
98 | } |