NAME
chflags,
lchflags,
fchflags —
set file flags
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <sys/stat.h>
#include <unistd.h>
int
chflags(
const
char *path,
u_long
flags);
int
lchflags(
const
char *path,
u_long
flags);
int
fchflags(
int
fd,
u_long flags);
DESCRIPTION
The file whose name is given by
path or referenced by the
descriptor
fd has its flags changed to
flags. For
lchflags(), symbolic links
are not traversed and thus their modes may be changed with this call.
The flags specified are formed by
or'ing the following values:
UF_NODUMP
- Do not dump the file.
UF_IMMUTABLE
- The file may not be changed.
UF_APPEND
- The file may only be appended to.
UF_OPAQUE
- The file (if a directory) is opaque for union mounts.
SF_ARCHIVED
- The file is archived.
SF_IMMUTABLE
- The file may not be changed.
SF_APPEND
- The file may only be appended to.
The
UF_NODUMP
,
UF_IMMUTABLE
,
UF_APPEND
, and
UF_OPAQUE
flags
may be set or unset by either the owner of a file or the super-user, except on
block and character devices, where only the super-user may set or unset them.
The
SF_ARCHIVED
,
SF_IMMUTABLE
,
and
SF_APPEND
flags may only be set or unset by the
super-user. These flags may be set at any time, but normally may only be unset
when the system is in single-user mode. (See
init(8) for details.)
RETURN VALUES
Upon successful completion, a value of 0 is returned. Otherwise, -1 is returned
and the global variable
errno is set to indicate the
error.
ERRORS
chflags() will fail if:
-
-
- [
ENOTDIR
]
- A component of the path prefix is not a directory.
-
-
- [
ENAMETOOLONG
]
- A component of a pathname exceeded
{
NAME_MAX
} characters, or an entire path name
exceeded {PATH_MAX
} characters.
-
-
- [
ENOENT
]
- The named file does not exist.
-
-
- [
EACCES
]
- Search permission is denied for a component of the path
prefix.
-
-
- [
ELOOP
]
- Too many symbolic links were encountered in translating the
pathname.
-
-
- [
EPERM
]
- The effective user ID does not match the owner of the file
and the effective user ID is not the super-user, or the effective user ID
is not the super-user and one or more of the super-user-only flags for the
named file would be changed.
-
-
- [
EOPNOTSUPP
]
- The named file resides on a file system that does not
support file flags.
-
-
- [
EROFS
]
- The named file resides on a read-only file system.
-
-
- [
EFAULT
]
- path points outside the process's
allocated address space.
-
-
- [
EIO
]
- An I/O error occurred while reading from or writing to the
file system.
fchflags() will fail if:
-
-
- [
EBADF
]
- The descriptor is not valid.
-
-
- [
EINVAL
]
- fd refers to a socket, not to a
file.
-
-
- [
EPERM
]
- The effective user ID does not match the owner of the file
and the effective user ID is not the super-user, or the effective user ID
is not the super-user and one or more of the super-user-only flags for the
file would be changed.
-
-
- [
EOPNOTSUPP
]
- The file resides on a file system that does not support
file flags.
-
-
- [
EROFS
]
- The file resides on a read-only file system.
-
-
- [
EIO
]
- An I/O error occurred while reading from or writing to the
file system.
SEE ALSO
chflags(1),
stat(2),
stat_flags(3),
init(8),
mount_union(8)
HISTORY
The
chflags() and
fchflags() functions first
appeared in
4.4BSD. The
lchflags()
function first appeared in
NetBSD 1.5.