FreeBSD Manual Pages
PATHCONF(2) System Calls Manual PATHCONF(2) NAME pathconf, lpathconf, fpathconf -- get configurable pathname variables LIBRARY Standard C Library (libc, -lc) SYNOPSIS #include <unistd.h> long pathconf(const char *path, int name); long lpathconf(const char *path, int name); long fpathconf(int fd, int name); DESCRIPTION The pathconf(), lpathconf() and fpathconf() system calls provide a method for applications to determine the current value of a config- urable system limit or option variable associated with a pathname or file descriptor. For pathconf() and lpathconf(), the path argument is the name of a file or directory. For fpathconf(), the fd argument is an open file de- scriptor. The name argument specifies the system variable to be queried. Symbolic constants for each name value are found in the in- clude file <unistd.h>. The lpathconf() system call is like pathconf() except in the case where the named file is a symbolic link, in which case lpathconf() returns information about the link, while pathconf() returns information about the file the link references. 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 avail- able in a terminal input queue. _PC_NAME_MAX The maximum number of bytes in a file name. _PC_PATH_MAX The maximum number of bytes in a pathname. _PC_PIPE_BUF The maximum number of bytes which will be written atomically to a pipe. _PC_CHOWN_RESTRICTED Return 1 if appropriate privilege is required for the chown(2) system call, otherwise 0. IEEE Std 1003.1-2001 ("POSIX.1") re- quires appropriate privilege in all cases, but this behavior was optional in prior editions of the standard. _PC_NO_TRUNC Return greater than zero if attempts to use pathname components longer than {NAME_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 sup- port this behavior. _PC_VDISABLE Returns the terminal character disabling value. _PC_ASYNC_IO Return 1 if asynchronous I/O is supported, otherwise 0. _PC_PRIO_IO Returns 1 if prioritised I/O is supported for this file, other- wise 0. _PC_SYNC_IO Returns 1 if synchronised I/O is supported for this file, oth- erwise 0. _PC_ALLOC_SIZE_MIN Minimum number of bytes of storage allocated for any portion of a file. _PC_FILESIZEBITS Number of bits needed to represent the maximum file size. _PC_REC_INCR_XFER_SIZE Recommended increment for file transfer sizes between _PC_REC_MIN_XFER_SIZE and _PC_REC_MAX_XFER_SIZE. _PC_REC_MAX_XFER_SIZE Maximum recommended file transfer size. _PC_REC_MIN_XFER_SIZE Minimum recommended file transfer size. _PC_REC_XFER_ALIGN Recommended file transfer buffer alignment. _PC_SYMLINK_MAX Maximum number of bytes in a symbolic link. _PC_ACL_EXTENDED Returns 1 if an Access Control List (ACL) can be set on the specified file, otherwise 0. _PC_ACL_NFS4 Returns 1 if an NFSv4 ACLs can be set on the specified file, otherwise 0. _PC_ACL_PATH_MAX Maximum number of ACL entries per file. _PC_CAP_PRESENT Returns 1 if a capability state can be set on the specified file, otherwise 0. _PC_INF_PRESENT Returns 1 if an information label can be set on the specified file, otherwise 0. _PC_MAC_PRESENT Returns 1 if a Mandatory Access Control (MAC) label can be set on the specified file, otherwise 0. _PC_MIN_HOLE_SIZE If a file system supports the reporting of holes (see lseek(2)), pathconf() and fpathconf() return a positive number that represents the minimum hole size returned in bytes. The offsets of holes returned will be aligned to this same value. A special value of 1 is returned if the file system does not specify the minimum hole size but still reports holes. _PC_DEALLOC_PRESENT Return 1 if a file system supports hole-punching (see fspacectl(2)), otherwise 0. _PC_NAMEDATTR_ENABLED Return 1 if named attributes are enabled for the file system, otherwise 0. _PC_HAS_NAMEDATTR Return 1 if one or more named attributes exist for the file, otherwise 0. _PC_HAS_HIDDENSYSTEM Return 1 if both UF_HIDDEN and UF_SYSTEM flags can be set by chflags(2), otherwise 0. _PC_CLONE_BLKSIZE Returns the block size required for block cloning via copy_file_range(2) for a file system if block cloning is sup- ported, otherwise 0. RETURN VALUES If the call to pathconf() or fpathconf() is not successful, -1 is re- turned 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 vari- able value is returned. ERRORS If any of the following conditions occur, the pathconf() and fpathconf() system calls shall return -1 and set errno to the corre- sponding value. [EINVAL] The value of the name argument is invalid. [EINVAL] The implementation does not support an association of the variable name with the associated file. The pathconf() system call will fail if: [ENOTDIR] A component of the path prefix is not a directory. [ENAMETOOLONG] A component of a pathname exceeded {NAME_MAX} char- acters (but see _PC_NO_TRUNC above), or an entire path name exceeded {PATH_MAX} characters. [ENOENT] The named file does not exist. [EACCES] Search permission is denied for a component of the path prefix. [ELOOP] Too many symbolic links were encountered in trans- lating the pathname. [EIO] An I/O error occurred while reading from or writing to the file system. [EINTEGRITY] Corrupted data was detected while reading from the file system. The fpathconf() system call will fail if: [EBADF] The fd argument is not a valid open file descriptor. [EIO] An I/O error occurred while reading from or writing to the file system. [EINTEGRITY] Corrupted data was detected while reading from the file system. SEE ALSO chflags(2), copy_file_range(2), lseek(2), sysctl(3) HISTORY The pathconf() and fpathconf() system calls first appeared in 4.4BSD. The lpathconf() system call first appeared in FreeBSD 8.0. FreeBSD 15.0 August 6, 2025 PATHCONF(2)
NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | SEE ALSO | HISTORY
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=pathconf&sektion=2&manpath=FreeBSD+15.0-RELEASE+and+Ports>
