Annotation of embedaddon/libiconv/srclib/sys_stat.in.h, revision 1.1
1.1 ! misho 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>