FpLink function
Create a hard link to a file.
Declaration
function FpLink(existing: PAnsiChar; newone: PAnsiChar): cintDescription
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
-
ExistingandNewOneare not on the same file system. - sys_eperm
- The file system containing
ExistingandNewOnedoesn't support linking files. - sys_eaccess
- Write access for the directory containing
NewOneis disallowed, or one of the directories inExistingorNewOnehas no search (=execute) permission. - sys_enoent
- A directory entry in
ExistingorNewOnedoes not exist or is a symbolic link pointing to a non-existent directory. - sys_enotdir
- A directory entry in
ExistingorNewOneis nor a directory. - sys_enomem
- Insufficient kernel memory.
- sys_erofs
- The files are on a read-only file system.
- sys_eexist
-
NewOnealready exists. - sys_emlink
-
Existinghas reached maximal link count. - sys_eloop
-
existingorNewOnehas a reference to a circular symbolic link, i.e. a symbolic link, whose expansion points to itself. - sys_enospc
- The device containing
NewOnehas no room for another entry. - sys_eperm
-
Existingpoints to . or .. of a directory.
See also
Example: ex21
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.An experiment, built from development snapshots. Not the official Free Pascal or Lazarus documentation.
