diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2010-04-14 06:59:24 +0200 |
---|---|---|
committer | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2010-09-10 18:40:19 +1000 |
commit | b8ba0563f25d5ac40d80718d5d05503c27806765 (patch) | |
tree | 94fd1d65df8171582b63db19b58580e2d22936ae /win32 | |
parent | 67129af6419e1e839f2a34811173b27342c8e40d (diff) | |
download | busybox-w32-b8ba0563f25d5ac40d80718d5d05503c27806765.tar.gz busybox-w32-b8ba0563f25d5ac40d80718d5d05503c27806765.tar.bz2 busybox-w32-b8ba0563f25d5ac40d80718d5d05503c27806765.zip |
win32: add link()
Diffstat (limited to 'win32')
-rw-r--r-- | win32/mingw.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/win32/mingw.c b/win32/mingw.c index afd017e87..eccd37cc3 100644 --- a/win32/mingw.c +++ b/win32/mingw.c | |||
@@ -327,3 +327,24 @@ sighandler_t mingw_signal(int sig, sighandler_t handler) | |||
327 | timer_fn = handler; | 327 | timer_fn = handler; |
328 | return old; | 328 | return old; |
329 | } | 329 | } |
330 | |||
331 | int link(const char *oldpath, const char *newpath) | ||
332 | { | ||
333 | typedef BOOL WINAPI (*T)(const char*, const char*, LPSECURITY_ATTRIBUTES); | ||
334 | static T create_hard_link = NULL; | ||
335 | if (!create_hard_link) { | ||
336 | create_hard_link = (T) GetProcAddress( | ||
337 | GetModuleHandle("kernel32.dll"), "CreateHardLinkA"); | ||
338 | if (!create_hard_link) | ||
339 | create_hard_link = (T)-1; | ||
340 | } | ||
341 | if (create_hard_link == (T)-1) { | ||
342 | errno = ENOSYS; | ||
343 | return -1; | ||
344 | } | ||
345 | if (!create_hard_link(newpath, oldpath, NULL)) { | ||
346 | errno = err_win_to_posix(GetLastError()); | ||
347 | return -1; | ||
348 | } | ||
349 | return 0; | ||
350 | } | ||