if dest symbolic link exists, remove it and relink
[charm.git] / src / arch / win32 / createlink.cpp
1 /*
2 unix2nt_cc  -c createlink.cpp -o createlink.o -D_WIN32_WINNT=0x0500
3 unix2nt_cc createlink.o
4 */
5
6 #include <windows.h>
7 #include <stdio.h>
8
9 int main(int argc, char **argv)
10 {
11   if (argc < 2) {
12     printf("%s srcFile destFile\n", argv[0]);
13     exit(1);
14   }
15   char *src = argv[1];
16   char *dest = argv[2];
17   bool fCreatedLink  = CreateHardLink(dest, src, NULL);
18   if (!fCreatedLink) {
19     int err=GetLastError();
20     if (err == ERROR_ALREADY_EXISTS) {
21       remove(dest);
22       fCreatedLink  = CreateHardLink(dest, src, NULL);   // try again
23       if (!fCreatedLink)  err=GetLastError();
24     }
25     if (!fCreatedLink)  {
26       printf("CreateHardLink %s => %s failed errno=%d, WSAerr=%d\n", src, dest, errno, err);
27       exit(1);
28     }
29   }
30   else {
31     exit(0);
32   }
33   return 0;
34 }
35