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-09-10 18:40:19 +1000
commitb8ba0563f25d5ac40d80718d5d05503c27806765 (patch)
tree94fd1d65df8171582b63db19b58580e2d22936ae /win32
parent67129af6419e1e839f2a34811173b27342c8e40d (diff)
downloadbusybox-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.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}