summaryrefslogtreecommitdiffstats
path: root/man0p/sys_stat.h.0p
diff options
context:
space:
mode:
Diffstat (limited to 'man0p/sys_stat.h.0p')
-rw-r--r--man0p/sys_stat.h.0p355
1 files changed, 355 insertions, 0 deletions
diff --git a/man0p/sys_stat.h.0p b/man0p/sys_stat.h.0p
new file mode 100644
index 000000000..40990938e
--- /dev/null
+++ b/man0p/sys_stat.h.0p
@@ -0,0 +1,355 @@
+.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
+.TH "<sys/stat.h>" P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
+.\" <sys/stat.h>
+.SH NAME
+sys/stat.h \- data returned by the stat() function
+.SH SYNOPSIS
+.LP
+\fB#include <sys/stat.h>\fP
+.SH DESCRIPTION
+.LP
+The \fI<sys/stat.h>\fP header shall define the structure of the data
+returned by the functions \fIfstat\fP(), \fIlstat\fP(), and \fIstat\fP().
+.LP
+The \fBstat\fP structure shall contain at least the following members:
+.sp
+.RS
+.nf
+
+\fBdev_t st_dev \fP Device ID of device containing file. \fB
+ino_t st_ino \fP File serial number. \fB
+mode_t st_mode \fP Mode of file (see below). \fB
+nlink_t st_nlink \fP Number of hard links to the file. \fB
+uid_t st_uid \fP User ID of file. \fB
+gid_t st_gid \fP Group ID of file. \fB
+
+dev_t st_rdev \fP Device ID (if file is character or block special). \fB
+
+off_t st_size \fP For regular files, the file size in bytes. \fB
+ \fP For symbolic links, the length in bytes of the \fB
+ \fP pathname contained in the symbolic link. \fB
+
+ \fP For a shared memory object, the length in bytes. \fB
+
+
+ \fP For a typed memory object, the length in bytes. \fB
+
+ \fP For other file types, the use of this field is \fB
+ \fP unspecified. \fB
+time_t st_atime \fP Time of last access. \fB
+time_t st_mtime \fP Time of last data modification. \fB
+time_t st_ctime \fP Time of last status change. \fB
+
+blksize_t st_blksize\fP A file system-specific preferred I/O block size for \fB
+ \fP this object. In some file system types, this may \fB
+ \fP vary from file to file. \fB
+blkcnt_t st_blocks \fP Number of blocks allocated for this object. \fB
+
+\fP
+.fi
+.RE
+.LP
+The \fIst_ino\fP and \fIst_dev\fP fields taken together uniquely identify
+the file within the system. The \fBblkcnt_t\fP,
+\fBblksize_t\fP, \fBdev_t\fP, \fBino_t\fP, \fBmode_t\fP, \fBnlink_t\fP,
+\fBuid_t\fP, \fBgid_t\fP, \fBoff_t\fP, and
+\fBtime_t\fP types shall be defined as described in \fI<sys/types.h>\fP
+\&. Times
+shall be given in seconds since the Epoch.
+.LP
+Unless otherwise specified, the structure members \fIst_mode\fP, \fIst_ino\fP,
+\fIst_dev\fP, \fIst_uid\fP, \fIst_gid\fP,
+\fIst_atime\fP, \fIst_ctime\fP, and \fIst_mtime\fP shall have meaningful
+values for all file types defined in
+IEEE\ Std\ 1003.1-2001.
+.LP
+For symbolic links, the \fIst_mode\fP member shall contain meaningful
+information, which can be used with the file type macros
+described below, that take a \fImode\fP argument. The \fIst_size\fP
+member shall contain the length, in bytes, of the pathname
+contained in the symbolic link. File mode bits and the contents of
+the remaining members of the \fBstat\fP structure are
+unspecified. The value returned in the \fIst_size\fP field shall be
+the length of the contents of the symbolic link, and shall not
+count a trailing null if one is present.
+.LP
+The following symbolic names for the values of type \fBmode_t\fP shall
+also be defined.
+.LP
+File type:
+.TP 7
+S_IFMT
+Type of file.
+.TP 7
+S_IFBLK
+.RS
+Block special.
+.RE
+.TP 7
+S_IFCHR
+.RS
+Character special.
+.RE
+.TP 7
+S_IFIFO
+.RS
+FIFO special.
+.RE
+.TP 7
+S_IFREG
+.RS
+Regular.
+.RE
+.TP 7
+S_IFDIR
+.RS
+Directory.
+.RE
+.TP 7
+S_IFLNK
+.RS
+Symbolic link.
+.RE
+.TP 7
+S_IFSOCK
+.RS
+Socket.
+.RE
+.sp
+.sp
+.LP
+File mode bits:
+.TP 7
+S_IRWXU
+Read, write, execute/search by owner.
+.TP 7
+S_IRUSR
+.RS
+Read permission, owner.
+.RE
+.TP 7
+S_IWUSR
+.RS
+Write permission, owner.
+.RE
+.TP 7
+S_IXUSR
+.RS
+Execute/search permission, owner.
+.RE
+.sp
+.TP 7
+S_IRWXG
+Read, write, execute/search by group.
+.TP 7
+S_IRGRP
+.RS
+Read permission, group.
+.RE
+.TP 7
+S_IWGRP
+.RS
+Write permission, group.
+.RE
+.TP 7
+S_IXGRP
+.RS
+Execute/search permission, group.
+.RE
+.sp
+.TP 7
+S_IRWXO
+Read, write, execute/search by others.
+.TP 7
+S_IROTH
+.RS
+Read permission, others.
+.RE
+.TP 7
+S_IWOTH
+.RS
+Write permission, others.
+.RE
+.TP 7
+S_IXOTH
+.RS
+Execute/search permission, others.
+.RE
+.sp
+.TP 7
+S_ISUID
+Set-user-ID on execution.
+.TP 7
+S_ISGID
+Set-group-ID on execution.
+.TP 7
+S_ISVTX
+On directories, restricted deletion flag.
+.sp
+.LP
+The bits defined by S_IRUSR, S_IWUSR, S_IXUSR, S_IRGRP, S_IWGRP, S_IXGRP,
+S_IROTH, S_IWOTH, S_IXOTH, S_ISUID, S_ISGID, \ and
+S_ISVTX \ shall be unique.
+.LP
+S_IRWXU is the bitwise-inclusive OR of S_IRUSR, S_IWUSR, and S_IXUSR.
+.LP
+S_IRWXG is the bitwise-inclusive OR of S_IRGRP, S_IWGRP, and S_IXGRP.
+.LP
+S_IRWXO is the bitwise-inclusive OR of S_IROTH, S_IWOTH, and S_IXOTH.
+.LP
+Implementations may OR other implementation-defined bits into S_IRWXU,
+S_IRWXG, and S_IRWXO, but they shall not overlap any of
+the other bits defined in this volume of IEEE\ Std\ 1003.1-2001. The
+\fIfile permission bits\fP are defined to be those
+corresponding to the bitwise-inclusive OR of S_IRWXU, S_IRWXG, and
+S_IRWXO.
+.LP
+The following macros shall be provided to test whether a file is of
+the specified type. The value \fIm\fP supplied to the
+macros is the value of \fIst_mode\fP from a \fBstat\fP structure.
+The macro shall evaluate to a non-zero value if the test is
+true; 0 if the test is false.
+.TP 7
+S_ISBLK(\fIm\fP)
+Test for a block special file.
+.TP 7
+S_ISCHR(\fIm\fP)
+Test for a character special file.
+.TP 7
+S_ISDIR(\fIm\fP)
+Test for a directory.
+.TP 7
+S_ISFIFO(\fIm\fP)
+Test for a pipe or FIFO special file.
+.TP 7
+S_ISREG(\fIm\fP)
+Test for a regular file.
+.TP 7
+S_ISLNK(\fIm\fP)
+Test for a symbolic link.
+.TP 7
+S_ISSOCK(\fIm\fP)
+Test for a socket.
+.sp
+.LP
+The implementation may implement message queues, semaphores, or shared
+memory objects as distinct file types. The following
+macros shall be provided to test whether a file is of the specified
+type. The value of the \fIbuf\fP argument supplied to the
+macros is a pointer to a \fBstat\fP structure. The macro shall evaluate
+to a non-zero value if the specified object is implemented
+as a distinct file type and the specified file type is contained in
+the \fBstat\fP structure referenced by \fIbuf\fP. Otherwise,
+the macro shall evaluate to zero.
+.TP 7
+S_TYPEISMQ(\fIbuf\fP)
+Test for a message queue.
+.TP 7
+S_TYPEISSEM(\fIbuf\fP)
+Test for a semaphore.
+.TP 7
+S_TYPEISSHM(\fIbuf\fP)
+Test for a shared memory object.
+.sp
+.LP
+The implementation may implement typed memory objects as distinct
+file types, and the following macro shall test whether a
+file is of the specified type. The value of the \fIbuf\fP argument
+supplied to the macros is a pointer to a \fBstat\fP structure.
+The macro shall evaluate to a non-zero value if the specified object
+is implemented as a distinct file type and the specified file
+type is contained in the \fBstat\fP structure referenced by \fIbuf\fP.
+Otherwise, the macro shall evaluate to zero.
+.TP 7
+S_TYPEISTMO(\fIbuf\fP)
+Test macro for a typed memory object.
+.sp
+.LP
+The following shall be declared as functions and may also be defined
+as macros. Function prototypes shall be provided.
+.sp
+.RS
+.nf
+
+\fBint chmod(const char *, mode_t);
+int fchmod(int, mode_t);
+int fstat(int, struct stat *);
+int lstat(const char *restrict, struct stat *restrict);
+int mkdir(const char *, mode_t);
+int mkfifo(const char *, mode_t);
+
+int mknod(const char *, mode_t, dev_t);
+
+int stat(const char *restrict, struct stat *restrict);
+mode_t umask(mode_t);
+\fP
+.fi
+.RE
+.LP
+\fIThe following sections are informative.\fP
+.SH APPLICATION USAGE
+.LP
+Use of the macros is recommended for determining the type of a file.
+.SH RATIONALE
+.LP
+A conforming C-language application must include \fI<sys/stat.h>\fP
+for functions that have arguments or return values of
+type \fBmode_t\fP, so that symbolic values for that type can be used.
+An alternative would be to require that these constants are
+also defined by including \fI<sys/types.h>\fP.
+.LP
+The S_ISUID and S_ISGID bits may be cleared on any write, not just
+on \fIopen\fP(), as
+some historical implementations do.
+.LP
+System calls that update the time entry fields in the \fBstat\fP structure
+must be documented by the implementors.
+POSIX-conforming systems should not update the time entry fields for
+functions listed in the System Interfaces volume of
+IEEE\ Std\ 1003.1-2001 unless the standard requires that they do,
+except in the case of documented extensions to the
+standard.
+.LP
+Note that \fIst_dev\fP must be unique within a Local Area Network
+(LAN) in a ``system'' made up of multiple computers' file
+systems connected by a LAN.
+.LP
+Networked implementations of a POSIX-conforming system must guarantee
+that all files visible within the file tree (including
+parts of the tree that may be remotely mounted from other machines
+on the network) on each individual processor are uniquely
+identified by the combination of the \fIst_ino\fP and \fIst_dev\fP
+fields.
+.LP
+The unit for the \fIst_blocks\fP member of the \fBstat\fP structure
+is not defined within IEEE\ Std\ 1003.1-2001. In
+some implementations it is 512 bytes. It may differ on a file system
+basis. There is no correlation between values of the
+\fIst_blocks\fP and \fIst_blksize\fP, and the \fIf_bsize\fP (from
+\fI<sys/statvfs.h>\fP) structure members.
+.LP
+Traditionally, some implementations defined the multiplier for \fIst_blocks\fP
+in
+\fI<sys/param.h>\fP as the symbol DEV_BSIZE.
+.SH FUTURE DIRECTIONS
+.LP
+No new S_IFMT symbolic names for the file type values of \fBmode_t\fP
+will be defined by IEEE\ Std\ 1003.1-2001; if new
+file types are required, they will only be testable through \fIS_ISxx\fP()
+or \fIS_TYPEISxxx\fP() macros instead.
+.SH SEE ALSO
+.LP
+\fI<sys/statvfs.h>\fP , \fI<sys/types.h>\fP , the System Interfaces
+volume of IEEE\ Std\ 1003.1-2001, \fIchmod\fP(), \fIfchmod\fP(), \fIfstat\fP(),
+\fIlstat\fP(), \fImkdir\fP(), \fImkfifo\fP(), \fImknod\fP(), \fIstat\fP(),
+\fIumask\fP()
+.SH COPYRIGHT
+Portions of this text are reprinted and reproduced in electronic form
+from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
+-- Portable Operating System Interface (POSIX), The Open Group Base
+Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of
+Electrical and Electronics Engineers, Inc and The Open Group. In the
+event of any discrepancy between this version and the original IEEE and
+The Open Group Standard, the original IEEE and The Open Group Standard
+is the referee document. The original Standard can be obtained online at
+http://www.opengroup.org/unix/online.html .