Bug 17329 – File.remove() has problems with long filenames (>128 bytes)

Status
NEW
Severity
enhancement
Priority
P4
Component
phobos
Product
D
Version
D2
Platform
x86
OS
Windows
Creation time
2017-04-16T13:48:16Z
Last change time
2024-12-01T16:30:07Z
Assigned to
No Owner
Creator
Rainer Koschnick
Moved to GitHub: phobos#10247 →

Comments

Comment #0 by arkay — 2017-04-16T13:48:16Z
This is a rather weird issue that only pops up in a release build: std.file.FileException@D:\Dlang\dmd2\windows\bin\..\..\src\phobos\std\file.d(733): 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234.cbr: The system cannot find the file specified. Filenames up to 128 bytes work fine, anything above it throws this exception. Building in Visual Studio 2017, output is MS-COFF. The debug build works fine.
Comment #1 by b2.temp — 2017-04-17T12:54:59Z
(In reply to Rainer Koschnick from comment #0) > This is a rather weird issue that only pops up in a release build: > > std.file.FileException@D:\Dlang\dmd2\windows\bin\..\..\src\phobos\std\file. > d(733): > 12345678901234567890123456789012345678901234567890123456789012345678901234567 > 89012345678901234567890123456789012345678901234.cbr: The system cannot find > the file specified. > > Filenames up to 128 bytes work fine, anything above it throws this exception. > > Building in Visual Studio 2017, output is MS-COFF. The debug build works > fine. Try void removeFileEx(string filename) { import std.file : remove; return remove("\\?\" ~ filename); } Adding the prefix turns the filename into a fully qualified name and should have for effect to remove the MAX_PATH (260 chars) limitation.
Comment #2 by arkay — 2017-04-18T15:44:13Z
Thanks for the hint, but it doesn't change anything. Error: \\?\0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789.cbz: The system cannot find the file specified. Neither does... Error: .\0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789.cbz: The system cannot find the file specified. Nor using a complete path... Error: D:\_Development_\D\cbc\0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789.cbz: The system cannot find the file specified.
Comment #3 by b2.temp — 2017-04-20T00:17:37Z
I meant fully qualified filename ! \\?\D:\_Development_\D\cbc\...
Comment #4 by arkay — 2017-04-20T01:00:41Z
I tried it with the path as you can see up there!
Comment #5 by robert.schadek — 2024-12-01T16:30:07Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/phobos/issues/10247 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB