On Saturday, 15 September 2018 at 10:05:26 UTC, Josphe Brigmo
wrote:
Yes, I did that and it worked for some(most) things it seems
but rmdir, for example, seems to fail.
If the file path is passed verbatim to the OS API, and it still
doesn't work, then the problem is with the OS or the API, not D.
Also, windows 10 does not have this problem
What do you mean by "windows 10"? Do you mean Explorer, the
default file manager?
Some reasons why it might work whereas the API doesn't:
- It's using workarounds, like the \\?\ prefix, or
moving/renaming the object to a shorter name before deleting it.
- It's using a newer API, like WinRT (introduced in Windows 8).
- It's using a secret Microsoft API.
If it did I wouldn't have had this problem and wasted a day of
my life trying to figure out what is going on(I didn't design
my program around having to hack such things, I just assumed
they would work, because, after all, they should, right?).
I, too, spent a LOT of time fighting the Windows filesystem APIs.
See e.g. *
https://dump.thecybershadow.net/d78d9911adc16ec749914b6923759454/longpathdelete.d (that also sets ownership/ACLs via external processes, as the C API is unreasonably complicated).
The problem is 100% due to Windows.
It was one of the big reasons why I moved to Linux for software
development. Such problems do not exist there.