execline
Software
skarnet.org

# The `posix-umask` program

`posix-umask` changes its file mode creation mask, then executes a program.

## Interface

         posix-umask [ -S ] [ mask ] [ prog... ]

When called with no argument, `posix-umask` prints the value of the file mode creation mask of the invoking process, then exits 0.

When called with a mask argument, `posix-umask` changes its file mode creation mask; then, if prog... is not empty, it execs into it.

`posix-umask` interprets mask as specified by the POSIX specification for a `umask` external utility.

## Notes

- When execline has been configured with the `--enable-pedantic-posix` option, the `umask` command is a symbolic link to it. So scripts calling `umask` will use `posix-umask`. When this configuration option has not been given, `umask` is a symbolic link to execline-umask.
- `posix-umask` fully conforms to the POSIX specification. When prog... is not empty, the behaviour of a `umask` utility is not specified by POSIX, so `posix-umask` extends the spec to be actually useful and usable in an execline program with the same interface as the regular execline umask command.
- Nobody ever executes or needs the external version (i.e. not a shell builtin) of the POSIX `umask` command. Compared to execline's regular `umask` binary, execline-umask, `posix-umask` is uselessly bloated and slow. The only reason it exists is that some distributions refuse to package execline correctly unless it is strictly POSIX-compliant; the `--enable-pedantic-posix` configure option is there to satisfy their requirements.