fpReadLink function
Read destination of symbolic link.
Declaration
function fpReadLink(name: PAnsiChar; linkname: PAnsiChar;
maxlen: size_t): cintDescription
FpReadLink returns the file the symbolic link
name is pointing
to. The first form of this function accepts a buffer
linkname of
length
maxlen where the filename will be stored. It returns the
actual number of characters stored in the buffer.
The second form of the function returns simply the name of the file.
Errors
On error, the first form of the function returns -1; the second one returns an empty string. Extended error information is returned by the FpGetErrno function.
- SYS_ENOTDIR
- A part of the path in
Nameis not a directory. - SYS_EINVAL
- maxlen is not positive, or the file is not a symbolic link.
- SYS_ENAMETOOLONG
- A pathname, or a component of a pathname, was too long.
- SYS_ENOENT
- the link
namedoes not exist. - SYS_EACCES
- No permission to search a directory in the path
- SYS_ELOOP
- Too many symbolic links were encountered in translating the pathname.
- SYS_EIO
- An I/O error occurred while reading from the file system.
- SYS_EFAULT
- The buffer is not part of the process's memory space.
- SYS_ENOMEM
- Not enough kernel memory was available.
See also
Example: ex62
Program Example62;
{ Program to demonstrate the ReadLink function. }
Uses BaseUnix,Unix;
Var F : Text;
S : String;
begin
Assign (F,'test.txt');
Rewrite (F);
Writeln (F,'This is written to test.txt');
Close(f);
{ new.txt and test.txt are now the same file }
if fpSymLink ('test.txt','new.txt')<>0 then
writeln ('Error when symlinking !');
S:=fpReadLink('new.txt');
If S='' then
Writeln ('Error reading link !')
Else
Writeln ('Link points to : ',S);
{ Now remove links }
If fpUnlink ('new.txt')<>0 then
Writeln ('Error when unlinking !');
If fpUnlink ('test.txt')<>0 then
Writeln ('Error when unlinking !');
end.An experiment, built from development snapshots. Not the official Free Pascal or Lazarus documentation.
