FPATHCONF(P) POSIX Programmer's Manual FPATHCONF(P)
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 direc-
tory.
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 follow-
ing 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 association of the variable name with the speci-
fied 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 maxi-
mum 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 implementation 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 direc-
tory.
8. If path or fildes refers to a directory, it is unspecified whether an implemen-
tation 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 maxi-
mum 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 implementa-
tion does not support the association of name with the file specified by path, or
if the process did not have appropriate 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 argu-
ment, 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, direc-
tory, or device boundaries.
For example, {NAME_MAX} frequently changes between System V and BSD-based file sys-
tems; 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 permissions are in place.
The value returned for the variable {PATH_MAX} indicates the longest relative path-
name that could be given if the specified 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 direc-
tories 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 guaranteed 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 unrec-
ognized 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, <lim-
its.h>, <unistd.h>, the Shell and Utilities 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, Copyright (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.opengroup.org/unix/online.html .
IEEE/The Open Group 2003 FPATHCONF(P)
Generated by $Id: phpMan.php,v 4.49 2006/02/26 13:18:18 chedong Exp $ Author: Che Dong
On Apache/1.3.37 (Unix) mod_throttle/3.1.2 FrontPage/5.0.2.2635 mod_psoft_traffic/0.2 mod_ssl/2.8.28 OpenSSL/0.9.8b
Under GNU General Public License
2009-01-07 21:39 @38.103.63.55 Crawled by CCBot/1.0 (+http://www.commoncrawl.org/bot.html)