aboutsummaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2010-04-14 06:59:24 +0200
committerNguyễn Thái Ngọc Duy <pclouds@gmail.com>2010-04-20 19:14:04 +0200
commitfa7ad8d569d33a54c02c9db9160f5e17f8438566 (patch)
tree3f250b4e5792e465468c9be9852eb3bae3a5e4f4 /win32
parent86167803e83ffb2b799876269bb4439192e964b3 (diff)
downloadbusybox-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.c21
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
331int 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}