Annotation of embedaddon/readline/posixstat.h, revision 1.1.1.2

1.1       misho       1: /* posixstat.h -- Posix stat(2) definitions for systems that
                      2:    don't have them. */
                      3: 
1.1.1.2 ! misho       4: /* Copyright (C) 1987-2019 Free Software Foundation, Inc.
1.1       misho       5: 
                      6:    This file is part of GNU Bash, the Bourne Again SHell.
                      7: 
                      8:    Bash is free software: you can redistribute it and/or modify
                      9:    it under the terms of the GNU General Public License as published by
                     10:    the Free Software Foundation, either version 3 of the License, or
                     11:    (at your option) any later version.
                     12: 
                     13:    Bash is distributed in the hope that it will be useful,
                     14:    but WITHOUT ANY WARRANTY; without even the implied warranty of
                     15:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     16:    GNU General Public License for more details.
                     17: 
                     18:    You should have received a copy of the GNU General Public License
                     19:    along with Bash.  If not, see <http://www.gnu.org/licenses/>.
                     20: */
                     21: 
                     22: /* This file should be included instead of <sys/stat.h>.
                     23:    It relies on the local sys/stat.h to work though. */
                     24: #if !defined (_POSIXSTAT_H_)
                     25: #define _POSIXSTAT_H_
                     26: 
                     27: #include <sys/stat.h>
                     28: 
                     29: #if defined (STAT_MACROS_BROKEN)
                     30: #  undef S_ISBLK
                     31: #  undef S_ISCHR
                     32: #  undef S_ISDIR
                     33: #  undef S_ISFIFO
                     34: #  undef S_ISREG
                     35: #  undef S_ISLNK
                     36: #endif /* STAT_MACROS_BROKEN */
                     37: 
                     38: /* These are guaranteed to work only on isc386 */
                     39: #if !defined (S_IFDIR) && !defined (S_ISDIR)
                     40: #  define S_IFDIR 0040000
                     41: #endif /* !S_IFDIR && !S_ISDIR */
                     42: #if !defined (S_IFMT)
                     43: #  define S_IFMT  0170000
                     44: #endif /* !S_IFMT */
                     45: 
                     46: /* Posix 1003.1 5.6.1.1 <sys/stat.h> file types */
                     47: 
                     48: /* Some Posix-wannabe systems define _S_IF* macros instead of S_IF*, but
                     49:    do not provide the S_IS* macros that Posix requires. */
                     50: 
                     51: #if defined (_S_IFMT) && !defined (S_IFMT)
                     52: #define S_IFMT _S_IFMT
                     53: #endif
                     54: #if defined (_S_IFIFO) && !defined (S_IFIFO)
                     55: #define S_IFIFO _S_IFIFO
                     56: #endif
                     57: #if defined (_S_IFCHR) && !defined (S_IFCHR)
                     58: #define S_IFCHR _S_IFCHR
                     59: #endif
                     60: #if defined (_S_IFDIR) && !defined (S_IFDIR)
                     61: #define S_IFDIR _S_IFDIR
                     62: #endif
                     63: #if defined (_S_IFBLK) && !defined (S_IFBLK)
                     64: #define S_IFBLK _S_IFBLK
                     65: #endif
                     66: #if defined (_S_IFREG) && !defined (S_IFREG)
                     67: #define S_IFREG _S_IFREG
                     68: #endif
                     69: #if defined (_S_IFLNK) && !defined (S_IFLNK)
                     70: #define S_IFLNK _S_IFLNK
                     71: #endif
                     72: #if defined (_S_IFSOCK) && !defined (S_IFSOCK)
                     73: #define S_IFSOCK _S_IFSOCK
                     74: #endif
                     75: 
                     76: /* Test for each symbol individually and define the ones necessary (some
                     77:    systems claiming Posix compatibility define some but not all). */
                     78: 
                     79: #if defined (S_IFBLK) && !defined (S_ISBLK)
                     80: #define        S_ISBLK(m)      (((m)&S_IFMT) == S_IFBLK)       /* block device */
                     81: #endif
                     82: 
                     83: #if defined (S_IFCHR) && !defined (S_ISCHR)
                     84: #define        S_ISCHR(m)      (((m)&S_IFMT) == S_IFCHR)       /* character device */
                     85: #endif
                     86: 
                     87: #if defined (S_IFDIR) && !defined (S_ISDIR)
                     88: #define        S_ISDIR(m)      (((m)&S_IFMT) == S_IFDIR)       /* directory */
                     89: #endif
                     90: 
                     91: #if defined (S_IFREG) && !defined (S_ISREG)
                     92: #define        S_ISREG(m)      (((m)&S_IFMT) == S_IFREG)       /* file */
                     93: #endif
                     94: 
                     95: #if defined (S_IFIFO) && !defined (S_ISFIFO)
                     96: #define        S_ISFIFO(m)     (((m)&S_IFMT) == S_IFIFO)       /* fifo - named pipe */
                     97: #endif
                     98: 
                     99: #if defined (S_IFLNK) && !defined (S_ISLNK)
                    100: #define        S_ISLNK(m)      (((m)&S_IFMT) == S_IFLNK)       /* symbolic link */
                    101: #endif
                    102: 
                    103: #if defined (S_IFSOCK) && !defined (S_ISSOCK)
                    104: #define        S_ISSOCK(m)     (((m)&S_IFMT) == S_IFSOCK)      /* socket */
                    105: #endif
                    106: 
                    107: /*
                    108:  * POSIX 1003.1 5.6.1.2 <sys/stat.h> File Modes
                    109:  */
                    110: 
                    111: #if !defined (S_IRWXU)
                    112: #  if !defined (S_IREAD)
                    113: #    define S_IREAD    00400
                    114: #    define S_IWRITE   00200
                    115: #    define S_IEXEC    00100
                    116: #  endif /* S_IREAD */
                    117: 
                    118: #  if !defined (S_IRUSR)
                    119: #    define S_IRUSR    S_IREAD                 /* read, owner */
                    120: #    define S_IWUSR    S_IWRITE                /* write, owner */
                    121: #    define S_IXUSR    S_IEXEC                 /* execute, owner */
                    122: 
                    123: #    define S_IRGRP    (S_IREAD  >> 3)         /* read, group */
                    124: #    define S_IWGRP    (S_IWRITE >> 3)         /* write, group */
                    125: #    define S_IXGRP    (S_IEXEC  >> 3)         /* execute, group */
                    126: 
                    127: #    define S_IROTH    (S_IREAD  >> 6)         /* read, other */
                    128: #    define S_IWOTH    (S_IWRITE >> 6)         /* write, other */
                    129: #    define S_IXOTH    (S_IEXEC  >> 6)         /* execute, other */
                    130: #  endif /* !S_IRUSR */
                    131: 
                    132: #  define S_IRWXU      (S_IRUSR | S_IWUSR | S_IXUSR)
                    133: #  define S_IRWXG      (S_IRGRP | S_IWGRP | S_IXGRP)
                    134: #  define S_IRWXO      (S_IROTH | S_IWOTH | S_IXOTH)
