mirror of
https://github.com/apache/nuttx.git
synced 2026-05-26 02:36:11 +08:00
Soft links: Fix logic and remove kludge of last commit. Rename inode_dereference() as inode_linktarget() and make global.
This commit is contained in:
+47
-36
@@ -50,51 +50,62 @@
|
||||
/* mode_t bit settings (most of these do not apply to Nuttx). This assumes
|
||||
* that the full size of a mode_t is 16-bits. (However, mode_t must be size
|
||||
* 'int' because it is promoted to size int when passed in varargs).
|
||||
*
|
||||
* LTTT ...U UUGG GOOO
|
||||
*
|
||||
* Bits 0-2: Permissions for others
|
||||
* Bits 3-5: Group permissions
|
||||
* Bits 6-8: Owner permissions
|
||||
* Bits 9-11: Not used
|
||||
* Bits 12-14: File type bits
|
||||
* Bit 15: Symbolic link
|
||||
*/
|
||||
|
||||
#define S_IXOTH 0000001 /* Permissions for others: RWX */
|
||||
#define S_IWOTH 0000002
|
||||
#define S_IROTH 0000004
|
||||
#define S_IRWXO 0000007
|
||||
#define S_IXOTH (1 << 0) /* Bits 0-2: Permissions for others: RWX */
|
||||
#define S_IWOTH (1 << 1)
|
||||
#define S_IROTH (1 << 2)
|
||||
#define S_IRWXO (7 << 0)
|
||||
|
||||
#define S_IXGRP 0000010 /* Group permissions: RWX */
|
||||
#define S_IWGRP 0000020
|
||||
#define S_IRGRP 0000040
|
||||
#define S_IRWXG 0000070
|
||||
#define S_IXGRP (1 << 3) /* Bits 3-5: Group permissions: RWX */
|
||||
#define S_IWGRP (1 << 4)
|
||||
#define S_IRGRP (1 << 5)
|
||||
#define S_IRWXG (7 << 3)
|
||||
|
||||
#define S_IXUSR 0000100 /* Owner permissions: RWX */
|
||||
#define S_IWUSR 0000200
|
||||
#define S_IRUSR 0000400
|
||||
#define S_IRWXU 0000700
|
||||
#define S_IXUSR (1 << 6) /* Bits 6-8: Owner permissions: RWX */
|
||||
#define S_IWUSR (1 << 7)
|
||||
#define S_IRUSR (1 << 8)
|
||||
#define S_IRWXU (7 << 6)
|
||||
|
||||
#define S_ISVTX 0001000 /* "sticky" bit */
|
||||
#define S_ISGID 0002000 /* Set group ID bit */
|
||||
#define S_ISUID 0004000 /* Set UID bit */
|
||||
#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_IFIFO 0010000 /* File type bytes */
|
||||
#define S_IFCHR 0020000
|
||||
#define S_IFDIR 0040000
|
||||
#define S_IFBLK 0060000
|
||||
#define S_IFREG 0100000
|
||||
#define S_IFLNK 0120000
|
||||
#define S_IFSOCK 0140000
|
||||
#define S_IFMQ 0150000
|
||||
#define S_IFSEM 0160000
|
||||
#define S_IFSHM 0170000
|
||||
#define S_IFMT 0170000
|
||||
#define S_IFIFO 0 /* Bits 12-14: File type bits (not all used) */
|
||||
#define S_IFCHR (1 << 12)
|
||||
#define S_IFDIR (2 << 12)
|
||||
#define S_IFBLK (3 << 12)
|
||||
#define S_IFREG (4 << 12)
|
||||
#define S_IFSOCK 0
|
||||
#define S_IFMQ (5 << 12)
|
||||
#define S_IFSEM (6 << 12)
|
||||
#define S_IFSHM (7 << 12)
|
||||
#define s_IFTGT (7 << 12) /* May be the target of a symbolic link */
|
||||
|
||||
#define S_IFLNK (1 << 15) /* Bit 15: Symbolic link */
|
||||
#define S_IFMT (15 << 15) /* Bits 12-15: Full file type */
|
||||
|
||||
/* File type macros that operate on an instance of mode_t */
|
||||
|
||||
#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
|
||||
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
|
||||
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
|
||||
#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
|
||||
#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
|
||||
#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
|
||||
#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
|
||||
#define S_ISMQ(m) (((m) & S_IFMT) == S_IFMQ)
|
||||
#define S_ISSSEM(m) (((m) & S_IFMT) == S_IFSEM)
|
||||
#define S_ISSHM(m) (((m) & S_IFMT) == S_IFSHM)
|
||||
#define S_ISLNK(m) (((m) & S_IFLNK) != 0)
|
||||
#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_ISSOCK(m) (0)
|
||||
#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)
|
||||
|
||||
/****************************************************************************
|
||||
* Type Definitions
|
||||
|
||||
Reference in New Issue
Block a user