[Overview][Constants][Types][Procedures and functions][Variables][Index] | 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

SymLink makes Newpath point 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 True if the call was succesfull, False if 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 Newpath is disallowed, or one of the directories in OldPath or NewPath has no search (=execute) permission.
sys_enoent
  A directory entry in OldPath or NewPath does not exist or is a symbolic link pointing to a non-existent directory.
sys_enotdir
  A directory entry in OldPath or NewPath is nor a directory.
sys_enomem
  Insufficient kernel memory.
sys_erofs
  The files are on a read-only filesystem.
sys_eexist
  NewPath already exists.
sys_eloop
  OldPath or NewPath has a reference to a circular symbolic link, i.e. a symbolic link, whose expansion points to itself.
sys_enospc
  The device containing NewPath has 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.

Documentation generated on: Feb 26 2014