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-04-20 19:14:04 +0200 |
commit | fa7ad8d569d33a54c02c9db9160f5e17f8438566 (patch) | |
tree | 3f250b4e5792e465468c9be9852eb3bae3a5e4f4 /win32 | |
parent | 86167803e83ffb2b799876269bb4439192e964b3 (diff) | |
download | busybox-w32-fa7ad8d569d33a54c02c9db9160f5e17f8438566.tar.gz busybox-w32-fa7ad8d569d33a54c02c9db9160f5e17f8438566.tar.bz2 busybox-w32-fa7ad8d569d33a54c02c9db9160f5e17f8438566.zip |
win32: add link()
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
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 | } | ||