@@ -1869,69 +1869,71 @@ version (Windows) {
1869
1869
// / Report a symbolic link.
1870
1870
void report_link ()
1871
1871
{
1872
- report(" Soft symbolic link" );
1873
-
1872
+ enum LINK = " Soft symbolic link" ;
1874
1873
version (Windows )
1875
- { // Works half the time, see the Wiki post.
1876
- version (Symlink)
1877
- {
1878
- HANDLE hFile;
1879
- DWORD returnedLength;
1880
- WIN32_SYMLINK_REPARSE_DATA_BUFFER buffer;
1881
-
1882
- const char * p = &linkname[0 ];
1883
- SECURITY_ATTRIBUTES * sa; // Default
1884
-
1885
- hFile = CreateFileA(p, GENERIC_READ , 0u ,
1886
- sa, OPEN_EXISTING ,
1887
- FILE_FLAG_OPEN_REPARSE_POINT | FILE_FLAG_BACKUP_SEMANTICS , cast (void * )0 );
1888
- if (hFile == INVALID_HANDLE_VALUE ) { // TODO: Check why LDC2 fails here.
1889
- /* Error creating directory */
1890
- /* TclWinConvertError(GetLastError()); */
1891
- return ;
1892
- }
1893
- /* Get the link */
1894
- if (! DeviceIoControl(hFile, FSCTL_GET_REPARSE_POINT , NULL , 0 , &buffer,
1895
- WIN32_SYMLINK_REPARSE_DATA_BUFFER .sizeof, &returnedLength, NULL )) {
1896
- /* Error setting junction */
1874
+ {
1875
+ report(LINK );
1876
+ // Works half the time, see the Wiki post.
1877
+ version (Symlink)
1878
+ {
1879
+ HANDLE hFile;
1880
+ DWORD returnedLength;
1881
+ WIN32_SYMLINK_REPARSE_DATA_BUFFER buffer;
1882
+
1883
+ const char * p = &linkname[0 ];
1884
+ SECURITY_ATTRIBUTES * sa; // Default
1885
+
1886
+ hFile = CreateFileA(p, GENERIC_READ , 0u ,
1887
+ sa, OPEN_EXISTING ,
1888
+ FILE_FLAG_OPEN_REPARSE_POINT | FILE_FLAG_BACKUP_SEMANTICS , cast (void * )0 );
1889
+ if (hFile == INVALID_HANDLE_VALUE ) { // TODO: Check why LDC2 fails here.
1890
+ /* Error creating directory */
1897
1891
/* TclWinConvertError(GetLastError()); */
1898
- CloseHandle(hFile);
1899
1892
return ;
1900
1893
}
1894
+ /* Get the link */
1895
+ if (! DeviceIoControl(hFile, FSCTL_GET_REPARSE_POINT , NULL , 0 , &buffer,
1896
+ WIN32_SYMLINK_REPARSE_DATA_BUFFER .sizeof, &returnedLength, NULL )) {
1897
+ /* Error setting junction */
1898
+ /* TclWinConvertError(GetLastError()); */
1899
+ CloseHandle(hFile);
1900
+ return ;
1901
+ }
1901
1902
1902
- CloseHandle(hFile);
1903
+ CloseHandle(hFile);
1903
1904
1904
- if (! IsReparseTagValid(buffer.ReparseTag)) {
1905
- /* Tcl_SetErrno(EINVAL); */
1906
- return ;
1907
- }
1905
+ if (! IsReparseTagValid(buffer.ReparseTag)) {
1906
+ /* Tcl_SetErrno(EINVAL); */
1907
+ return ;
1908
+ }
1908
1909
1909
- DWORD wstrlen (const (void )* p) {
1910
- DWORD s;
1911
- wchar * wp = cast (wchar * )p;
1912
- while (* wp++ != wchar .init) ++ s;
1913
- return s;
1914
- }
1910
+ DWORD wstrlen (const (void )* p) {
1911
+ DWORD s;
1912
+ wchar * wp = cast (wchar * )p;
1913
+ while (* wp++ != wchar .init) ++ s;
1914
+ return s;
1915
+ }
1915
1916
1916
- printf(" to " );
1917
- stdout.flush; // on x86-dmd builds, used to move cursor
1918
- const (void )* wp = &buffer.ReparseTarget[2 ];
1919
- DWORD c;
1920
- WriteConsoleW(
1921
- GetStdHandle(STD_OUTPUT_HANDLE ),
1922
- wp,
1923
- wstrlen(wp) / 2 ,
1924
- &c,
1925
- cast (void * )0
1926
- );
1927
- } // version (Symlink)
1917
+ printf(" to " );
1918
+ stdout.flush; // on x86-dmd builds, used to move cursor
1919
+ const (void )* wp = &buffer.ReparseTarget[2 ];
1920
+ DWORD c;
1921
+ WriteConsoleW(
1922
+ GetStdHandle(STD_OUTPUT_HANDLE ),
1923
+ wp,
1924
+ wstrlen(wp) / 2 ,
1925
+ &c,
1926
+ cast (void * )0
1927
+ );
1928
+ } // version (Symlink)
1928
1929
} // version (Windows)
1929
1930
version (Posix )
1930
1931
{
1931
1932
import core.stdc.stdio : printf;
1932
1933
import core.sys.posix.stdlib : realpath;
1933
- char * p = realpath(&linkname[0 ], cast (char * )0 );
1934
- if (p) printf(" to %s" , p);
1934
+ report(LINK , false );
1935
+ char * p = realpath(&filename[0 ], cast (char * )0 );
1936
+ if (p) printf(" to %s\n " , p);
1935
1937
}
1936
1938
}
1937
1939
0 commit comments