FpChmod

Change file permission bits

Declaration

Source position: bunxh.inc line 34

  function FpChmod(path: pChar; Mode: TMode) : cint;
  function FpChmod(const path: RawByteString; Mode: TMode) : cint;

Description

fpChmod sets the Mode bits of the file in Path to Mode. Mode can be specified by 'or'-ing the following values:

S_ISUID
Set user ID on execution.
S_ISGID
Set Group ID on execution.
S_ISVTX
Set sticky bit.
S_IRUSR
Read by owner.
S_IWUSR
Write by owner.
S_IXUSR
Execute by owner.
S_IRGRP
Read by group.
S_IWGRP
Write by group.
S_IXGRP
Execute by group.
S_IROTH
Read by others.
S_IWOTH
Write by others.
S_IXOTH
Execute by others.
S_IRWXO
Read, write, execute by others.
S_IRWXG
Read, write, execute by groups.
S_IRWXU
Read, write, execute by user.

If the function is successful, zero is returned. 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
fpChown Change owner of file

Example

Program Example23;
{ Program to demonstrate the Chmod function. }
Uses BaseUnix,Unix;
Var F : Text;
begin
  { Create a file }
  Assign (f,'testex21');
  Rewrite (F);
  Writeln (f,'#!/bin/sh');
  Writeln (f,'echo Some text for this file');
  Close (F);
  fpChmod ('testex21',&777);
  { File is now executable  }
  fpexecl ('./testex21',[]);
end.