Hi, Is there a function in SysUtils or some other place in RTL that I can use to extract the target path of a symlink file? I'm using FindFirst/FindNext. The sr.Attrib and faSymLink is True, but I can't (in a easy way) see how I can actually find out where it points to. I'm thinking x-platform here.
Something like ExtractSymLinkPath(). :) Thinking of other available functions like ExpandUNCFileName() or ExtractFilePath() or ExtractRelativePath() etc.. I have the following code that works, but then I need to wrap it in IFDEF's so it doesn't execute under Windows. I don't want IFDEF's in my code! I'm hoping RTL has something already and just returns a blank string for Windows, just like the faSymLink which means nothing under Windows, yet is available. var info : _stat; ..... fullname := FDirectoryName + e.Name; if lstat(PChar(fullname),info) = 0 then begin e.IsLink := ((sr.Mode and $F000) = $A000); if e.IsLink then begin SetLength(e.LinkTarget, MAX_PATH); // length was 256 r := libc.readlink(PChar(fullname),@(e.LinkTarget[1]), sizeof(e.LinkTarget)); if r > 0 then SetLength(e.LinkTarget, r) else e.LinkTarget := ''; libc.stat(PChar(fullname), info); end; Graeme. _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal