PATHCONF(2)

PATHCONF(2) | System Calls Manual | PATHCONF(2)

# NAME

`pathconf`, `fpathconf` —
get configurable pathname variables

# LIBRARY

Standard C Library (libc, -lc)

# SYNOPSIS

`#include <unistd.h>`

long
`pathconf`(const char *path, int name);

long
`fpathconf`(int fd, int name);

# DESCRIPTION

The `pathconf`() and `fpathconf`() functions provide a method for applications to determine the current value of a configurable system limit or option variable associated with a pathname or file descriptor.

For `pathconf`, the path argument is the name of a file or directory. For `fpathconf`, the fd argument is an open file descriptor. The name argument specifies the system variable to be queried. Symbolic constants for each name value are found in the `<unistd.h>` header.

The available values are as follows:

`_PC_LINK_MAX`
  The maximum file link count.
`_PC_MAX_CANON`
  The maximum number of bytes in terminal canonical input line.
`_PC_MAX_INPUT`
  The minimum maximum number of bytes for which space is available in a terminal input queue.
`_PC_NAME_MAX`
  The maximum number of bytes in a filename, not including a terminating null character.
`_PC_PATH_MAX`
  The maximum number of bytes in a pathname, including the terminating null character.
`_PC_PIPE_BUF`
  The maximum number of bytes which will be written atomically to a pipe.
`_PC_CHOWN_RESTRICTED`
  Return 1 if appropriate privileges are required for the chown(2) system call, otherwise 0.
`_PC_NO_TRUNC`
  Return 0 if filenames longer than {`NAME_MAX`} are silently truncated, or non-zero if an error is generated when {`NAME_MAX`} is exceeded.
`_PC_VDISABLE`
  Returns the terminal character disabling value.
`_PC_SYNC_IO`
  Returns 1 if synchronized I/O is supported, otherwise 0.
`_PC_FILESIZEBITS`
  If the maximum size file that could ever exist on the mounted file system is `maxsize`, then the returned value is 2 plus the floor of the base 2 logarithm of `maxsize`.
`_PC_SYMLINK_MAX`
  The maximum number of bytes in a symbolic link.
`_PC_2_SYMLINKS`
  When referring to a directory the system supports the creation of symbolic links within that directory; for nondirectory files, the meaning of `{_PC_2_SYMLINKS}` is undefined.

# RETURN VALUES

If the call to `pathconf` or `fpathconf` is not successful, -1 is returned and errno is set appropriately. Otherwise, if the variable is associated with functionality that does not have a limit in the system, -1 is returned and errno is not modified. Otherwise, the current variable value is returned.

# ERRORS

If any of the following conditions occur, the `pathconf` and `fpathconf` functions shall return -1 and set errno to the corresponding value.

[`EINVAL`]
  The value of the name argument is invalid, or the implementation does not support an association of the variable name with the associated file.

`pathconf`() will fail if:

[`EACCES`]
  Search permission is denied for a component of the path prefix.
[`EIO`]
  An I/O error occurred while reading from or writing to the file system.
[`ELOOP`]
  Too many symbolic links were encountered in translating the pathname.
[`ENAMETOOLONG`]
  A component of a pathname exceeded {`NAME_MAX`} characters, or an entire path name exceeded {`PATH_MAX`} characters.
[`ENOENT`]
  The named file does not exist.
[`ENOTDIR`]
  A component of the path prefix is not a directory.

`fpathconf`() will fail if:

[`EBADF`]
  fd is not a valid open file descriptor.
[`EIO`]
  An I/O error occurred while reading from or writing to the file system.

# SEE ALSO

sysctl(3)

# STANDARDS

The `pathconf`() and `fpathconf`() functions conform to IEEE Std 1003.1-1990 (“POSIX.1”).

# HISTORY

The `pathconf` and `fpathconf` functions first appeared in 4.4BSD.

July 26, 2010 | NetBSD 9.0