CHFLAGS(2) | System Calls Manual | CHFLAGS(2) |
chflags
,
chflagsat
, fchflags
—
set file flags
#include
<sys/stat.h>
int
chflags
(const
char *path, unsigned int
flags);
int
fchflags
(int
fd, unsigned int
flags);
#include
<sys/stat.h>
#include <fcntl.h>
int
chflagsat
(int
fd, const char
*path, unsigned int
flags, int
atflags);
The file whose name is given by path or referenced by the descriptor fd has its flags changed to flags.
The flags are the bitwise OR of zero or more of the following values:
UF_NODUMP
UF_IMMUTABLE
UF_APPEND
SF_ARCHIVED
SF_IMMUTABLE
SF_APPEND
The UF_IMMUTABLE
and
UF_APPEND
flags may be set or unset by either the
owner of a file or the superuser.
The SF_ARCHIVED
,
SF_IMMUTABLE
and SF_APPEND
flags may only be set or unset by the superuser. They 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.)
The
chflagsat
()
function is equivalent to
chflags
()
except in the case where path specifies a relative
path. In this case the file to be changed is determined relative to the
directory associated with the file descriptor fd
instead of the current working directory.
If
chflagsat
()
is passed the special value AT_FDCWD
(defined in
<fcntl.h>
) in the
fd parameter, the current working directory is used.
If atflags is also zero, the behavior is identical to
a call to
chflags
().
The atflags argument is the bitwise OR of zero or more of the following values:
AT_SYMLINK_NOFOLLOW
The
fchflags
()
function is equivalent to
chflags
()
except that the file whose flags are changed is specified by the file
descriptor fd.
Upon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error.
chflags
() will fail if:
ENOTDIR
]ENAMETOOLONG
]NAME_MAX
characters, or an entire pathname (including the terminating NUL) exceeded
PATH_MAX
bytes.ENOENT
]EACCES
]ELOOP
]EPERM
]EOPNOTSUPP
]EROFS
]EFAULT
]EIO
]EINVAL
]EINVAL
]fchflags
() will fail if:
EBADF
]EINVAL
]EINVAL
]EINVAL
]EPERM
]EOPNOTSUPP
]EROFS
]EIO
]The chflags
() and
fchflags
() functions first appeared in
4.4BSD. The chflagsat
()
function first appeared in FreeBSD 10.0. It was
added to OpenBSD in OpenBSD
5.7.
March 25, 2019 | OpenBSD-6.5 |