File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / readline / posixstat.h
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Mar 17 01:01:01 2021 UTC (3 years, 3 months ago) by misho
Branches: readline, MAIN
CVS tags: v8_2p0, v8_1p0, HEAD
readline 8.1

    1: /* posixstat.h -- Posix stat(2) definitions for systems that
    2:    don't have them. */
    3: 
    4: /* Copyright (C) 1987-2019 Free Software Foundation, Inc.
    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)
  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
  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>