/* Void Main's man pages */

{ phpMan } else { main(); }

Command: man perldoc info search(apropos)  


FPATHCONF(3P)                                       POSIX Programmer's Manual                                      FPATHCONF(3P)



PROLOG
       This  manual  page is part of the POSIX Programmer's Manual.  The Linux implementation of this interface may differ (con-
       sult the corresponding Linux manual page for details of Linux behavior), or the  interface  may  not  be  implemented  on
       Linux.

NAME
       fpathconf, pathconf - get configurable pathname variables

SYNOPSIS
       #include <unistd.h>

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


DESCRIPTION
       The  fpathconf()  and pathconf() functions shall determine the current value of a configurable limit or option (variable)
       that is associated with a file or directory.

       For pathconf(), the path argument points to the pathname of a file or directory.

       For fpathconf(), the fildes argument is an open file descriptor.

       The name argument represents the variable to be queried relative to that file or directory. Implementations shall support
       all of the variables listed in the following table and may support others. The variables in the following table come from
       <limits.h> or <unistd.h> and the symbolic constants, defined in <unistd.h>, are the corresponding values used for name.

                                   Variable                    Value of name           Requirements
                                   {FILESIZEBITS}              _PC_FILESIZEBITS        3,4
                                   {LINK_MAX}                  _PC_LINK_MAX            1
                                   {MAX_CANON}                 _PC_MAX_CANON           2
                                   {MAX_INPUT}                 _PC_MAX_INPUT           2
                                   {NAME_MAX}                  _PC_NAME_MAX            3,4
                                   {PATH_MAX}                  _PC_PATH_MAX            4,5
                                   {PIPE_BUF}                  _PC_PIPE_BUF            6
                                   {POSIX_ALLOC_SIZE_MIN}      _PC_ALLOC_SIZE_MIN
                                   {POSIX_REC_INCR_XFER_SIZE}  _PC_REC_INCR_XFER_SIZE
                                   {POSIX_REC_MAX_XFER_SIZE}   _PC_REC_MAX_XFER_SIZE
                                   {POSIX_REC_MIN_XFER_SIZE}   _PC_REC_MIN_XFER_SIZE
                                   {POSIX_REC_XFER_ALIGN}      _PC_REC_XFER_ALIGN
                                   {SYMLINK_MAX}               _PC_SYMLINK_MAX         4,9
                                   _POSIX_CHOWN_RESTRICTED     _PC_CHOWN_RESTRICTED    7
                                   _POSIX_NO_TRUNC             _PC_NO_TRUNC            3,4
                                   _POSIX_VDISABLE             _PC_VDISABLE            2
                                   _POSIX_ASYNC_IO             _PC_ASYNC_IO            8
                                   _POSIX_PRIO_IO              _PC_PRIO_IO             8
                                   _POSIX_SYNC_IO              _PC_SYNC_IO             8

   Requirements
        1. If path or fildes refers to a directory, the value returned shall apply to the directory itself.

        2. If path or fildes does not refer to a terminal file, it is unspecified whether an implementation supports an associa-
           tion of the variable name with the specified file.

        3. If path or fildes refers to a directory, the value returned shall apply to filenames within the directory.

        4. If  path or fildes does not refer to a directory, it is unspecified whether an implementation supports an association
           of the variable name with the specified file.

        5. If path or fildes refers to a directory, the value returned shall be the maximum length of a relative  pathname  when
           the specified directory is the working directory.

        6. If  path  refers  to  a  FIFO,  or  fildes refers to a pipe or FIFO, the value returned shall apply to the referenced
           object. If path or fildes refers to a directory, the value returned shall apply to any FIFO that  exists  or  can  be
           created within the directory. If path or fildes refers to any other type of file, it is unspecified whether an imple-
           mentation supports an association of the variable name with the specified file.

        7. If path or fildes refers to a directory, the value returned shall apply to any files, other  than  directories,  that
           exist or can be created within the directory.

        8. If  path  or fildes refers to a directory, it is unspecified whether an implementation supports an association of the
           variable name with the specified file.

        9. If path or fildes refers to a directory, the value returned shall be the maximum length of the string that a symbolic
           link in that directory can contain.

RETURN VALUE
       If name is an invalid value, both pathconf() and fpathconf() shall return -1 and set errno to indicate the error.

       If the variable corresponding to name has no limit for the path or file descriptor, both pathconf() and fpathconf() shall
       return -1 without changing errno. If the implementation needs to use path to determine the value of name and  the  imple-
       mentation does not support the association of name with the file specified by path, or if the process did not have appro-
       priate privileges to query the file specified by path, or path does not exist, pathconf() shall return -1 and  set  errno
       to indicate the error.

       If  the  implementation  needs  to  use fildes to determine the value of name and the implementation does not support the
       association of name with the file specified by fildes, or if fildes is an  invalid  file  descriptor,  fpathconf()  shall
       return -1 and set errno to indicate the error.

       Otherwise,  pathconf()  or fpathconf() shall return the current variable value for the file or directory without changing
       errno. The value returned shall not be more restrictive than the corresponding value available to the application when it
       was compiled with the implementation's <limits.h> or <unistd.h>.

