[fpc-pascal] -Fu unit search path and network paths
LacaK
lacak at zoznam.sk
Tue Sep 22 09:26:02 CEST 2020
>>>
>>>>>> are supported in -Fu (unit search path) networks paths? i.e.
>>>>>> -Fu\\server\share -Fu\\server\share\path ?
>>>>> Correction: unit cannot be found only if it is placed in "share
>>>>> root" \\server\share !
>>>>> When is placed in \\server\share\path then it is found.
>>>>>
>>>>> Why?
>>>>
>>>> Possibly Share vs directory. A directory has 4 slashes
>>>> (\\x\y\<something), a share two.
>>>>
>>>> Try \\server\share\.
>>> *Does not works. More confusing is that, when I map \\server\share
>>> to F:\ and I add F:\ to search path it does not work also!
>>> *
>>>
>>> *(if unit is in any subdirectory i.e. F:\something then it works ...
>>> so only root does not work!)*
>>>
>>> *
>>> *
>>>
>> [0.015] Handling option "-Fud:\"
>> [0.015] interpreting option "-Fud:\"
>> [0.015] Path "D:\" not found
>>
>> So the path exist function probably fails on root dirs.
>
> This looks like the infamous wrong implementation of checking of
> directory existence based on reading its attributes (which doesn't
> work for the root directory, because it has no specific entry on the
> file-system and thus also no attributes, at least on DOS-like systems)
> without special handling of the special case of the root directory:
>
> cfileutl.pas, line 361-375 (trunk):
>
> function TCachedDirectory.DirectoryExists(const
> AName:TCmdStr):boolean;
> var
> Attr : Longint;
> begin
> if not TryUseCache then
> begin
> Result:=PathExists(Name+AName,false);
> exit;
> end;
> Attr:=GetItemAttr(AName);
> if Attr<>0 then
> Result:=((Attr and faDirectory)=faDirectory)
> else
> Result:=false;
> end;
>
> I suggest filing a bug report.
>
Reported https://bugs.freepascal.org/view.php?id=37793
If you can add there more details please do it ;-)
-Laco.
More information about the fpc-pascal
mailing list