[fpc-pascal] cross os symbolic link handling
Michael Van Canneyt
michael at freepascal.org
Fri Oct 31 18:43:06 CET 2008
On Fri, 31 Oct 2008, Marc Santhoff wrote:
> Hi,
>
> is there any function or set of functions for handling symbolic links
> inside the file system at an os independant level in fpcs libraries?
>
> Unix-like systems have soft symlinks (Linux, FreeBSD), Windows has .lnk
> files upt to XP and AFAIR Windows Vista has some other stuff I don't
> know about yet.
>
> What I'd need would be sth. like:
>
> function IsLink(<filehandle or name>): boolean;
> function GetLinkTarget(<filehandle or name>): <filehandle or name>;
>
> Any help on this topic is welcome ... ;)
Fpc 2.3.1 supports faSymLink in the FindFirst/FindNext series of calls.
If it is included in the attributes, then symbolic links are included as
symbolic links and not as the file/dir they refer to.
This works cross-platform. So you could do something like
function IsLink(AFileName : string): boolean;
Var
Info : TSearchRec;
begin
Result:=FindFirst(AFileName,faSymLink,info)=0;
If Result then
begin
Result:=(info.attr and faSymLink)=faSymLink;
FindClose(info);
end;
end;
Michael.
More information about the fpc-pascal
mailing list