FpLink
Create a hard link to a file
Declaration
Source position: bunxh.inc line 32
  function FpLink(existing: pChar; newone: pChar) : cint;
  function FpLink(const existing: RawByteString; 
                 const newone: RawByteString) : cint;
Description
fpLink makes NewOne point to the same file as Existing. The two files then have the same inode number. This is known as a 'hard' link. The function returns zero if the call was successful, and returns a non-zero value if the call failed.
Errors
The following error codes are returned:
- sys_exdev
- Existing and NewOne are not on the same file system.
- sys_eperm
- The file system containing Existing and NewOne doesn't support linking files.
- sys_eaccess
- Write access for the directory containing NewOne is disallowed, or one of the directories in Existing or NewOne has no search (=execute) permission.
- sys_enoent
- A directory entry in Existing or NewOne does not exist or is a symbolic link pointing to a non-existent directory.
- sys_enotdir
- A directory entry in Existing or NewOne is nor a directory.
- sys_enomem
- Insufficient kernel memory.
- sys_erofs
- The files are on a read-only file system.
- sys_eexist
- NewOne already exists.
- sys_emlink
- Existing has reached maximal link count.
- sys_eloop
- existing or NewOne has a reference to a circular symbolic link, i.e. a symbolic link, whose expansion points to itself.
- sys_enospc
- The device containing NewOne has no room for another entry.
- sys_eperm
- Existing points to . or .. of a directory.
See also
| Name | Description | 
|---|---|
| fpSymLink | Create a symbolic link | 
| fpUnLink | Unlink (i.e. remove) a file. | 
Example
Program Example21;
{ Program to demonstrate the Link and UnLink functions. }
Uses BaseUnix;
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 fpLink ('test.txt','new.txt')<>0 then
    writeln ('Error when linking !');
  { Removing test.txt still leaves new.txt }
  If fpUnlink ('test.txt')<>0 then
    Writeln ('Error when unlinking !');
  Assign (f,'new.txt');
  Reset (F);
  While not EOF(f) do
    begin
    Readln(F,S);
    Writeln ('> ',s);
    end;
 Close (f);
 { Remove new.txt also }
 If not FPUnlink ('new.txt')<>0 then
   Writeln ('Error when unlinking !');
end.