"Fossies" - the Fresh Open Source Software Archive

Member "which-2.21/posixstat.h" (25 May 2007, 4577 Bytes) of package /linux/privat/which-2.21.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "posixstat.h" see the Fossies "Dox" file reference documentation.

    1 /* posixstat.h -- Posix stat(2) definitions for systems that
    2    don't have them. */
    3 
    4 /* Copyright (C) 1987,1991 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 it
    9    under the terms of the GNU General Public License as published by
   10    the Free Software Foundation; either version 1, or (at your option)
   11    any later version.
   12 
   13    Bash is distributed in the hope that it will be useful, but WITHOUT
   14    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
   15    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
   16    License for more details.
   17 
   18    You should have received a copy of the GNU General Public License
   19    along with Bash; see the file COPYING.  If not, write to the Free
   20    Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
   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 (isc386)
   30 #  if !defined (S_IFDIR)
   31 #    define S_IFDIR 0040000
   32 #  endif /* !S_IFDIR */
   33 #  if !defined (S_IFMT)
   34 #    define S_IFMT  0170000
   35 #  endif /* !S_IFMT */
   36 #endif /* isc386 */
   37 
   38 /* This text is taken directly from the Cadmus I was trying to
   39    compile on:
   40     the following MACROs are defined for X/OPEN compatibility
   41     however, is the param correct ??
   42    #define S_ISBLK(s) ((s.st_mode & S_IFMT) == S_IFBLK)
   43 
   44   Well, the answer is no.  Thus... */
   45 #if defined (BrainDeath)
   46 #  undef S_ISBLK
   47 #  undef S_ISCHR
   48 #  undef S_ISDIR
   49 #  undef S_ISFIFO
   50 #  undef S_ISREG
   51 #endif /* BrainDeath */
   52 
   53 /* Posix 1003.1 5.6.1.1 <sys/stat.h> file types */
   54 
   55 /* Some Posix-wannabe systems define _S_IF* macros instead of S_IF*, but
   56    do not provide the S_IS* macros that Posix requires. */
   57 
   58 #if defined (_S_IFMT) && !defined (S_IFMT)
   59 #define S_IFMT _S_IFMT
   60 #endif
   61 #if defined (_S_IFIFO) && !defined (S_IFIFO)
   62 #define S_IFIFO _S_IFIFO
   63 #endif
   64 #if defined (_S_IFCHR) && !defined (S_IFCHR)
   65 #define S_IFCHR _S_IFCHR
   66 #endif
   67 #if defined (_S_IFDIR) && !defined (S_IFDIR)
   68 #define S_IFDIR _S_IFDIR
   69 #endif
   70 #if defined (_S_IFBLK) && !defined (S_IFBLK)
   71 #define S_IFBLK _S_IFBLK
   72 #endif
   73 #if defined (_S_IFREG) && !defined (S_IFREG)
   74 #define S_IFREG _S_IFREG
   75 #endif
   76 #if defined (_S_IFLNK) && !defined (S_IFLNK)
   77 #define S_IFLNK _S_IFLNK
   78 #endif
   79 #if defined (_S_IFSOCK) && !defined (S_IFSOCK)
   80 #define S_IFSOCK _S_IFSOCK
   81 #endif
   82 
   83 /* Test for each symbol individually and define the ones necessary (some
   84    systems claiming Posix compatibility define some but not all). */
   85 
   86 #if defined (S_IFBLK) && !defined (S_ISBLK)
   87 #define S_ISBLK(m)  (((m)&S_IFMT) == S_IFBLK)   /* block device */
   88 #endif
   89 
   90 #if defined (S_IFCHR) && !defined (S_ISCHR)
   91 #define S_ISCHR(m)  (((m)&S_IFMT) == S_IFCHR)   /* character device */
   92 #endif
   93 
   94 #if defined (S_IFDIR) && !defined (S_ISDIR)
   95 #define S_ISDIR(m)  (((m)&S_IFMT) == S_IFDIR)   /* directory */
   96 #endif
   97 
   98 #if defined (S_IFREG) && !defined (S_ISREG)
   99 #define S_ISREG(m)  (((m)&S_IFMT) == S_IFREG)   /* file */
  100 #endif
  101 
  102 #if defined (S_IFIFO) && !defined (S_ISFIFO)
  103 #define S_ISFIFO(m) (((m)&S_IFMT) == S_IFIFO)   /* fifo - named pipe */
  104 #endif
  105 
  106 #if defined (S_IFLNK) && !defined (S_ISLNK)
  107 #define S_ISLNK(m)  (((m)&S_IFMT) == S_IFLNK)   /* symbolic link */
  108 #endif
  109 
  110 #if defined (S_IFSOCK) && !defined (S_ISSOCK)
  111 #define S_ISSOCK(m) (((m)&S_IFMT) == S_IFSOCK)  /* socket */
  112 #endif
  113 
  114 /*
  115  * POSIX 1003.1 5.6.1.2 <sys/stat.h> File Modes
  116  */
  117  
  118 #if !defined (S_IRWXU)
  119 #  if !defined (S_IREAD)
  120 #    define S_IREAD 00400
  121 #    define S_IWRITE    00200
  122 #    define S_IEXEC 00100
  123 #  endif /* S_IREAD */
  124 
  125 #  if !defined (S_IRUSR)
  126 #    define S_IRUSR S_IREAD         /* read, owner */
  127 #    define S_IWUSR S_IWRITE        /* write, owner */
  128 #    define S_IXUSR S_IEXEC         /* execute, owner */
  129 
  130 #    define S_IRGRP (S_IREAD  >> 3)     /* read, group */
  131 #    define S_IWGRP (S_IWRITE >> 3)     /* write, group */
  132 #    define S_IXGRP (S_IEXEC  >> 3)     /* execute, group */
  133 
  134 #    define S_IROTH (S_IREAD  >> 6)     /* read, other */
  135 #    define S_IWOTH (S_IWRITE >> 6)     /* write, other */
  136 #    define S_IXOTH (S_IEXEC  >> 6)     /* execute, other */
  137 #  endif /* !S_IRUSR */
  138 
  139 #  define S_IRWXU   (S_IRUSR | S_IWUSR | S_IXUSR)
  140 #  define S_IRWXG   (S_IRGRP | S_IWGRP | S_IXGRP)
  141 #  define S_IRWXO   (S_IROTH | S_IWOTH | S_IXOTH)
  142 #endif /* !S_IRWXU */
  143 
  144 /* These are non-standard, but are used in builtins.c$symbolic_umask() */
  145 #define S_IRUGO     (S_IRUSR | S_IRGRP | S_IROTH)
  146 #define S_IWUGO     (S_IWUSR | S_IWGRP | S_IWOTH)
  147 #define S_IXUGO     (S_IXUSR | S_IXGRP | S_IXOTH)
  148 
  149 #endif /* _POSIXSTAT_H */