phobo's std.file is completely broke!

tide tide at tide.tide
Mon Sep 17 22:58:46 UTC 2018


On Sunday, 16 September 2018 at 22:40:45 UTC, Vladimir Panteleev 
wrote:
> On Sunday, 16 September 2018 at 16:17:21 UTC, tide wrote:
>>> Nothing is "locked behind management". If you feel that some 
>>> issue important to you is stalled, you can create a forum 
>>> thread, or email Walter/Andrei to ask for a resolution.
>>
>> Funny the other guy was saying to create a bugzilla issue.
>
> Do that *first*.

That's already been done.

>>> The path needs to be normalized, which means that \.\ and 
>>> \..\ fragments need to be removed away first. Depending on 
>>> your interpretation of symlinks/junctions/etc., "foo/bar/../" 
>>> might mean something else than "foo/" if "bar" is a reparse 
>>> point.
>>
>> All these issues yet for some reason this function was 
>> included in the lot: 
>> https://dlang.org/phobos/std_path.html#absolutePath
>> [...]
>> This issue exists anyways, you'd only expand the path when it 
>> need to be used. If the file changes within milliseconds, I 
>> don't see that happening often and if it does there's a flaw 
>> in your design that'd happen even if the path didn't have to 
>> be constructed first.
>
> You've missed the point. Complexity breeds bugs and unexpected 
> behavior. The expectation is that D's function to delete a file 
> should do little else than call the OS function.
>
> If *YOU* are OK with the consequences of complexity, implement 
> this in YOUR code, but do not enforce it upon others.

version(Windows)
{
     if(path.length >= MAX_PATH)
     {
         // throw Exception(...) // effectively what happens now

         // do workaround for
     }
}

The complexity would only exist for those that need it. It'd be 
the difference between their code not working and code working. 
I'm sure people would rather their code work than not work in 
this case.

>> So you pass a valid path (selected by a user through a UI) to 
>> rmDir, and it doesn't remove the directory. You think this is 
>> acceptable behavior?
>
> It is absolutely not acceptable behavior. Complain to 
> Microsoft. The OS should not allow users to create or select 
> paths that programs cannot operate on without jumping through 
> crazy hoops.

Not that crazy, you can get the actual absolutePath with one of 
the OS functions. It isn't that difficult of a workaround.


More information about the Digitalmars-d mailing list