89 |
89 |
90 int sys_stat(const char *path, SYS_STAT *s) { |
90 int sys_stat(const char *path, SYS_STAT *s) { |
91 return stat(path, s); |
91 return stat(path, s); |
92 } |
92 } |
93 |
93 |
|
94 int sys_lstat(const char *path, SYS_STAT *s) { |
|
95 return lstat(path, s); |
|
96 } |
|
97 |
94 int sys_rename(const char *oldpath, const char *newpath) { |
98 int sys_rename(const char *oldpath, const char *newpath) { |
95 return rename(oldpath, newpath); |
99 return rename(oldpath, newpath); |
96 } |
100 } |
97 |
101 |
98 int sys_unlink(const char *path) { |
102 int sys_unlink(const char *path) { |
99 return unlink(path); |
103 return unlink(path); |
100 } |
104 } |
101 |
105 |
102 int sys_mkdir(const char *path) { |
106 int sys_mkdir(const char *path) { |
103 return mkdir(path, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); |
107 return mkdir(path, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); |
|
108 } |
|
109 |
|
110 ssize_t sys_readlink(const char *path, char *buffer, size_t size) { |
|
111 return readlink(path, buffer, size); |
104 } |
112 } |
105 |
113 |
106 #else |
114 #else |
107 /* ---------- Windows implementation ---------- */ |
115 /* ---------- Windows implementation ---------- */ |
108 |
116 |
224 int ret = _wstat64(fpath, s); |
232 int ret = _wstat64(fpath, s); |
225 free(fpath); |
233 free(fpath); |
226 return ret; |
234 return ret; |
227 } |
235 } |
228 |
236 |
|
237 int sys_lstat(const char *path, SYS_STAT *s) { |
|
238 // TODO: fix |
|
239 wchar_t *fpath = path2winpath(path, FALSE, NULL); |
|
240 if(!fpath) { |
|
241 fprintf(stderr, "Cannot convert path \"%s\" to UTF16\n", path); |
|
242 return -1; |
|
243 } |
|
244 int ret = _wstat64(fpath, s); |
|
245 free(fpath); |
|
246 return ret; |
|
247 } |
|
248 |
229 int sys_rename(const char *oldpath, const char *newpath) { |
249 int sys_rename(const char *oldpath, const char *newpath) { |
230 wchar_t *o = path2winpath(oldpath, FALSE, NULL); |
250 wchar_t *o = path2winpath(oldpath, FALSE, NULL); |
231 wchar_t *n = path2winpath(newpath, FALSE, NULL); |
251 wchar_t *n = path2winpath(newpath, FALSE, NULL); |
232 if(!o || !n) { |
252 if(!o || !n) { |
233 return -1; |
253 return -1; |