UMASK(2)

NAME
umask - set file creation mode mask

SYNOPSIS
#include <sys/stat.h>
mode_t umask (mode_t numask);

DESCRIPTION
The umask routine sets the process's file mode creation mask to numask and returns the previous value of the mask. The 9 low-order access permission bits of numask are used by system calls, including open(2), mkdir(2), and mkfifo(2), to turn off corresponding bits requested in file mode. (See chmod(2)). This clearing allows each user to restrict the default access to his files.

The default mask value is S_IWGRP|S_IWOTH (022, write access for the owner only). Child processes inherit the mask of the calling process.

Because the GNO kernel does not currently implement a mask, the mask value is maintained into child processes through the environment variable UMASK, which is assumed to be a string representing an octal mask value. For shells such as gsh(1) which don't support a umask builtin command, the user's default mask may be controlled by setting the UMASK environment variable.

RETURN VALUES
The previous value of the file mode mask is returned by the call.

ERRORS
The umask function will never return an error condition, however it is possible that the setenv(3) call used in the GNO implementation may fail. To detect this condition, the user must set errno to zero prior to calling umask, and check it's value afterward. Under most circumstances this possible error condition may be ignored; the only side effect of setenv failing in this case will be that the value of numask will not be maintained after an execve(2).

SEE ALSO
chmod(2), mknod(2), open(2)

STANDARDS
The umask function call is expected to conform to IEEE Std 1003.1-1988 (POSIX).