File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libiconv / srclib / sys_stat.in.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue May 29 09:29:43 2012 UTC (12 years, 1 month ago) by misho
Branches: libiconv, MAIN
CVS tags: v1_14p0, v1_14, HEAD
libiconv v1.14

    1: /* Provide a more complete sys/stat header file.
    2:    Copyright (C) 2005-2011 Free Software Foundation, Inc.
    3: 
    4:    This program is free software; you can redistribute it and/or modify
    5:    it under the terms of the GNU General Public License as published by
    6:    the Free Software Foundation; either version 3, or (at your option)
    7:    any later version.
    8: 
    9:    This program is distributed in the hope that it will be useful,
   10:    but WITHOUT ANY WARRANTY; without even the implied warranty of
   11:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   12:    GNU General Public License for more details.
   13: 
   14:    You should have received a copy of the GNU General Public License
   15:    along with this program; if not, write to the Free Software Foundation,
   16:    Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
   17: 
   18: /* Written by Eric Blake, Paul Eggert, and Jim Meyering.  */
   19: 
   20: /* This file is supposed to be used on platforms where <sys/stat.h> is
   21:    incomplete.  It is intended to provide definitions and prototypes
   22:    needed by an application.  Start with what the system provides.  */
   23: 
   24: #if __GNUC__ >= 3
   25: @PRAGMA_SYSTEM_HEADER@
   26: #endif
   27: @PRAGMA_COLUMNS@
   28: 
   29: #if defined __need_system_sys_stat_h
   30: /* Special invocation convention.  */
   31: 
   32: #@INCLUDE_NEXT@ @NEXT_SYS_STAT_H@
   33: 
   34: #else
   35: /* Normal invocation convention.  */
   36: 
   37: #ifndef _@GUARD_PREFIX@_SYS_STAT_H
   38: 
   39: /* Get nlink_t.  */
   40: #include <sys/types.h>
   41: 
   42: /* Get struct timespec.  */
   43: #include <time.h>
   44: 
   45: /* The include_next requires a split double-inclusion guard.  */
   46: #@INCLUDE_NEXT@ @NEXT_SYS_STAT_H@
   47: 
   48: #ifndef _@GUARD_PREFIX@_SYS_STAT_H
   49: #define _@GUARD_PREFIX@_SYS_STAT_H
   50: 
   51: /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
   52: 
   53: /* The definition of _GL_ARG_NONNULL is copied here.  */
   54: 
   55: /* The definition of _GL_WARN_ON_USE is copied here.  */
   56: 
   57: /* Before doing "#define mkdir rpl_mkdir" below, we need to include all
   58:    headers that may declare mkdir().  */
   59: #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
   60: # include <io.h>     /* mingw32, mingw64 */
   61: # include <direct.h> /* mingw64 */
   62: #endif
   63: 
   64: #ifndef S_IFMT
   65: # define S_IFMT 0170000
   66: #endif
   67: 
   68: #if STAT_MACROS_BROKEN
   69: # undef S_ISBLK
   70: # undef S_ISCHR
   71: # undef S_ISDIR
   72: # undef S_ISFIFO
   73: # undef S_ISLNK
   74: # undef S_ISNAM
   75: # undef S_ISMPB
   76: # undef S_ISMPC
   77: # undef S_ISNWK
   78: # undef S_ISREG
   79: # undef S_ISSOCK
   80: #endif
   81: 
   82: #ifndef S_ISBLK
   83: # ifdef S_IFBLK
   84: #  define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
   85: # else
   86: #  define S_ISBLK(m) 0
   87: # endif
   88: #endif
   89: 
   90: #ifndef S_ISCHR
   91: # ifdef S_IFCHR
   92: #  define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
   93: # else
   94: #  define S_ISCHR(m) 0
   95: # endif
   96: #endif
   97: 
   98: #ifndef S_ISDIR
   99: # ifdef S_IFDIR
  100: #  define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
  101: # else
  102: #  define S_ISDIR(m) 0
  103: # endif
  104: #endif
  105: 
  106: #ifndef S_ISDOOR /* Solaris 2.5 and up */
  107: # define S_ISDOOR(m) 0
  108: #endif
  109: 
  110: #ifndef S_ISFIFO
  111: # ifdef S_IFIFO
  112: #  define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
  113: # else
  114: #  define S_ISFIFO(m) 0
  115: # endif
  116: #endif
  117: 
  118: #ifndef S_ISLNK
  119: # ifdef S_IFLNK
  120: #  define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
  121: # else
  122: #  define S_ISLNK(m) 0
  123: # endif
  124: #endif
  125: 
  126: #ifndef S_ISMPB /* V7 */
  127: # ifdef S_IFMPB
  128: #  define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB)
  129: #  define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC)
  130: # else
  131: #  define S_ISMPB(m) 0
  132: #  define S_ISMPC(m) 0
  133: # endif
  134: #endif
  135: 
  136: #ifndef S_ISNAM /* Xenix */
  137: # ifdef S_IFNAM
  138: #  define S_ISNAM(m) (((m) & S_IFMT) == S_IFNAM)
  139: # else
  140: #  define S_ISNAM(m) 0
  141: # endif
  142: #endif
  143: 
  144: #ifndef S_ISNWK /* HP/UX */
  145: # ifdef S_IFNWK
  146: #  define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK)
  147: # else
  148: #  define S_ISNWK(m) 0
  149: # endif
  150: #endif
  151: 
  152: #ifndef S_ISPORT /* Solaris 10 and up */
  153: # define S_ISPORT(m) 0
  154: #endif
  155: 
  156: #ifndef S_ISREG
  157: # ifdef S_IFREG
  158: #  define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
  159: # else
  160: #  define S_ISREG(m) 0
  161: # endif
  162: #endif
  163: 
  164: #ifndef S_ISSOCK
  165: # ifdef S_IFSOCK
  166: #  define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
  167: # else
  168: #  define S_ISSOCK(m) 0
  169: # endif
  170: #endif
  171: 
  172: 
  173: #ifndef S_TYPEISMQ
  174: # define S_TYPEISMQ(p) 0
  175: #endif
  176: 
  177: #ifndef S_TYPEISTMO
  178: # define S_TYPEISTMO(p) 0
  179: #endif
  180: 
  181: 
  182: #ifndef S_TYPEISSEM
  183: # ifdef S_INSEM
  184: #  define S_TYPEISSEM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSEM)
  185: # else
  186: #  define S_TYPEISSEM(p) 0
  187: # endif
  188: #endif
  189: 
  190: #ifndef S_TYPEISSHM
  191: # ifdef S_INSHD
  192: #  define S_TYPEISSHM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSHD)
  193: # else
  194: #  define S_TYPEISSHM(p) 0
  195: # endif
  196: #endif
  197: 
  198: /* high performance ("contiguous data") */
  199: #ifndef S_ISCTG
  200: # define S_ISCTG(p) 0
  201: #endif
  202: 
  203: /* Cray DMF (data migration facility): off line, with data  */
  204: #ifndef S_ISOFD
  205: # define S_ISOFD(p) 0
  206: #endif
  207: 
  208: /* Cray DMF (data migration facility): off line, with no data  */
  209: #ifndef S_ISOFL
  210: # define S_ISOFL(p) 0
  211: #endif
  212: 
  213: /* 4.4BSD whiteout */
  214: #ifndef S_ISWHT
  215: # define S_ISWHT(m) 0
  216: #endif
  217: 
  218: /* If any of the following are undefined,
  219:    define them to their de facto standard values.  */
  220: #if !S_ISUID
  221: # define S_ISUID 04000
  222: #endif
  223: #if !S_ISGID
  224: # define S_ISGID 02000
  225: #endif
  226: 
  227: /* S_ISVTX is a common extension to POSIX.  */
  228: #ifndef S_ISVTX
  229: # define S_ISVTX 01000
  230: #endif
  231: 
  232: #if !S_IRUSR && S_IREAD
  233: # define S_IRUSR S_IREAD
  234: #endif
  235: #if !S_IRUSR
  236: # define S_IRUSR 00400
  237: #endif
  238: #if !S_IRGRP
  239: # define S_IRGRP (S_IRUSR >> 3)
  240: #endif
  241: #if !S_IROTH
  242: # define S_IROTH (S_IRUSR >> 6)
  243: #endif
  244: 
  245: #if !S_IWUSR && S_IWRITE
  246: # define S_IWUSR S_IWRITE
  247: #endif
  248: #if !S_IWUSR
  249: # define S_IWUSR 00200
  250: #endif
  251: #if !S_IWGRP
  252: # define S_IWGRP (S_IWUSR >> 3)
  253: #endif
  254: #if !S_IWOTH
  255: # define S_IWOTH (S_IWUSR >> 6)
  256: #endif
  257: 
  258: #if !S_IXUSR && S_IEXEC
  259: # define S_IXUSR S_IEXEC
  260: #endif
  261: #if !S_IXUSR
  262: # define S_IXUSR 00100
  263: #endif
  264: #if !S_IXGRP
  265: # define S_IXGRP (S_IXUSR >> 3)
  266: #endif
  267: #if !S_IXOTH
  268: # define S_IXOTH (S_IXUSR >> 6)
  269: #endif
  270: 
  271: #if !S_IRWXU
  272: # define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
  273: #endif
  274: #if !S_IRWXG
  275: # define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP)
  276: #endif
  277: #if !S_IRWXO
  278: # define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH)
  279: #endif
  280: 
  281: /* S_IXUGO is a common extension to POSIX.  */
  282: #if !S_IXUGO
  283: # define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH)
  284: #endif
  285: 
  286: #ifndef S_IRWXUGO
  287: # define S_IRWXUGO (S_IRWXU | S_IRWXG | S_IRWXO)
  288: #endif
  289: 
  290: /* Macros for futimens and utimensat.  */
  291: #ifndef UTIME_NOW
  292: # define UTIME_NOW (-1)
  293: # define UTIME_OMIT (-2)
  294: #endif
  295: 
  296: 
  297: #if @GNULIB_FCHMODAT@
  298: # if !@HAVE_FCHMODAT@
  299: _GL_FUNCDECL_SYS (fchmodat, int,
  300:                   (int fd, char const *file, mode_t mode, int flag)
  301:                   _GL_ARG_NONNULL ((2)));
  302: # endif
  303: _GL_CXXALIAS_SYS (fchmodat, int,
  304:                   (int fd, char const *file, mode_t mode, int flag));
  305: _GL_CXXALIASWARN (fchmodat);
  306: #elif defined GNULIB_POSIXCHECK
  307: # undef fchmodat
  308: # if HAVE_RAW_DECL_FCHMODAT
  309: _GL_WARN_ON_USE (fchmodat, "fchmodat is not portable - "
  310:                  "use gnulib module openat for portability");
  311: # endif
  312: #endif
  313: 
  314: 
  315: #if @REPLACE_FSTAT@
  316: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  317: #  define fstat rpl_fstat
  318: # endif
  319: _GL_FUNCDECL_RPL (fstat, int, (int fd, struct stat *buf) _GL_ARG_NONNULL ((2)));
  320: _GL_CXXALIAS_RPL (fstat, int, (int fd, struct stat *buf));
  321: #else
  322: _GL_CXXALIAS_SYS (fstat, int, (int fd, struct stat *buf));
  323: #endif
  324: _GL_CXXALIASWARN (fstat);
  325: 
  326: 
  327: #if @GNULIB_FSTATAT@
  328: # if @REPLACE_FSTATAT@
  329: #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  330: #   undef fstatat
  331: #   define fstatat rpl_fstatat
  332: #  endif
  333: _GL_FUNCDECL_RPL (fstatat, int,
  334:                   (int fd, char const *name, struct stat *st, int flags)
  335:                   _GL_ARG_NONNULL ((2, 3)));
  336: _GL_CXXALIAS_RPL (fstatat, int,
  337:                   (int fd, char const *name, struct stat *st, int flags));
  338: # else
  339: #  if !@HAVE_FSTATAT@
  340: _GL_FUNCDECL_SYS (fstatat, int,
  341:                   (int fd, char const *name, struct stat *st, int flags)
  342:                   _GL_ARG_NONNULL ((2, 3)));
  343: #  endif
  344: _GL_CXXALIAS_SYS (fstatat, int,
  345:                   (int fd, char const *name, struct stat *st, int flags));
  346: # endif
  347: _GL_CXXALIASWARN (fstatat);
  348: #elif defined GNULIB_POSIXCHECK
  349: # undef fstatat
  350: # if HAVE_RAW_DECL_FSTATAT
  351: _GL_WARN_ON_USE (fstatat, "fstatat is not portable - "
  352:                  "use gnulib module openat for portability");
  353: # endif
  354: #endif
  355: 
  356: 
  357: #if @GNULIB_FUTIMENS@
  358: /* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our futimens
  359:    implementation relies on futimesat, which on Solaris 10 makes an invocation
  360:    to futimens that is meant to invoke the libc's futimens(), not gnulib's
  361:    futimens().  */
  362: # if @REPLACE_FUTIMENS@ || (!@HAVE_FUTIMENS@ && defined __sun)
  363: #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  364: #   undef futimens
  365: #   define futimens rpl_futimens
  366: #  endif
  367: _GL_FUNCDECL_RPL (futimens, int, (int fd, struct timespec const times[2]));
  368: _GL_CXXALIAS_RPL (futimens, int, (int fd, struct timespec const times[2]));
  369: # else
  370: #  if !@HAVE_FUTIMENS@
  371: _GL_FUNCDECL_SYS (futimens, int, (int fd, struct timespec const times[2]));
  372: #  endif
  373: _GL_CXXALIAS_SYS (futimens, int, (int fd, struct timespec const times[2]));
  374: # endif
  375: # if @HAVE_FUTIMENS@
  376: _GL_CXXALIASWARN (futimens);
  377: # endif
  378: #elif defined GNULIB_POSIXCHECK
  379: # undef futimens
  380: # if HAVE_RAW_DECL_FUTIMENS
  381: _GL_WARN_ON_USE (futimens, "futimens is not portable - "
  382:                  "use gnulib module futimens for portability");
  383: # endif
  384: #endif
  385: 
  386: 
  387: #if @GNULIB_LCHMOD@
  388: /* Change the mode of FILENAME to MODE, without dereferencing it if FILENAME
  389:    denotes a symbolic link.  */
  390: # if !@HAVE_LCHMOD@
  391: /* The lchmod replacement follows symbolic links.  Callers should take
  392:    this into account; lchmod should be applied only to arguments that
  393:    are known to not be symbolic links.  On hosts that lack lchmod,
  394:    this can lead to race conditions between the check and the
  395:    invocation of lchmod, but we know of no workarounds that are
  396:    reliable in general.  You might try requesting support for lchmod
  397:    from your operating system supplier.  */
  398: #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  399: #   define lchmod chmod
  400: #  endif
  401: /* Need to cast, because on mingw, the second parameter of chmod is
  402:                                                 int mode.  */
  403: _GL_CXXALIAS_RPL_CAST_1 (lchmod, chmod, int,
  404:                          (const char *filename, mode_t mode));
  405: # else
  406: #  if 0 /* assume already declared */
  407: _GL_FUNCDECL_SYS (lchmod, int, (const char *filename, mode_t mode)
  408:                                _GL_ARG_NONNULL ((1)));
  409: #  endif
  410: _GL_CXXALIAS_SYS (lchmod, int, (const char *filename, mode_t mode));
  411: # endif
  412: # if @HAVE_LCHMOD@
  413: _GL_CXXALIASWARN (lchmod);
  414: # endif
  415: #elif defined GNULIB_POSIXCHECK
  416: # undef lchmod
  417: # if HAVE_RAW_DECL_LCHMOD
  418: _GL_WARN_ON_USE (lchmod, "lchmod is unportable - "
  419:                  "use gnulib module lchmod for portability");
  420: # endif
  421: #endif
  422: 
  423: 
  424: #if @GNULIB_LSTAT@
  425: # if ! @HAVE_LSTAT@
  426: /* mingw does not support symlinks, therefore it does not have lstat.  But
  427:    without links, stat does just fine.  */
  428: #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  429: #   define lstat stat
  430: #  endif
  431: _GL_CXXALIAS_RPL_1 (lstat, stat, int, (const char *name, struct stat *buf));
  432: # elif @REPLACE_LSTAT@
  433: #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  434: #   undef lstat
  435: #   define lstat rpl_lstat
  436: #  endif
  437: _GL_FUNCDECL_RPL (lstat, int, (const char *name, struct stat *buf)
  438:                               _GL_ARG_NONNULL ((1, 2)));
  439: _GL_CXXALIAS_RPL (lstat, int, (const char *name, struct stat *buf));
  440: # else
  441: _GL_CXXALIAS_SYS (lstat, int, (const char *name, struct stat *buf));
  442: # endif
  443: # if @HAVE_LSTAT@
  444: _GL_CXXALIASWARN (lstat);
  445: # endif
  446: #elif defined GNULIB_POSIXCHECK
  447: # undef lstat
  448: # if HAVE_RAW_DECL_LSTAT
  449: _GL_WARN_ON_USE (lstat, "lstat is unportable - "
  450:                  "use gnulib module lstat for portability");
  451: # endif
  452: #endif
  453: 
  454: 
  455: #if @REPLACE_MKDIR@
  456: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  457: #  undef mkdir
  458: #  define mkdir rpl_mkdir
  459: # endif
  460: _GL_FUNCDECL_RPL (mkdir, int, (char const *name, mode_t mode)
  461:                               _GL_ARG_NONNULL ((1)));
  462: _GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode));
  463: #else
  464: /* mingw's _mkdir() function has 1 argument, but we pass 2 arguments.
  465:    Additionally, it declares _mkdir (and depending on compile flags, an
  466:    alias mkdir), only in the nonstandard includes <direct.h> and <io.h>,
  467:    which are included above.  */
  468: # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
  469: 
  470: #  if !GNULIB_defined_rpl_mkdir
  471: static inline int
  472: rpl_mkdir (char const *name, mode_t mode)
  473: {
  474:   return _mkdir (name);
  475: }
  476: #   define GNULIB_defined_rpl_mkdir 1
  477: #  endif
  478: 
  479: #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  480: #   define mkdir rpl_mkdir
  481: #  endif
  482: _GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode));
  483: # else
  484: _GL_CXXALIAS_SYS (mkdir, int, (char const *name, mode_t mode));
  485: # endif
  486: #endif
  487: _GL_CXXALIASWARN (mkdir);
  488: 
  489: 
  490: #if @GNULIB_MKDIRAT@
  491: # if !@HAVE_MKDIRAT@
  492: _GL_FUNCDECL_SYS (mkdirat, int, (int fd, char const *file, mode_t mode)
  493:                                 _GL_ARG_NONNULL ((2)));
  494: # endif
  495: _GL_CXXALIAS_SYS (mkdirat, int, (int fd, char const *file, mode_t mode));
  496: _GL_CXXALIASWARN (mkdirat);
  497: #elif defined GNULIB_POSIXCHECK
  498: # undef mkdirat
  499: # if HAVE_RAW_DECL_MKDIRAT
  500: _GL_WARN_ON_USE (mkdirat, "mkdirat is not portable - "
  501:                  "use gnulib module openat for portability");
  502: # endif
  503: #endif
  504: 
  505: 
  506: #if @GNULIB_MKFIFO@
  507: # if @REPLACE_MKFIFO@
  508: #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  509: #   undef mkfifo
  510: #   define mkfifo rpl_mkfifo
  511: #  endif
  512: _GL_FUNCDECL_RPL (mkfifo, int, (char const *file, mode_t mode)
  513:                                _GL_ARG_NONNULL ((1)));
  514: _GL_CXXALIAS_RPL (mkfifo, int, (char const *file, mode_t mode));
  515: # else
  516: #  if !@HAVE_MKFIFO@
  517: _GL_FUNCDECL_SYS (mkfifo, int, (char const *file, mode_t mode)
  518:                                _GL_ARG_NONNULL ((1)));
  519: #  endif
  520: _GL_CXXALIAS_SYS (mkfifo, int, (char const *file, mode_t mode));
  521: # endif
  522: _GL_CXXALIASWARN (mkfifo);
  523: #elif defined GNULIB_POSIXCHECK
  524: # undef mkfifo
  525: # if HAVE_RAW_DECL_MKFIFO
  526: _GL_WARN_ON_USE (mkfifo, "mkfifo is not portable - "
  527:                  "use gnulib module mkfifo for portability");
  528: # endif
  529: #endif
  530: 
  531: 
  532: #if @GNULIB_MKFIFOAT@
  533: # if !@HAVE_MKFIFOAT@
  534: _GL_FUNCDECL_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode)
  535:                                  _GL_ARG_NONNULL ((2)));
  536: # endif
  537: _GL_CXXALIAS_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode));
  538: _GL_CXXALIASWARN (mkfifoat);
  539: #elif defined GNULIB_POSIXCHECK
  540: # undef mkfifoat
  541: # if HAVE_RAW_DECL_MKFIFOAT
  542: _GL_WARN_ON_USE (mkfifoat, "mkfifoat is not portable - "
  543:                  "use gnulib module mkfifoat for portability");
  544: # endif
  545: #endif
  546: 
  547: 
  548: #if @GNULIB_MKNOD@
  549: # if @REPLACE_MKNOD@
  550: #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  551: #   undef mknod
  552: #   define mknod rpl_mknod
  553: #  endif
  554: _GL_FUNCDECL_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev)
  555:                               _GL_ARG_NONNULL ((1)));
  556: _GL_CXXALIAS_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev));
  557: # else
  558: #  if !@HAVE_MKNOD@
  559: _GL_FUNCDECL_SYS (mknod, int, (char const *file, mode_t mode, dev_t dev)
  560:                               _GL_ARG_NONNULL ((1)));
  561: #  endif
  562: /* Need to cast, because on OSF/1 5.1, the third parameter is '...'.  */
  563: _GL_CXXALIAS_SYS_CAST (mknod, int, (char const *file, mode_t mode, dev_t dev));
  564: # endif
  565: _GL_CXXALIASWARN (mknod);
  566: #elif defined GNULIB_POSIXCHECK
  567: # undef mknod
  568: # if HAVE_RAW_DECL_MKNOD
  569: _GL_WARN_ON_USE (mknod, "mknod is not portable - "
  570:                  "use gnulib module mknod for portability");
  571: # endif
  572: #endif
  573: 
  574: 
  575: #if @GNULIB_MKNODAT@
  576: # if !@HAVE_MKNODAT@
  577: _GL_FUNCDECL_SYS (mknodat, int,
  578:                   (int fd, char const *file, mode_t mode, dev_t dev)
  579:                   _GL_ARG_NONNULL ((2)));
  580: # endif
  581: _GL_CXXALIAS_SYS (mknodat, int,
  582:                   (int fd, char const *file, mode_t mode, dev_t dev));
  583: _GL_CXXALIASWARN (mknodat);
  584: #elif defined GNULIB_POSIXCHECK
  585: # undef mknodat
  586: # if HAVE_RAW_DECL_MKNODAT
  587: _GL_WARN_ON_USE (mknodat, "mknodat is not portable - "
  588:                  "use gnulib module mkfifoat for portability");
  589: # endif
  590: #endif
  591: 
  592: 
  593: #if @GNULIB_STAT@
  594: # if @REPLACE_STAT@
  595: /* We can't use the object-like #define stat rpl_stat, because of
  596:    struct stat.  This means that rpl_stat will not be used if the user
  597:    does (stat)(a,b).  Oh well.  */
  598: #  undef stat
  599: #  ifdef _LARGE_FILES
  600:     /* With _LARGE_FILES defined, AIX (only) defines stat to stat64,
  601:        so we have to replace stat64() instead of stat(). */
  602: #   define stat stat64
  603: #   undef stat64
  604: #   define stat64(name, st) rpl_stat (name, st)
  605: #  else /* !_LARGE_FILES */
  606: #   define stat(name, st) rpl_stat (name, st)
  607: #  endif /* !_LARGE_FILES */
  608: _GL_EXTERN_C int stat (const char *name, struct stat *buf)
  609:                       _GL_ARG_NONNULL ((1, 2));
  610: # endif
  611: #elif defined GNULIB_POSIXCHECK
  612: # undef stat
  613: # if HAVE_RAW_DECL_STAT
  614: _GL_WARN_ON_USE (stat, "stat is unportable - "
  615:                  "use gnulib module stat for portability");
  616: # endif
  617: #endif
  618: 
  619: 
  620: #if @GNULIB_UTIMENSAT@
  621: /* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our utimensat
  622:    implementation relies on futimesat, which on Solaris 10 makes an invocation
  623:    to utimensat that is meant to invoke the libc's utimensat(), not gnulib's
  624:    utimensat().  */
  625: # if @REPLACE_UTIMENSAT@ || (!@HAVE_UTIMENSAT@ && defined __sun)
  626: #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  627: #   undef utimensat
  628: #   define utimensat rpl_utimensat
  629: #  endif
  630: _GL_FUNCDECL_RPL (utimensat, int, (int fd, char const *name,
  631:                                    struct timespec const times[2], int flag)
  632:                                   _GL_ARG_NONNULL ((2)));
  633: _GL_CXXALIAS_RPL (utimensat, int, (int fd, char const *name,
  634:                                    struct timespec const times[2], int flag));
  635: # else
  636: #  if !@HAVE_UTIMENSAT@
  637: _GL_FUNCDECL_SYS (utimensat, int, (int fd, char const *name,
  638:                                    struct timespec const times[2], int flag)
  639:                                   _GL_ARG_NONNULL ((2)));
  640: #  endif
  641: _GL_CXXALIAS_SYS (utimensat, int, (int fd, char const *name,
  642:                                    struct timespec const times[2], int flag));
  643: # endif
  644: # if @HAVE_UTIMENSAT@
  645: _GL_CXXALIASWARN (utimensat);
  646: # endif
  647: #elif defined GNULIB_POSIXCHECK
  648: # undef utimensat
  649: # if HAVE_RAW_DECL_UTIMENSAT
  650: _GL_WARN_ON_USE (utimensat, "utimensat is not portable - "
  651:                  "use gnulib module utimensat for portability");
  652: # endif
  653: #endif
  654: 
  655: 
  656: #endif /* _@GUARD_PREFIX@_SYS_STAT_H */
  657: #endif /* _@GUARD_PREFIX@_SYS_STAT_H */
  658: #endif

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