mirror of
https://github.com/apache/nuttx.git
synced 2026-05-24 16:11:56 +08:00
vfs/stat: Make the flag defintion more confirm POSIX standard
specified here: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_stat.h.html Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
This commit is contained in:
committed by
Abdelatif Guettouche
parent
1a523e5519
commit
91ed14c631
+36
-28
@@ -63,38 +63,46 @@
|
||||
#define S_IRUSR (1 << 8)
|
||||
#define S_IRWXU (7 << 6)
|
||||
|
||||
#define S_ISVTX 0 /* "Sticky" bit (not used) */
|
||||
#define S_ISGID 0 /* Set group ID bit (not used)*/
|
||||
#define S_ISUID 0 /* Set UID bit (not used) */
|
||||
#define S_ISVTX (1 << 9) /* "Sticky" bit (not used) */
|
||||
#define S_ISGID (1 << 10) /* Set group ID bit (not used)*/
|
||||
#define S_ISUID (1 << 11) /* Set UID bit (not used) */
|
||||
|
||||
#define S_IFIFO 0 /* Bits 11-14: File type bits (not all used) */
|
||||
#define S_IFCHR (1 << 11)
|
||||
#define S_IFDIR (2 << 11)
|
||||
#define S_IFBLK (3 << 11)
|
||||
#define S_IFREG (4 << 11)
|
||||
#define S_IFMQ (5 << 11)
|
||||
#define S_IFSEM (6 << 11)
|
||||
#define S_IFSHM (7 << 11)
|
||||
#define S_IFSOCK (8 << 11)
|
||||
#define S_IFMTD (9 << 11)
|
||||
#define s_IFTGT (15 << 11) /* May be the target of a symbolic link */
|
||||
|
||||
#define S_IFLNK (1 << 15) /* Bit 15: Symbolic link */
|
||||
#define S_IFMT (31 << 11) /* Bits 11-15: Full file type */
|
||||
#define S_IFIFO (1 << 12) /* Bits 12-15: File type bits (not all used) */
|
||||
#define S_IFCHR (2 << 12)
|
||||
#define S_IFSEM (3 << 12)
|
||||
#define S_IFDIR (4 << 12)
|
||||
#define S_IFMQ (5 << 12)
|
||||
#define S_IFBLK (6 << 12)
|
||||
#define S_IFSHM (7 << 12)
|
||||
#define S_IFREG (8 << 12)
|
||||
#define S_IFMTD (9 << 12)
|
||||
#define S_IFLNK (10 << 12)
|
||||
#define S_IFSOCK (12 << 12)
|
||||
#define S_IFMT (15 << 12)
|
||||
|
||||
/* File type macros that operate on an instance of mode_t */
|
||||
|
||||
#define S_ISFIFO(m) (0)
|
||||
#define S_ISCHR(m) (((m) & s_IFTGT) == S_IFCHR)
|
||||
#define S_ISDIR(m) (((m) & s_IFTGT) == S_IFDIR)
|
||||
#define S_ISBLK(m) (((m) & s_IFTGT) == S_IFBLK)
|
||||
#define S_ISREG(m) (((m) & s_IFTGT) == S_IFREG)
|
||||
#define S_ISMQ(m) (((m) & s_IFTGT) == S_IFMQ)
|
||||
#define S_ISSEM(m) (((m) & s_IFTGT) == S_IFSEM)
|
||||
#define S_ISSHM(m) (((m) & s_IFTGT) == S_IFSHM)
|
||||
#define S_ISSOCK(m) (((m) & s_IFTGT) == S_IFSOCK)
|
||||
#define S_ISMTD(m) (((m) & s_IFTGT) == S_IFMTD)
|
||||
#define S_ISLNK(m) (((m) & S_IFLNK) != 0)
|
||||
#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
|
||||
#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
|
||||
#define S_ISSEM(m) (((m) & S_IFMT) == S_IFSEM)
|
||||
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
|
||||
#define S_ISMQ(m) (((m) & S_IFMT) == S_IFMQ)
|
||||
#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
|
||||
#define S_ISSHM(m) (((m) & S_IFMT) == S_IFSHM)
|
||||
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
|
||||
#define S_ISMTD(m) (((m) & S_IFMT) == S_IFMTD)
|
||||
#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
|
||||
#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
|
||||
|
||||
/* These are from POSIX.1b. If the objects are not implemented using separate
|
||||
* distinct file types, the macros always will evaluate to zero. Unlike the
|
||||
* other S_* macros the following three take a pointer to a `struct stat'
|
||||
* object as the argument.
|
||||
*/
|
||||
|
||||
#define S_TYPEISSEM(buf) S_ISSEM((buf)->st_mode)
|
||||
#define S_TYPEISMQ(buf) S_ISMQ((buf)->st_mode)
|
||||
#define S_TYPEISSHM(buf) S_ISSHM((buf)->st_mode)
|
||||
|
||||
/* The following macros are required by POSIX to acheive backward
|
||||
* compatibility with earlier versions of struct stat.
|
||||
|
||||
Reference in New Issue
Block a user