[Overview][Constants][Types][Procedures and functions][Index] | Reference for unit 'BaseUnix' (#rtl)

# 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

fpChown |  | Change owner of file
fpAccess |  | Check file access

## 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.