socket/socketpair: Add SOCK_{NONBLOCK,CLOEXEC} support.
[dragonfly.git] / lib / libc / sys / chflags.2
1 .\" Copyright (c) 1989, 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 .\"     @(#)chflags.2   8.3 (Berkeley) 5/2/95
29 .\" $FreeBSD: src/lib/libc/sys/chflags.2,v 1.11.2.7 2001/12/14 18:34:00 ru Exp $
30 .\" $DragonFly: src/lib/libc/sys/chflags.2,v 1.5 2008/11/11 00:55:49 pavalos Exp $
31 .\"
32 .Dd February 13, 2015
33 .Dt CHFLAGS 2
34 .Os
35 .Sh NAME
36 .Nm chflags ,
37 .Nm lchflags ,
38 .Nm fchflags ,
39 .Nm chflagsat
40 .Nd set file flags
41 .Sh LIBRARY
42 .Lb libc
43 .Sh SYNOPSIS
44 .In sys/stat.h
45 .In unistd.h
46 .Ft int
47 .Fn chflags "const char *path"  "u_long flags"
48 .Ft int
49 .Fn lchflags "const char *path" "u_long flags"
50 .Ft int
51 .Fn fchflags "int fd" "u_long flags"
52 .Ft int
53 .Fn chflagsat "int fd" "const char *path" "u_long flags" "int atflag"
54 .Sh DESCRIPTION
55 The file whose name
56 is given by
57 .Fa path
58 or referenced by the descriptor
59 .Fa fd
60 has its flags changed to
61 .Fa flags .
62 .Pp
63 The
64 .Fn lchflags
65 system call is like
66 .Fn chflags
67 except in the case where the named file is a symbolic link,
68 in which case
69 .Fn lchflags
70 will change the flags of the link itself,
71 rather than the file it points to.
72 .Pp
73 The
74 .Fn chflagsat
75 is equivalent to either
76 .Fn chflags
77 or
78 .Fn lchflags
79 depending on the
80 .Fa atflag
81 except in the case where
82 .Fa path
83 specifies a relative path.
84 In this case the file to be changed is determined relative to the directory
85 associated with the file descriptor
86 .Fa fd
87 instead of the current working directory.
88 The values for the
89 .Fa atflag
90 are constructed by a bitwise-inclusive OR of flags from the following list,
91 defined in
92 .In fcntl.h :
93 .Bl -tag -width indent
94 .It Dv AT_SYMLINK_NOFOLLOW
95 If
96 .Fa path
97 names a symbolic link, then the flags of the symbolic link are changed.
98 .El
99 .Pp
100 If
101 .Fn chflagsat
102 is passed the special value
103 .Dv AT_FDCWD
104 in the
105 .Fa fd
106 parameter, the current working directory is used.
107 If also
108 .Fa atflag
109 is zero, the behavior is identical to a call to
110 .Fn chflags .
111 .Pp
112 The flags specified are formed by
113 .Em or Ns 'ing
114 the following values
115 .Pp
116 .Bl -tag -width "SF_IMMUTABLE" -compact -offset indent
117 .It UF_NODUMP
118 Do not dump the file.
119 .It UF_IMMUTABLE
120 The file may not be changed.
121 .It UF_APPEND
122 The file may only be appended to.
123 .It UF_OPAQUE
124 The directory is opaque when viewed through a union stack.
125 .It UF_NOUNLINK
126 The file may not be renamed or deleted.
127 .It UF_NOHISTORY
128 Do not retain history for file.
129 .It UF_CACHE
130 Enable
131 .Xr swapcache 8
132 data caching.
133 The flag is recursive and need only be set on a top-level directory.
134 .It SF_ARCHIVED
135 The file may be archived.
136 .It SF_IMMUTABLE
137 The file may not be changed.
138 .It SF_APPEND
139 The file may only be appended to.
140 .It SF_NOUNLINK
141 The file may not be renamed or deleted.
142 .It SF_NOHISTORY
143 Do not retain history for file.
144 .It SF_NOCACHE
145 Disable
146 .Xr swapcache 8
147 data caching.
148 The flag is recursive and need only be set on a top-level directory.
149 .El
150 .Pp
151 The
152 .Dq UF_
153 prefixed
154 flags may be set or unset by either the owner of a file or the super-user.
155 .Pp
156 The
157 .Dq SF_
158 prefixed
159 flags may only be set or unset by the super-user.
160 Attempts by the non-super-user to set the super-user only flags
161 are silently ignored.
162 These flags may be set at any time, but normally may only be unset when
163 the system is in single-user mode.
164 (See
165 .Xr init 8
166 for details.)
167 .Sh RETURN VALUES
168 .Rv -std
169 .Sh ERRORS
170 .Fn Chflags
171 will fail if:
172 .Bl -tag -width Er
173 .It Bq Er ENOTDIR
174 A component of the path prefix is not a directory.
175 .It Bq Er ENAMETOOLONG
176 A component of a pathname exceeded 255 characters,
177 or an entire path name exceeded 1023 characters.
178 .It Bq Er ENOENT
179 The named file does not exist.
180 .It Bq Er EACCES
181 Search permission is denied for a component of the path prefix.
182 .It Bq Er ELOOP
183 Too many symbolic links were encountered in translating the pathname.
184 .It Bq Er EPERM
185 The effective user ID does not match the owner of the file and
186 the effective user ID is not the super-user.
187 .It Bq Er EROFS
188 The named file resides on a read-only file system.
189 .It Bq Er EFAULT
190 .Fa Path
191 points outside the process's allocated address space.
192 .It Bq Er EIO
193 An
194 .Tn I/O
195 error occurred while reading from or writing to the file system.
196 .It Bq Er EOPNOTSUPP
197 The underlying file system does not support file flags.
198 .El
199 .Pp
200 .Fn Fchflags
201 will fail if:
202 .Bl -tag -width Er
203 .It Bq Er EBADF
204 The descriptor is not valid.
205 .It Bq Er EINVAL
206 .Fa fd
207 refers to a socket, not to a file.
208 .It Bq Er EPERM
209 The effective user ID does not match the owner of the file and
210 the effective user ID is not the super-user.
211 .It Bq Er EROFS
212 The file resides on a read-only file system.
213 .It Bq Er EIO
214 An
215 .Tn I/O
216 error occurred while reading from or writing to the file system.
217 .It Bq Er EOPNOTSUPP
218 The underlying file system does not support file flags.
219 .El
220 .Sh SEE ALSO
221 .Xr chflags 1 ,
222 .Xr fflagstostr 3 ,
223 .Xr strtofflags 3 ,
224 .Xr init 8 ,
225 .Xr mount_union 8 ,
226 .Xr swapcache 8
227 .Sh HISTORY
228 The
229 .Nm chflags
230 and
231 .Nm fchflags
232 functions first appeared in
233 .Bx 4.4 .