xref: /freebsd-13.1/lib/libc/sys/pathconf.2 (revision e42b0964)
1.\" Copyright (c) 1993
2.\"	The Regents of the University of California.  All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\" 3. Neither the name of the University nor the names of its contributors
13.\"    may be used to endorse or promote products derived from this software
14.\"    without specific prior written permission.
15.\"
16.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26.\" SUCH DAMAGE.
27.\"
28.\"	@(#)pathconf.2	8.1 (Berkeley) 6/4/93
29.\" $FreeBSD$
30.\"
31.Dd March 30, 2020
32.Dt PATHCONF 2
33.Os
34.Sh NAME
35.Nm pathconf ,
36.Nm lpathconf ,
37.Nm fpathconf
38.Nd get configurable pathname variables
39.Sh LIBRARY
40.Lb libc
41.Sh SYNOPSIS
42.In unistd.h
43.Ft long
44.Fn pathconf "const char *path" "int name"
45.Ft long
46.Fn lpathconf "const char *path" "int name"
47.Ft long
48.Fn fpathconf "int fd" "int name"
49.Sh DESCRIPTION
50The
51.Fn pathconf ,
52.Fn lpathconf
53and
54.Fn fpathconf
55system calls provide a method for applications to determine the current
56value of a configurable system limit or option variable associated
57with a pathname or file descriptor.
58.Pp
59For
60.Fn pathconf
61and
62.Fn lpathconf ,
63the
64.Fa path
65argument is the name of a file or directory.
66For
67.Fn fpathconf ,
68the
69.Fa fd
70argument is an open file descriptor.
71The
72.Fa name
73argument specifies the system variable to be queried.
74Symbolic constants for each name value are found in the include file
75.Li <unistd.h> .
76.Pp
77The
78.Fn lpathconf
79system call is like
80.Fn pathconf
81except in the case where the named file is a symbolic link,
82in which case
83.Fn lpathconf
84returns information about the link,
85while
86.Fn pathconf
87returns information about the file the link references.
88.Pp
89The available values are as follows:
90.Bl -tag -width 6n
91.It Li _PC_LINK_MAX
92The maximum file link count.
93.It Li _PC_MAX_CANON
94The maximum number of bytes in terminal canonical input line.
95.It Li _PC_MAX_INPUT
96The minimum maximum number of bytes for which space is available in
97a terminal input queue.
98.It Li _PC_NAME_MAX
99The maximum number of bytes in a file name.
100.It Li _PC_PATH_MAX
101The maximum number of bytes in a pathname.
102.It Li _PC_PIPE_BUF
103The maximum number of bytes which will be written atomically to a pipe.
104.It Li _PC_CHOWN_RESTRICTED
105Return 1 if appropriate privilege is required for the
106.Xr chown 2
107system call, otherwise 0.
108.St -p1003.1-2001
109requires appropriate privilege in all cases, but this behavior was optional
110in prior editions of the standard.
111.It Li _PC_NO_TRUNC
112Return greater than zero if attempts to use pathname components longer than
113.Brq Dv NAME_MAX
114will result in an
115.Bq Er ENAMETOOLONG
116error; otherwise, such components will be truncated to
117.Brq Dv NAME_MAX .
118.St -p1003.1-2001
119requires the error in all cases, but this behavior was optional in prior
120editions of the standard, and some
121.No non- Ns Tn POSIX Ns -compliant
122file systems do not support this behavior.
123.It Li _PC_VDISABLE
124Returns the terminal character disabling value.
125.It Li _PC_ASYNC_IO
126Return 1 if asynchronous I/O is supported, otherwise 0.
127.It Li _PC_PRIO_IO
128Returns 1 if prioritised I/O is supported for this file,
129otherwise 0.
130.It Li _PC_SYNC_IO
131Returns 1 if synchronised I/O is supported for this file, otherwise 0.
132.It Li _PC_ALLOC_SIZE_MIN
133Minimum number of bytes of storage allocated for any portion of a file.
134.It Li _PC_FILESIZEBITS
135Number of bits needed to represent the maximum file size.
136.It Li _PC_REC_INCR_XFER_SIZE
137Recommended increment for file transfer sizes between
138.Dv _PC_REC_MIN_XFER_SIZE
139and
140.Dv _PC_REC_MAX_XFER_SIZE .
141.It Li _PC_REC_MAX_XFER_SIZE
142Maximum recommended file transfer size.
143.It Li _PC_REC_MIN_XFER_SIZE
144Minimum recommended file transfer size.
145.It Li _PC_REC_XFER_ALIGN
146Recommended file transfer buffer alignment.
147.It Li _PC_SYMLINK_MAX
148Maximum number of bytes in a symbolic link.
149.It Li _PC_ACL_EXTENDED
150Returns 1 if an Access Control List (ACL) can be set on the specified
151file, otherwise 0.
152.It Li _PC_ACL_NFS4
153Returns 1 if an NFSv4 ACLs can be set on the specified
154file, otherwise 0.
155.It Li _PC_ACL_PATH_MAX
156Maximum number of ACL entries per file.
157.It Li _PC_CAP_PRESENT
158Returns 1 if a capability state can be set on the specified file,
159otherwise 0.
160.It Li _PC_INF_PRESENT
161Returns 1 if an information label can be set on the specified file,
162otherwise 0.
163.It Li _PC_MAC_PRESENT
164Returns 1 if a Mandatory Access Control (MAC) label can be set on the
165specified file, otherwise 0.
166.It Li _PC_MIN_HOLE_SIZE
167If a file system supports the reporting of holes (see
168.Xr lseek 2 ) ,
169.Fn pathconf
170and
171.Fn fpathconf
172return a positive number that represents the minimum hole size returned in
173bytes.
174The offsets of holes returned will be aligned to this same value.
175A special value of 1 is returned if the file system does not specify the minimum
176hole size but still reports holes.
177.El
178.Sh RETURN VALUES
179If the call to
180.Fn pathconf
181or
182.Fn fpathconf
183is not successful, \-1 is returned and
184.Va errno
185is set appropriately.
186Otherwise, if the variable is associated with functionality that does
187not have a limit in the system, \-1 is returned and
188.Va errno
189is not modified.
190Otherwise, the current variable value is returned.
191.Sh ERRORS
192If any of the following conditions occur, the
193.Fn pathconf
194and
195.Fn fpathconf
196system calls shall return -1 and set
197.Va errno
198to the corresponding value.
199.Bl -tag -width Er
200.It Bq Er EINVAL
201The value of the
202.Fa name
203argument is invalid.
204.It Bq Er EINVAL
205The implementation does not support an association of the variable
206name with the associated file.
207.El
208.Pp
209The
210.Fn pathconf
211system call
212will fail if:
213.Bl -tag -width Er
214.It Bq Er ENOTDIR
215A component of the path prefix is not a directory.
216.It Bq Er ENAMETOOLONG
217A component of a pathname exceeded
218.Brq Dv NAME_MAX
219characters (but see
220.Dv _PC_NO_TRUNC
221above),
222or an entire path name exceeded
223.Brq Dv PATH_MAX
224characters.
225.It Bq Er ENOENT
226The named file does not exist.
227.It Bq Er EACCES
228Search permission is denied for a component of the path prefix.
229.It Bq Er ELOOP
230Too many symbolic links were encountered in translating the pathname.
231.It Bq Er EIO
232An I/O error occurred while reading from or writing to the file system.
233.It Bq Er EINTEGRITY
234Corrupted data was detected while reading from the file system.
235.El
236.Pp
237The
238.Fn fpathconf
239system call
240will fail if:
241.Bl -tag -width Er
242.It Bq Er EBADF
243The
244.Fa fd
245argument
246is not a valid open file descriptor.
247.It Bq Er EIO
248An I/O error occurred while reading from or writing to the file system.
249.It Bq Er EINTEGRITY
250Corrupted data was detected while reading from the file system.
251.El
252.Sh SEE ALSO
253.Xr lseek 2 ,
254.Xr sysctl 3
255.Sh HISTORY
256The
257.Fn pathconf
258and
259.Fn fpathconf
260system calls first appeared in
261.Bx 4.4 .
262The
263.Fn lpathconf
264system call first appeared in
265.Fx 8.0 .
266