[Overview][Constants][Types][Procedures and functions][Variables] Reference for unit 'oldlinux' (#rtl)

SymLink

Create a symbolic link

Declaration

Source position: oldlinux.pp line 1390

function SymLink(

  OldPath: PathStr;

  NewPath: PathStr

):Boolean;

Description

SymLinkmakes Newpathpoint to the file in OldPath, which doesn't necessarily exist. The two files DO NOT have the same inode number. This is known as a 'soft' link.

The permissions of the link are irrelevant, as they are not used when following the link. Ownership of the file is only checked in case of removal or renaming of the link.

The function returns Trueif the call was succesfull, Falseif the call failed.

Errors

Errors are returned in LinuxError.

sys_eperm
The filesystem containing oldpath and newpath does not support linking files.
sys_eaccess
Write access for the directory containing Newpathis disallowed, or one of the directories in OldPathor NewPathhas no search (=execute) permission.
sys_enoent
A directory entry in OldPathor NewPathdoes not exist or is a symbolic link pointing to a non-existent directory.
sys_enotdir
A directory entry in OldPathor NewPathis nor a directory.
sys_enomem
Insufficient kernel memory.
sys_erofs
The files are on a read-only filesystem.
sys_eexist
NewPathalready exists.
sys_eloop
OldPathor NewPathhas a reference to a circular symbolic link, i.e. a symbolic link, whose expansion points to itself.
sys_enospc
The device containing NewPathhas no room for another entry.

See also

Link

  

Create a hard link to a file

UnLink

  

Unlink (i.e. remove) a file.

ReadLink

  

Read destination of symbolic link

Example

Program Example22;

{ Program to demonstrate the SymLink and UnLink functions. }

Uses oldlinux;

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 not SymLink ('test.txt','new.txt') then
    writeln ('Error when symlinking !');
  { Removing test.txt still leaves new.txt
    Pointing now to a non-existent file ! }
  If not Unlink ('test.txt') then
    Writeln ('Error when unlinking !');
  Assign (f,'new.txt');
  { This should fail, since the symbolic link
    points to a non-existent file! }
  {$i-}
  Reset (F);
  {$i+}
  If IOResult=0 then
    Writeln ('This shouldn''t happen');
 { Now remove new.txt also }
 If not Unlink ('new.txt') then
   Writeln ('Error when unlinking !');
end.