Haskell Directory opretter ugyldig symlink på Windows

Indlæg af Hanne Mølgaard Plasc

Problem



I år blev System.Directory opdateret til at omfatte createFileLink og createDirectoryLink handlinger, og for mig på Windows 10 fungerer begge fint for relative stier.


Når jeg bruger enten på en absolut sti (med ca. 50 tegn længde, så antager jeg i unicode det overstiger 260) det forpligter \? (dvs. "\\?\") til stierne, som kan ses fra \? 6]] som følger


<SYMLINKD>     source [\?T:CodehLinkinariesdest]
<SYMLINK>      source.txt [\?T:CodehLinkinariesdestsource.txt]


Mappen link fungerer fint, men fillinket gør ikke noget, det siger ikke engang, at målfilen mangler.


Når jeg opretter et fillink ved hjælp af MKLINK uden \? i den absolutte vej, fungerer det også fint, og når jeg opretter et link med MKLINK med \?, har det samme resultat.


Er dette et Windows-problem? Kan jeg lade Haskell bruge kort vejformat i stedet? (Brug Win10 så åbenbart kan jeg aktivere lange stier via registreringsdatabasen)
Skal Windows Api passere \? header til symlinks overhovedet?


Referencer:



  • MaxPath og betydningen af ​​\? plus deaktivere sti begrænsninger på Win10
    https://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx#maxpath[14]

  • Changelog rapporterer tilsætningen af ​​\? til win32-opkald https://hackage.haskell.org/package/directory-1.3.1.1/changelog[15]


Bedste reference