char* xstrrchr(char*, int);
char* xstrstr(char*, char*);
char* xworkdir(void);
+int xsamefile(char*, char*);
"Read and run ./sudo.bash to install the debuggers.\n");
}
- if(!streq(goroot_final, goroot)) {
+ if(!xsamefile(goroot_final, goroot)) {
xprintf("\n"
"The binaries expect %s to be copied or moved to %s\n",
goroot, goroot_final);
return strrchr(p, c);
}
+// xsamefile returns whether f1 and f2 are the same file (or dir)
+int
+xsamefile(char *f1, char *f2)
+{
+ return streq(f1, f2); // suffice for now
+}
+
#endif // PLAN9
return strrchr(p, c);
}
+// xsamefile returns whether f1 and f2 are the same file (or dir)
+int
+xsamefile(char *f1, char *f2)
+{
+ return streq(f1, f2); // suffice for now
+}
+
#endif // PLAN9
#endif // __WINDOWS__
return nil;
}
+// xsamefile returns whether f1 and f2 are the same file (or dir)
+int
+xsamefile(char *f1, char *f2)
+{
+ Rune *ru;
+ HANDLE fd1, fd2;
+ BY_HANDLE_FILE_INFORMATION fi1, fi2;
+ int r;
+
+ // trivial case
+ if(streq(f1, f2))
+ return 1;
+
+ torune(&ru, f1);
+ // refer to ../../pkg/os/stat_windows.go:/sameFile
+ fd1 = CreateFileW(ru, 0, 0, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
+ xfree(ru);
+ if(fd1 == INVALID_HANDLE_VALUE)
+ return 0;
+ torune(&ru, f2);
+ fd2 = CreateFileW(ru, 0, 0, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
+ xfree(ru);
+ if(fd2 == INVALID_HANDLE_VALUE) {
+ CloseHandle(fd1);
+ return 0;
+ }
+ r = GetFileInformationByHandle(fd1, &fi1) != 0 && GetFileInformationByHandle(fd2, &fi2) != 0;
+ CloseHandle(fd2);
+ CloseHandle(fd1);
+ if(r != 0 &&
+ fi1.dwVolumeSerialNumber == fi2.dwVolumeSerialNumber &&
+ fi1.nFileIndexHigh == fi2.nFileIndexHigh &&
+ fi1.nFileIndexLow == fi2.nFileIndexLow)
+ return 1;
+ return 0;
+}
+
#endif // __WINDOWS__
del env.bat
echo.
+if x%1==x--dist-tool goto copydist
+if x%2==x--dist-tool goto copydist
+
echo # Building compilers and Go bootstrap tool.
set buildall=-a
if x%1==x--no-clean set buildall=
goto end
+:copydist
+mkdir %GOTOOLDIR% 2>NUL
+copy cmd\dist\dist.exe %GOTOOLDIR%\
+goto end
+
:fail
set GOBUILDFAIL=1