ERRORS
       The pathconf() function shall fail if:

       EINVAL The value of name is not valid.

       ELOOP  A loop exists in symbolic links encountered during resolution of the path argument.


       The pathconf() function may fail if:

       EACCES Search permission is denied for a component of the path prefix.

       EINVAL The implementation does not support an association of the variable name with the specified file.

       ELOOP  More than {SYMLOOP_MAX} symbolic links were encountered during resolution of the path argument.

       ENAMETOOLONG
              The length of the path argument exceeds {PATH_MAX} or a pathname component is longer than {NAME_MAX}.

       ENAMETOOLONG
              As  a  result  of  encountering  a symbolic link in resolution of the path argument, the length of the substituted
              pathname string exceeded {PATH_MAX}.

       ENOENT A component of path does not name an existing file or path is an empty string.

       ENOTDIR
              A component of the path prefix is not a directory.


       The fpathconf() function shall fail if:

       EINVAL The value of name is not valid.


       The fpathconf() function may fail if:

       EBADF  The fildes argument is not a valid file descriptor.

       EINVAL The implementation does not support an association of the variable name with the specified file.


       The following sections are informative.

EXAMPLES
       None.

APPLICATION USAGE
       None.

RATIONALE
       The pathconf() function was proposed immediately after the sysconf() function when it was realized that some configurable
       values may differ across file system, directory, or device boundaries.

       For  example,  {NAME_MAX}  frequently changes between System V and BSD-based file systems; System V uses a maximum of 14,
       BSD 255.  On an implementation that provides both types of file systems, an application would  be  forced  to  limit  all
       pathname components to 14 bytes, as this would be the value specified in <limits.h> on such a system.

       Therefore, various useful values can be queried on any pathname or file descriptor, assuming that the appropriate permis-
       sions are in place.

       The value returned for the variable {PATH_MAX} indicates the longest relative pathname that could be given if the  speci-
       fied  directory  is the process' current working directory. A process may not always be able to generate a name that long
       and use it if a subdirectory in the pathname crosses into a more restrictive file system.

       The value returned for the variable _POSIX_CHOWN_RESTRICTED also applies to directories that do  not  have  file  systems
       mounted  on  them.  The  value may change when crossing a mount point, so applications that need to know should check for
       each directory. (An even easier check is to try the chown() function and look for an error in case it happens.)

       Unlike the values returned by sysconf(), the pathname-oriented variables are potentially more volatile and are not  guar-
       anteed  to  remain  constant  throughout the process' lifetime. For example, in between two calls to pathconf(), the file
       system in question may have been unmounted and remounted with different characteristics.

       Also note that most of the errors are optional. If one of the variables always has the same value on  an  implementation,
       the  implementation need not look at path or fildes to return that value and is, therefore, not required to detect any of
       the errors except the meaning of [EINVAL] that indicates that the value of name is not valid for that variable.

       If the value of any of the limits is unspecified (logically infinite), they will not be defined  in  <limits.h>  and  the
       pathconf()  and fpathconf() functions return -1 without changing errno. This can be distinguished from the case of giving
       an unrecognized name argument because errno is set to [EINVAL] in this case.

       Since -1 is a valid return value for the pathconf() and fpathconf() functions, applications  should  set  errno  to  zero
       before calling them and check errno only if the return value is -1.

       For  the  case  of  {SYMLINK_MAX},  since  both pathconf() and open() follow symbolic links, there is no way that path or
       fildes could refer to a symbolic link.

FUTURE DIRECTIONS
       None.

SEE ALSO
       confstr(), sysconf(), the Base Definitions volume of IEEE Std 1003.1-2001, <limits.h>, <unistd.h>, the Shell  and  Utili-
       ties volume of IEEE Std 1003.1-2001

COPYRIGHT
       Portions  of  this  text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2003 Edition, Standard for
       Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6,  Copy-
       right (C) 2001-2003 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any
       discrepancy between this version and the original IEEE and The Open Group Standard, the original IEEE and The Open  Group
       Standard   is   the   referee   document.   The   original   Standard   can   be   obtained  online  at  http://www.open-
       group.org/unix/online.html .



IEEE/The Open Group                                           2003                                                 FPATHCONF(3P)

Valid XHTML 1.0!Valid CSS!