1.1.1.2 ! misho     135: #else /* !S_IRWXU */
        !           136:   /* S_IRWXU is defined, but "group" and "other" bits might not be
        !           137:      (happens in certain versions of MinGW).  */
        !           138: #  if !defined (S_IRGRP)
        !           139: #    define S_IRGRP    (S_IREAD  >> 3)         /* read, group */
        !           140: #    define S_IWGRP    (S_IWRITE >> 3)         /* write, group */
        !           141: #    define S_IXGRP    (S_IEXEC  >> 3)         /* execute, group */
        !           142: #  endif /* !S_IRGRP */
        !           143: 
        !           144: #  if !defined (S_IROTH)
        !           145: #    define S_IROTH    (S_IREAD  >> 6)         /* read, other */
        !           146: #    define S_IWOTH    (S_IWRITE >> 6)         /* write, other */
        !           147: #    define S_IXOTH    (S_IEXEC  >> 6)         /* execute, other */
        !           148: #  endif /* !S_IROTH */
        !           149: #  if !defined (S_IRWXG)
        !           150: #    define S_IRWXG    (S_IRGRP | S_IWGRP | S_IXGRP)
        !           151: #  endif
        !           152: #  if !defined (S_IRWXO)
        !           153: #    define S_IRWXO    (S_IROTH | S_IWOTH | S_IXOTH)
        !           154: #  endif
1.1       misho     155: #endif /* !S_IRWXU */
                    156: 
                    157: /* These are non-standard, but are used in builtins.c$symbolic_umask() */
                    158: #define S_IRUGO                (S_IRUSR | S_IRGRP | S_IROTH)
                    159: #define S_IWUGO                (S_IWUSR | S_IWGRP | S_IWOTH)
                    160: #define S_IXUGO                (S_IXUSR | S_IXGRP | S_IXOTH)
                    161: 
                    162: #endif /* _POSIXSTAT_H_ */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>