unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (OpenBSD-5.7)
Page:
Section:
Apropos / Subsearch:
optional field

CHFLAGS(2)                  BSD System Calls Manual                 CHFLAGS(2)

NAME
     chflags, chflagsat, fchflags -- set file flags

SYNOPSIS
     #include <&lt;sys/stat.h>&gt;

     int
     chflags(const char *path, unsigned int flags);

     int
     fchflags(int fd, unsigned int flags);

     #include <&lt;sys/stat.h>&gt;
     #include <&lt;fcntl.h>&gt;

     int
     chflagsat(int fd, const char *path, unsigned int flags, int atflags);

DESCRIPTION
     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     Do not dump the file.
           UF_IMMUTABLE  The file may not be changed.
           UF_APPEND     The file may only be appended to.
           SF_ARCHIVED   The file may be archived.
           SF_IMMUTABLE  The file may not be changed.
           SF_APPEND     The file may only be appended to.

     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 flag is also zero, the behavior is identical to a call to chflags().

     The flag argument is the bitwise OR of zero or more of the following val-
     ues:

           AT_SYMLINK_NOFOLLOW  If path names a symbolic link, then the flags
                                of the symbolic link are changed.

     The fchflags() function is equivalent to chflags() except that the file
     whose flags are changed is specified by the file descriptor fd.

RETURN VALUES
     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.

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 charac-
                        ters, or an entire pathname (including the terminating
                        NUL) exceeded PATH_MAX bytes.

     [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 translat-
                        ing the pathname.

     [EPERM]            The effective user ID does not match the owner of the
                        file and the effective user ID is not the superuser,
                        or the effective user ID is not the superuser and at
                        least one 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.

     [EINVAL]           The flags value is invalid.

     [EINVAL]           The descriptor references a block or character device
                        and the effective user ID is not the superuser.

     fchflags() will fail if:

     [EBADF]            The descriptor is not valid.

     [EINVAL]           fd refers to a socket, not to a file.

     [EINVAL]           The descriptor references a block or character device
                        and the effective user ID is not the superuser.

     [EINVAL]           The flags value is invalid.

     [EPERM]            The effective user ID does not match the owner of the
                        file and the effective user ID is not the superuser,
                        or the effective user ID is not the superuser and at
                        least one 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 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), init(8)

HISTORY
     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.

BSD                             March 30, 2017                             BSD