Bug 23392 – "File does not exist" while the real error is "ENAMETOOLONG (File name too long)"

Status
NEW
Severity
normal
Priority
P3
Component
phobos
Product
D
Version
D2
Platform
x86_64
OS
Linux
Creation time
2022-10-06T14:44:40Z
Last change time
2024-12-01T16:40:29Z
Assigned to
No Owner
Creator
kdevel
Moved to GitHub: phobos#9846 →

Comments

Comment #0 by kdevel — 2022-10-06T14:44:40Z
```fdne-vs-fntl.d module file_does_not_exist__vs__file_name_too_long; import std.stdio; import std.file; version (Posix): string make_long_filename () { immutable char [256] longname = 'X'; // assuming NAME_MAX is 255 return (cast (string) longname).dup (); } void main () { auto fsoname = make_long_filename (); auto de = DirEntry (fsoname); } ``` $ dmd -g fdne-vs-fntl.d $ strace -festat,lstat ./fdne-vs-fntl lstat("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", 0x7fffffffd6d8) = -1 ENAMETOOLONG (File name too long) std.file.FileException@std/file.d(3887): XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX: File does not exist ---------------- ??:? ref @safe std.file.DirEntry std.file.DirEntry.__ctor(immutable(char)[]) [0x4b383d] ./fdne-vs-fntl.d:16 _Dmain [0x4b1130] The lstat call is performed in existsImpl while DirEntry is constructed. Alas, errno is not checked.
Comment #1 by robert.schadek — 2024-12-01T16:40:29Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/phobos/issues/9846 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB