FpChown

Change owner of file

Declaration

Source position: bunxh.inc line 35

  function FpChown(path: pChar; owner: TUid; group: TGid) : cint;
  function FpChown(const path: RawByteString; owner: TUid; group: TGid)
                   : cint;

Description

fpChown sets the User ID and Group ID of the file in Path to Owner,Group.

The function returns zero if the call was successful, a nonzero return value indicates an error.

Errors

The following error codes are returned:

sys_eperm
The effective UID doesn't match the ownership of the file, and is not zero. Owner or group were not specified correctly.
sys_eaccess
One of the directories in Path has no search (=execute) permission.
sys_enoent
A directory entry in Path does not exist or is a symbolic link pointing to a non-existent directory.
sys_enomem
Insufficient kernel memory.
sys_erofs
The file is on a read-only file system.
sys_eloop
Path has a reference to a circular symbolic link, i.e. a symbolic link, whose expansion points to itself.

See also

Name Description
fpAccess Check file access
fpChmod Change file permission bits

Example

Program Example24;
{ Program to demonstrate the Chown function. }
Uses BaseUnix;
Var UID : TUid;
    GID : TGid;
    F : Text;
begin
  Writeln ('This will only work if you are root.');
  Write ('Enter a UID : ');readln(UID);
  Write ('Enter a GID : ');readln(GID);
  Assign (f,'test.txt');
  Rewrite (f);
  Writeln (f,'The owner of this file should become : ');
  Writeln (f,'UID : ',UID);
  Writeln (f,'GID : ',GID);
  Close (F);
  if fpChown ('test.txt',UID,GID)<>0 then
    if fpgeterrno=ESysEPERM then
      Writeln ('You are not root !')
    else
      Writeln ('Chmod failed with exit code : ',fpgeterrno)
  else
    Writeln ('Changed owner successfully !');
end.