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