Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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)

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>

home | help