# fpathconf

## NAME



           fpathconf, pathconf - get configuration values for files
    


## LIBRARY



           Standard C library (_libc_ , _-lc_)
    


## SYNOPSIS



           **#include <unistd.h>**
    
           **long fpathconf(int** _fd_**, int** _name_**);**
           **long pathconf(const char ***_path_**, int** _name_**);**
    


## DESCRIPTION



           **fpathconf**() gets a value for the configuration option _name_ for the
           open file descriptor _fd_.
    
           **pathconf**() gets a value for configuration option _name_ for the
           filename _path_.
    
           The corresponding macros defined in _< unistd.h>_ are minimum values;
           if an application wants to take advantage of values which may
           change, a call to **fpathconf**() or **pathconf**() can be made, which may
           yield more liberal results.
    
           Setting _name_ equal to one of the following constants returns the
           following configuration options:
    
           **_PC_LINK_MAX**
                  The maximum number of links to the file.  If _fd_ or _path_
                  refer to a directory, then the value applies to the whole
                  directory.  The corresponding macro is **_POSIX_LINK_MAX**.
    
           **_PC_MAX_CANON**
                  The maximum length of a formatted input line, where _fd_ or
                  _path_ must refer to a terminal.  The corresponding macro is
                  **_POSIX_MAX_CANON**.
    
           **_PC_MAX_INPUT**
                  The maximum length of an input line, where _fd_ or _path_ must
                  refer to a terminal.  The corresponding macro is
                  **_POSIX_MAX_INPUT**.
    
           **_PC_NAME_MAX**
                  The maximum length of a filename in the directory _path_ or
                  _fd_ that the process is allowed to create.  The
                  corresponding macro is **_POSIX_NAME_MAX**.
    
           **_PC_PATH_MAX**
                  The maximum length of a relative pathname when _path_ or _fd_
                  is the current working directory.  The corresponding macro
                  is **_POSIX_PATH_MAX**.
    
           **_PC_PIPE_BUF**
                  The maximum number of bytes that can be written atomically
                  to a pipe of FIFO.  For **fpathconf**(), _fd_ should refer to a
                  pipe or FIFO.  For **fpathconf**(), _path_ should refer to a FIFO
                  or a directory; in the latter case, the returned value
                  corresponds to FIFOs created in that directory.  The
                  corresponding macro is **_POSIX_PIPE_BUF**.
    
           **_PC_CHOWN_RESTRICTED**
                  This returns a positive value if the use of chown(2) and
                  fchown(2) for changing a file's user ID is restricted to a
                  process with appropriate privileges, and changing a file's
                  group ID to a value other than the process's effective
                  group ID or one of its supplementary group IDs is
                  restricted to a process with appropriate privileges.
                  According to POSIX.1, this variable shall always be defined
                  with a value other than -1.  The corresponding macro is
                  **_POSIX_CHOWN_RESTRICTED**.
    
                  If _fd_ or _path_ refers to a directory, then the return value
                  applies to all files in that directory.
    
           **_PC_NO_TRUNC**
                  This returns nonzero if accessing filenames longer than
                  **_POSIX_NAME_MAX** generates an error.  The corresponding
                  macro is **_POSIX_NO_TRUNC**.
    
           **_PC_VDISABLE**
                  This returns nonzero if special character processing can be
                  disabled, where _fd_ or _path_ must refer to a terminal.
    


## RETURN VALUE



           The return value of these functions is one of the following:
    
           •  On error, -1 is returned and _errno_ is set to indicate the error
              (for example, **EINVAL** , indicating that _name_ is invalid).
    
           •  If _name_ corresponds to a maximum or minimum limit, and that
              limit is indeterminate, -1 is returned and _errno_ is not
              changed.  (To distinguish an indeterminate limit from an error,
              set _errno_ to zero before the call, and then check whether _errno_
              is nonzero when -1 is returned.)
    
           •  If _name_ corresponds to an option, a positive value is returned
              if the option is supported, and -1 is returned if the option is
              not supported.
    
           •  Otherwise, the current value of the option or limit is
              returned.  This value will not be more restrictive than the
              corresponding value that was described to the application in
              _< unistd.h>_ or _< limits.h>_ when the application was compiled.
    


## ERRORS



           **EACCES**(**pathconf**()) Search permission is denied for one of the
                  directories in the path prefix of _path_.
    
           **EBADF**(**fpathconf**()) _fd_ is not a valid file descriptor.
    
           **EINVAL** _name_ is invalid.
    
           **EINVAL** The implementation does not support an association of _name_
                  with the specified file.
    
           **ELOOP**(**pathconf**()) Too many symbolic links were encountered while
                  resolving _path_.
    
           **ENAMETOOLONG**
                  (**pathconf**()) _path_ is too long.
    
           **ENOENT**(**pathconf**()) A component of _path_ does not exist, or _path_ is
                  an empty string.
    
           **ENOTDIR**
                  (**pathconf**()) A component used as a directory in _path_ is not
                  in fact a directory.
    


## ATTRIBUTES



           For an explanation of the terms used in this section, see
           attributes(7).
           ┌──────────────────────────────────────┬───────────────┬─────────┐
           │ **Interface** │ **Attribute** │ **Value** │
           ├──────────────────────────────────────┼───────────────┼─────────┤
           │ **fpathconf**(), **pathconf**()              │ Thread safety │ MT-Safe │
           └──────────────────────────────────────┴───────────────┴─────────┘
    


## STANDARDS



           POSIX.1-2008.
    


## NOTES



           Files with name lengths longer than the value returned for _name_
           equal to **_PC_NAME_MAX** may exist in the given directory.
    
           Some returned values may be huge; they are not suitable for
           allocating memory.
    


* * *