| PATHCONF(2) | System Calls Manual | PATHCONF(2) |
pathconf,
pathconfat, fpathconf
— get configurable pathname variables
#include
<unistd.h>
long
pathconf(const
char *path, int
name);
long
fpathconf(int
fd, int name);
#include
<fcntl.h>
long
pathconfat(int
fd, const char
*path, int name,
int flag);
The
pathconf(),
pathconfat(), 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 include
file <unistd.h>.
The available values are as follows:
_PC_LINK_MAX_PC_MAX_CANON_PC_MAX_INPUT_PC_NAME_MAX_PC_PATH_MAX_PC_PIPE_BUF_PC_CHOWN_RESTRICTED_PC_NO_TRUNCNAME_MAX} will result in an
[ENAMETOOLONG] error; otherwise, such components
will be truncated to {NAME_MAX}.
IEEE Std 1003.1-2001 (“POSIX.1”)
requires the error in all cases, but this behavior was optional in prior
editions of the standard, and some non-POSIX-compliant file systems do not
support this behavior._PC_VDISABLE_PC_2_SYMLINKS_PC_2_SYMLINKS is unspecified for non-directory
files._PC_ALLOC_SIZE_MIN_PC_ASYNC_IO_PC_FILESIZEBITS_PC_PRIO_IO_PC_REC_INCR_XFER_SIZE_PC_REC_MAX_XFER_SIZE_PC_REC_MIN_XFER_SIZE_PC_REC_XFER_ALIGN_PC_SYMLINK_MAX_PC_SYNC_IO_PC_TIMESTAMP_RESOLUTIONThe
pathconfat()
function is equivalent to pathconf() except in the
case where path specifies a relative path. In this
case the file to be changed is determined relative to the directory
associated with the file descriptor fd instead of the
current working directory.
If
pathconfat()
is passed the special value AT_FDCWD (defined in
<fcntl.h>) in the
fd parameter, the current working directory is used.
If flag is also zero, the behavior is identical to a
call to pathconf().
The flag argument is the bitwise OR of zero or more of the following values:
AT_SYMLINK_NOFOLLOWIf the call to pathconf(),
pathconfat(), 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.
If any of the following conditions occur, the
pathconf(), pathconfat(),
and fpathconf() functions shall return -1 and set
errno to the corresponding value.
EINVAL]EINVAL]EIO]pathconf() and
pathconfat() will fail if:
ENOTDIR]ENAMETOOLONG]NAME_MAX
characters (but see _PC_NO_TRUNC above), or an
entire pathname (including the terminating NUL) exceeded
PATH_MAX bytes.ENOENT]EACCES]ELOOP]EFAULT]Additionally, the pathconfat() function
will fail if:
EINVAL]AT_SYMLINK_NOFOLLOW.EBADF]AT_FDCWD nor a valid file descriptor.ENOTDIR]EACCES]fpathconf() will fail if:
EBADF]The pathconf() and
fpathconf() functions conform to
IEEE Std 1003.1-2008 (“POSIX.1”).
The pathconf() and
fpathconf() functions first appeared in
4.4BSD. The pathconfat()
function first appeared in OpenBSD 7.6.
| May 18, 2024 | openbsd |