1 /* config.h.in. Generated from configure.ac by autoheader. */
3 /* Define to the number of bits in type 'ptrdiff_t'. */
4 #undef BITSIZEOF_PTRDIFF_T
6 /* Define to the number of bits in type 'sig_atomic_t'. */
7 #undef BITSIZEOF_SIG_ATOMIC_T
9 /* Define to the number of bits in type 'size_t'. */
10 #undef BITSIZEOF_SIZE_T
12 /* Define to the number of bits in type 'wchar_t'. */
13 #undef BITSIZEOF_WCHAR_T
15 /* Define to the number of bits in type 'wint_t'. */
16 #undef BITSIZEOF_WINT_T
18 /* Define to 1 if using 'alloca.c'. */
21 /* Define this to 1 if F_DUPFD behavior does not match POSIX */
22 #undef FCNTL_DUPFD_BUGGY
24 /* Define to 1 if fopen() fails to recognize a trailing slash. */
25 #undef FOPEN_TRAILING_SLASH_BUG
27 /* Define to 1 if the system's ftello function has the Solaris bug. */
28 #undef FTELLO_BROKEN_AFTER_SWITCHING_FROM_READ_TO_WRITE
30 /* Define to 1 if the system's ftello function has the macOS bug. */
31 #undef FTELLO_BROKEN_AFTER_UNGETC
33 /* Define to 1 if ungetc is broken when used on arbitrary bytes. */
34 #undef FUNC_UNGETC_BROKEN
36 /* Define this to 'void' or 'struct timezone' to match the system's
37 declaration of the second argument to gettimeofday. */
38 #undef GETTIMEOFDAY_TIMEZONE
40 /* Define to a C preprocessor expression that evaluates to 1 or 0, depending
41 whether the gnulib module fopen-gnu shall be considered present. */
42 #undef GNULIB_FOPEN_GNU
44 /* Define to a C preprocessor expression that evaluates to 1 or 0, depending
45 whether the gnulib module fscanf shall be considered present. */
48 /* Define to a C preprocessor expression that evaluates to 1 or 0, depending
49 whether the gnulib module msvc-nothrow shall be considered present. */
50 #undef GNULIB_MSVC_NOTHROW
52 /* Define to 1 if printf and friends should be labeled with attribute
53 "__gnu_printf__" instead of "__printf__" */
54 #undef GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU
56 /* Define to a C preprocessor expression that evaluates to 1 or 0, depending
57 whether the gnulib module scanf shall be considered present. */
60 /* Define to 1 when the gnulib module cloexec should be tested. */
61 #undef GNULIB_TEST_CLOEXEC
63 /* Define to 1 when the gnulib module close should be tested. */
64 #undef GNULIB_TEST_CLOSE
66 /* Define to 1 when the gnulib module dup2 should be tested. */
67 #undef GNULIB_TEST_DUP2
69 /* Define to 1 when the gnulib module explicit_bzero should be tested. */
70 #undef GNULIB_TEST_EXPLICIT_BZERO
72 /* Define to 1 when the gnulib module fcntl should be tested. */
73 #undef GNULIB_TEST_FCNTL
75 /* Define to 1 when the gnulib module fgetc should be tested. */
76 #undef GNULIB_TEST_FGETC
78 /* Define to 1 when the gnulib module fgets should be tested. */
79 #undef GNULIB_TEST_FGETS
81 /* Define to 1 when the gnulib module fopen should be tested. */
82 #undef GNULIB_TEST_FOPEN
84 /* Define to 1 when the gnulib module fopen-gnu should be tested. */
85 #undef GNULIB_TEST_FOPEN_GNU
87 /* Define to 1 when the gnulib module fprintf should be tested. */
88 #undef GNULIB_TEST_FPRINTF
90 /* Define to 1 when the gnulib module fputc should be tested. */
91 #undef GNULIB_TEST_FPUTC
93 /* Define to 1 when the gnulib module fputs should be tested. */
94 #undef GNULIB_TEST_FPUTS
96 /* Define to 1 when the gnulib module fread should be tested. */
97 #undef GNULIB_TEST_FREAD
99 /* Define to 1 when the gnulib module free-posix should be tested. */
100 #undef GNULIB_TEST_FREE_POSIX
102 /* Define to 1 when the gnulib module fscanf should be tested. */
103 #undef GNULIB_TEST_FSCANF
105 /* Define to 1 when the gnulib module fstat should be tested. */
106 #undef GNULIB_TEST_FSTAT
108 /* Define to 1 when the gnulib module ftell should be tested. */
109 #undef GNULIB_TEST_FTELL
111 /* Define to 1 when the gnulib module ftello should be tested. */
112 #undef GNULIB_TEST_FTELLO
114 /* Define to 1 when the gnulib module fwrite should be tested. */
115 #undef GNULIB_TEST_FWRITE
117 /* Define to 1 when the gnulib module getc should be tested. */
118 #undef GNULIB_TEST_GETC
120 /* Define to 1 when the gnulib module getchar should be tested. */
121 #undef GNULIB_TEST_GETCHAR
123 /* Define to 1 when the gnulib module getdtablesize should be tested. */
124 #undef GNULIB_TEST_GETDTABLESIZE
126 /* Define to 1 when the gnulib module getopt-posix should be tested. */
127 #undef GNULIB_TEST_GETOPT_POSIX
129 /* Define to 1 when the gnulib module gettimeofday should be tested. */
130 #undef GNULIB_TEST_GETTIMEOFDAY
132 /* Define to 1 when the gnulib module lseek should be tested. */
133 #undef GNULIB_TEST_LSEEK
135 /* Define to 1 when the gnulib module malloc-posix should be tested. */
136 #undef GNULIB_TEST_MALLOC_POSIX
138 /* Define to 1 when the gnulib module open should be tested. */
139 #undef GNULIB_TEST_OPEN
141 /* Define to 1 when the gnulib module printf should be tested. */
142 #undef GNULIB_TEST_PRINTF
144 /* Define to 1 when the gnulib module putc should be tested. */
145 #undef GNULIB_TEST_PUTC
147 /* Define to 1 when the gnulib module putchar should be tested. */
148 #undef GNULIB_TEST_PUTCHAR
150 /* Define to 1 when the gnulib module puts should be tested. */
151 #undef GNULIB_TEST_PUTS
153 /* Define to 1 when the gnulib module realloc-posix should be tested. */
154 #undef GNULIB_TEST_REALLOC_POSIX
156 /* Define to 1 when the gnulib module scanf should be tested. */
157 #undef GNULIB_TEST_SCANF
159 /* Define to 1 when the gnulib module stat should be tested. */
160 #undef GNULIB_TEST_STAT
162 /* Define to 1 when the gnulib module strverscmp should be tested. */
163 #undef GNULIB_TEST_STRVERSCMP
165 /* Define to 1 when the gnulib module vfprintf should be tested. */
166 #undef GNULIB_TEST_VFPRINTF
168 /* Define to 1 when the gnulib module vprintf should be tested. */
169 #undef GNULIB_TEST_VPRINTF
171 /* Define to 1 if you have 'alloca' after including <alloca.h>, a header that
172 may be supplied by this distribution. */
175 /* Define to 1 if <alloca.h> works. */
178 /* Define to 1 if you have the `clock_getres' function. */
179 #undef HAVE_CLOCK_GETRES
181 /* Define to 1 if you have the `clock_gettime' function. */
182 #undef HAVE_CLOCK_GETTIME
184 /* Define to 1 if you have the `clock_settime' function. */
185 #undef HAVE_CLOCK_SETTIME
187 /* Define to 1 if you have the <crtdefs.h> header file. */
188 #undef HAVE_CRTDEFS_H
190 /* Define to 1 if C supports variable-length arrays. */
191 #undef HAVE_C_VARARRAYS
193 /* Define to 1 if you have the declaration of `ecvt', and to 0 if you don't.
195 #undef HAVE_DECL_ECVT
197 /* Define to 1 if you have the declaration of `execvpe', and to 0 if you
199 #undef HAVE_DECL_EXECVPE
201 /* Define to 1 if you have the declaration of `fcloseall', and to 0 if you
203 #undef HAVE_DECL_FCLOSEALL
205 /* Define to 1 if you have the declaration of `fcvt', and to 0 if you don't.
207 #undef HAVE_DECL_FCVT
209 /* Define to 1 if you have the declaration of `ftello', and to 0 if you don't.
211 #undef HAVE_DECL_FTELLO
213 /* Define to 1 if you have the declaration of `gcvt', and to 0 if you don't.
215 #undef HAVE_DECL_GCVT
217 /* Define to 1 if you have the declaration of `getdtablesize', and to 0 if you
219 #undef HAVE_DECL_GETDTABLESIZE
221 /* Define to 1 if you have the declaration of `program_invocation_name', and
222 to 0 if you don't. */
223 #undef HAVE_DECL_PROGRAM_INVOCATION_NAME
225 /* Define to 1 if you have the declaration of `program_invocation_short_name',
226 and to 0 if you don't. */
227 #undef HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
229 /* Define to 1 if you have the declaration of `wcsdup', and to 0 if you don't.
231 #undef HAVE_DECL_WCSDUP
233 /* Define to 1 if you have the <dlfcn.h> header file. */
236 /* Define to 1 if you have the `explicit_bzero' function. */
237 #undef HAVE_EXPLICIT_BZERO
239 /* Define to 1 if you have the `explicit_memset' function. */
240 #undef HAVE_EXPLICIT_MEMSET
242 /* Define to 1 if you have the `fcntl' function. */
245 /* Define to 1 if you have the <features.h> header file. */
246 #undef HAVE_FEATURES_H
248 /* Define to 1 if you have the `fmemopen' function. */
251 /* Define if the 'free' function is guaranteed to preserve errno. */
252 #undef HAVE_FREE_POSIX
254 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
257 /* Define to 1 if you have the `getdtablesize' function. */
258 #undef HAVE_GETDTABLESIZE
260 /* Define to 1 if you have the <getopt.h> header file. */
263 /* Define to 1 if you have the `getopt_long_only' function. */
264 #undef HAVE_GETOPT_LONG_ONLY
266 /* Define to 1 if you have the `gettimeofday' function. */
267 #undef HAVE_GETTIMEOFDAY
269 /* Define to 1 if you have the <inttypes.h> header file. */
270 #undef HAVE_INTTYPES_H
272 /* Define to 1 if you have the <limits.h> header file. */
275 /* Define to 1 if the system has the type 'long long int'. */
276 #undef HAVE_LONG_LONG_INT
278 /* Define to 1 if you have the `lstat' function. */
281 /* Define if malloc, realloc, and calloc set errno on allocation failure. */
282 #undef HAVE_MALLOC_POSIX
284 /* Define to 1 if you have the `memset_s' function. */
287 /* Define to 1 if you have the <minix/config.h> header file. */
288 #undef HAVE_MINIX_CONFIG_H
290 /* Define to 1 if <limits.h> defines the MIN and MAX macros. */
291 #undef HAVE_MINMAX_IN_LIMITS_H
293 /* Define to 1 if <sys/param.h> defines the MIN and MAX macros. */
294 #undef HAVE_MINMAX_IN_SYS_PARAM_H
296 /* Define to 1 on MSVC platforms that have the "invalid parameter handler"
298 #undef HAVE_MSVC_INVALID_PARAMETER_HANDLER
300 /* Define to 1 if you have the <sdkddkver.h> header file. */
301 #undef HAVE_SDKDDKVER_H
303 /* Define to 1 if you have the `setdtablesize' function. */
304 #undef HAVE_SETDTABLESIZE
306 /* Define to 1 if 'sig_atomic_t' is a signed integer type. */
307 #undef HAVE_SIGNED_SIG_ATOMIC_T
309 /* Define to 1 if 'wchar_t' is a signed integer type. */
310 #undef HAVE_SIGNED_WCHAR_T
312 /* Define to 1 if 'wint_t' is a signed integer type. */
313 #undef HAVE_SIGNED_WINT_T
315 /* Define to 1 if you have the <stdckdint.h> header file. */
316 #undef HAVE_STDCKDINT_H
318 /* Define to 1 if you have the <stdint.h> header file. */
321 /* Define to 1 if you have the <stdio.h> header file. */
324 /* Define to 1 if you have the <stdlib.h> header file. */
327 /* Define to 1 if you have the <strings.h> header file. */
328 #undef HAVE_STRINGS_H
330 /* Define to 1 if you have the <string.h> header file. */
333 /* Define to 1 if `st_atimensec' is a member of `struct stat'. */
334 #undef HAVE_STRUCT_STAT_ST_ATIMENSEC
336 /* Define to 1 if `st_atimespec.tv_nsec' is a member of `struct stat'. */
337 #undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC
339 /* Define to 1 if `st_atim.st__tim.tv_nsec' is a member of `struct stat'. */
340 #undef HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC
342 /* Define to 1 if `st_atim.tv_nsec' is a member of `struct stat'. */
343 #undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
345 /* Define to 1 if `st_birthtimensec' is a member of `struct stat'. */
346 #undef HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC
348 /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */
349 #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC
351 /* Define to 1 if `st_birthtim.tv_nsec' is a member of `struct stat'. */
352 #undef HAVE_STRUCT_STAT_ST_BIRTHTIM_TV_NSEC
354 /* Define to 1 if you have the `strverscmp' function. */
355 #undef HAVE_STRVERSCMP
357 /* Define to 1 if you have the `symlink' function. */
360 /* Define to 1 if you have the <sys/bitypes.h> header file. */
361 #undef HAVE_SYS_BITYPES_H
363 /* Define to 1 if you have the <sys/cdefs.h> header file. */
364 #undef HAVE_SYS_CDEFS_H
366 /* Define to 1 if you have the <sys/inttypes.h> header file. */
367 #undef HAVE_SYS_INTTYPES_H
369 /* Define to 1 if you have the <sys/param.h> header file. */
370 #undef HAVE_SYS_PARAM_H
372 /* Define to 1 if you have the <sys/socket.h> header file. */
373 #undef HAVE_SYS_SOCKET_H
375 /* Define to 1 if you have the <sys/stat.h> header file. */
376 #undef HAVE_SYS_STAT_H
378 /* Define to 1 if you have the <sys/time.h> header file. */
379 #undef HAVE_SYS_TIME_H
381 /* Define to 1 if you have the <sys/types.h> header file. */
382 #undef HAVE_SYS_TYPES_H
384 /* Define to 1 if you have the `timespec_get' function. */
385 #undef HAVE_TIMESPEC_GET
387 /* Define to 1 if you have the <unistd.h> header file. */
390 /* Define to 1 if the system has the type 'unsigned long long int'. */
391 #undef HAVE_UNSIGNED_LONG_LONG_INT
393 /* Define to 1 or 0, depending whether the compiler supports simple visibility
395 #undef HAVE_VISIBILITY
397 /* Define to 1 if you have the <wchar.h> header file. */
400 /* Define if you have the 'wchar_t' type. */
403 /* Define to 1 if you have the <winsock2.h> header file. */
404 #undef HAVE_WINSOCK2_H
406 /* Define if you have the 'wint_t' type. */
409 /* Define to 1 if O_NOATIME works. */
410 #undef HAVE_WORKING_O_NOATIME
412 /* Define to 1 if O_NOFOLLOW works. */
413 #undef HAVE_WORKING_O_NOFOLLOW
415 /* Define to 1 if the system has the type `_Bool'. */
418 /* Define to 1 if you have the `_ftelli64' function. */
419 #undef HAVE__FTELLI64
421 /* Define to 1 if you have the `_set_invalid_parameter_handler' function. */
422 #undef HAVE__SET_INVALID_PARAMETER_HANDLER
424 /* Define to 1 if ctype.h defines __header_inline. */
425 #undef HAVE___HEADER_INLINE
427 /* Please see the Gnulib manual for how to use these macros.
429 Suppress extern inline with HP-UX cc, as it appears to be broken; see
430 <https://lists.gnu.org/r/bug-texinfo/2013-02/msg00030.html>.
432 Suppress extern inline with Sun C in standards-conformance mode, as it
433 mishandles inline functions that call each other. E.g., for 'inline void f
434 (void) { } inline void g (void) { f (); }', c99 incorrectly complains
435 'reference to static identifier "f" in extern inline function'.
436 This bug was observed with Oracle Developer Studio 12.6
437 (Sun C 5.15 SunOS_sparc 2017/05/30).
439 Suppress extern inline (with or without __attribute__ ((__gnu_inline__)))
440 on configurations that mistakenly use 'static inline' to implement
441 functions or macros in standard C headers like <ctype.h>. For example,
442 if isdigit is mistakenly implemented via a static inline function,
443 a program containing an extern inline function that calls isdigit
444 may not work since the C standard prohibits extern inline functions
445 from calling static functions (ISO C 99 section 6.7.4.(3).
446 This bug is known to occur on:
448 OS X 10.8 and earlier; see:
449 https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html
452 http://muscles.dragonflybsd.org/bulk/clang-master-potential/20141111_102002/logs/ah-tty-0.3.12.log
455 https://lists.gnu.org/r/bug-gnulib/2014-07/msg00104.html
457 OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and
458 for clang but remains for g++; see <https://trac.macports.org/ticket/41033>.
459 Assume DragonFly and FreeBSD will be similar.
461 GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
462 inline semantics, unless -fgnu89-inline is used. It defines a macro
463 __GNUC_STDC_INLINE__ to indicate this situation or a macro
464 __GNUC_GNU_INLINE__ to indicate the opposite situation.
465 GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline
466 semantics but warns, unless -fgnu89-inline is used:
467 warning: C99 inline functions are not supported; using GNU89
468 warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute
469 It defines a macro __GNUC_GNU_INLINE__ to indicate this situation.
471 #if (((defined __APPLE__ && defined __MACH__) \
472 || defined __DragonFly__ || defined __FreeBSD__) \
473 && (defined HAVE___HEADER_INLINE \
474 ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \
475 && ! defined __clang__) \
476 : ((! defined _DONT_USE_CTYPE_INLINE_ \
477 && (defined __GNUC__ || defined __cplusplus)) \
478 || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \
479 && defined __GNUC__ && ! defined __cplusplus))))
480 # define _GL_EXTERN_INLINE_STDHEADER_BUG
483 ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
484 : (199901L <= __STDC_VERSION__ \
485 && !defined __HP_cc \
487 && !(defined __SUNPRO_C && __STDC__))) \
488 && !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
489 # define _GL_INLINE inline
490 # define _GL_EXTERN_INLINE extern inline
491 # define _GL_EXTERN_INLINE_IN_USE
492 #elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \
493 && !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
494 # if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__
495 /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */
496 # define _GL_INLINE extern inline __attribute__ ((__gnu_inline__))
498 # define _GL_INLINE extern inline
500 # define _GL_EXTERN_INLINE extern
501 # define _GL_EXTERN_INLINE_IN_USE
503 # define _GL_INLINE _GL_UNUSED static
504 # define _GL_EXTERN_INLINE _GL_UNUSED static
507 /* In GCC 4.6 (inclusive) to 5.1 (exclusive),
508 suppress bogus "no previous prototype for 'FOO'"
509 and "no previous declaration for 'FOO'" diagnostics,
510 when FOO is an inline function in the header; see
511 <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113> and
512 <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63877>. */
513 #if __GNUC__ == 4 && 6 <= __GNUC_MINOR__
514 # if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
515 # define _GL_INLINE_HEADER_CONST_PRAGMA
517 # define _GL_INLINE_HEADER_CONST_PRAGMA \
518 _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
520 # define _GL_INLINE_HEADER_BEGIN \
521 _Pragma ("GCC diagnostic push") \
522 _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \
523 _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \
524 _GL_INLINE_HEADER_CONST_PRAGMA
525 # define _GL_INLINE_HEADER_END \
526 _Pragma ("GCC diagnostic pop")
528 # define _GL_INLINE_HEADER_BEGIN
529 # define _GL_INLINE_HEADER_END
532 /* Define to 1 if the compiler supports the keyword '__inline'. */
535 /* Define to 1 if lseek does not detect pipes. */
536 #undef LSEEK_PIPE_BROKEN
538 /* Define to the sub-directory where libtool stores uninstalled libraries. */
541 /* If malloc(0) is != NULL, define this to 1. Otherwise define this to 0. */
542 #undef MALLOC_0_IS_NONNULL
544 /* Use GNU style printf and scanf. */
545 #ifndef __USE_MINGW_ANSI_STDIO
546 # undef __USE_MINGW_ANSI_STDIO
550 /* Define to 1 if open() fails to recognize a trailing slash. */
551 #undef OPEN_TRAILING_SLASH_BUG
553 /* Name of package */
556 /* Define to the address where bug reports for this package should be sent. */
557 #undef PACKAGE_BUGREPORT
559 /* Define to the full name of this package. */
562 /* String identifying the packager of this software */
563 #undef PACKAGE_PACKAGER
565 /* Packager info for bug reports (URL/e-mail/...) */
566 #undef PACKAGE_PACKAGER_BUG_REPORTS
568 /* Packager-specific version information */
569 #undef PACKAGE_PACKAGER_VERSION
571 /* Define to the full name and version of this package. */
572 #undef PACKAGE_STRING
574 /* Define to the one symbol short name of this package. */
575 #undef PACKAGE_TARNAME
577 /* Define to the home page for this package. */
580 /* Define to the version of this package. */
581 #undef PACKAGE_VERSION
583 /* Define to the type that is the result of default argument promotions of
585 #undef PROMOTED_MODE_T
587 /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
589 #undef PTRDIFF_T_SUFFIX
591 /* Define to 1 if stat needs help when passed a file name with a trailing
593 #undef REPLACE_FUNC_STAT_FILE
595 /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
597 #undef SIG_ATOMIC_T_SUFFIX
599 /* The size of `unsigned int', as computed by sizeof. */
600 #undef SIZEOF_UNSIGNED_INT
602 /* The size of `unsigned long int', as computed by sizeof. */
603 #undef SIZEOF_UNSIGNED_LONG_INT
605 /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
609 /* If using the C implementation of alloca, define if you know the
610 direction of stack growth for your system; otherwise it will be
611 automatically deduced at runtime.
612 STACK_DIRECTION > 0 => grows toward higher addresses
613 STACK_DIRECTION < 0 => grows toward lower addresses
614 STACK_DIRECTION = 0 => direction of growth unknown */
615 #undef STACK_DIRECTION
617 /* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
618 #undef STAT_MACROS_BROKEN
620 /* Define to 1 if all of the C90 standard headers exist (not just the ones
621 required in a freestanding environment). This macro is provided for
622 backward compatibility; new code need not use it. */
625 /* Define to 1 if the type of the st_atim member of a struct stat is struct
627 #undef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC
629 /* Enable extensions on AIX 3, Interix. */
633 /* Enable general extensions on macOS. */
634 #ifndef _DARWIN_C_SOURCE
635 # undef _DARWIN_C_SOURCE
637 /* Enable general extensions on Solaris. */
638 #ifndef __EXTENSIONS__
639 # undef __EXTENSIONS__
641 /* Enable GNU extensions on systems that have them. */
645 /* Enable X/Open compliant socket functions that do not require linking
646 with -lxnet on HP-UX 11.11. */
647 #ifndef _HPUX_ALT_XOPEN_SOCKET_API
648 # undef _HPUX_ALT_XOPEN_SOCKET_API
650 /* Identify the host operating system as Minix.
651 This macro does not affect the system headers' behavior.
652 A future release of Autoconf may stop defining this macro. */
656 /* Enable general extensions on NetBSD.
657 Enable NetBSD compatibility extensions on Minix. */
658 #ifndef _NETBSD_SOURCE
659 # undef _NETBSD_SOURCE
661 /* Enable OpenBSD compatibility extensions on NetBSD.
662 Oddly enough, this does nothing on OpenBSD. */
663 #ifndef _OPENBSD_SOURCE
664 # undef _OPENBSD_SOURCE
666 /* Define to 1 if needed for POSIX-compatible behavior. */
667 #ifndef _POSIX_SOURCE
668 # undef _POSIX_SOURCE
670 /* Define to 2 if needed for POSIX-compatible behavior. */
671 #ifndef _POSIX_1_SOURCE
672 # undef _POSIX_1_SOURCE
674 /* Enable POSIX-compatible threading on Solaris. */
675 #ifndef _POSIX_PTHREAD_SEMANTICS
676 # undef _POSIX_PTHREAD_SEMANTICS
678 /* Enable extensions specified by ISO/IEC TS 18661-5:2014. */
679 #ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
680 # undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
682 /* Enable extensions specified by ISO/IEC TS 18661-1:2014. */
683 #ifndef __STDC_WANT_IEC_60559_BFP_EXT__
684 # undef __STDC_WANT_IEC_60559_BFP_EXT__
686 /* Enable extensions specified by ISO/IEC TS 18661-2:2015. */
687 #ifndef __STDC_WANT_IEC_60559_DFP_EXT__
688 # undef __STDC_WANT_IEC_60559_DFP_EXT__
690 /* Enable extensions specified by ISO/IEC TS 18661-4:2015. */
691 #ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
692 # undef __STDC_WANT_IEC_60559_FUNCS_EXT__
694 /* Enable extensions specified by ISO/IEC TS 18661-3:2015. */
695 #ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
696 # undef __STDC_WANT_IEC_60559_TYPES_EXT__
698 /* Enable extensions specified by ISO/IEC TR 24731-2:2010. */
699 #ifndef __STDC_WANT_LIB_EXT2__
700 # undef __STDC_WANT_LIB_EXT2__
702 /* Enable extensions specified by ISO/IEC 24747:2009. */
703 #ifndef __STDC_WANT_MATH_SPEC_FUNCS__
704 # undef __STDC_WANT_MATH_SPEC_FUNCS__
706 /* Enable extensions on HP NonStop. */
707 #ifndef _TANDEM_SOURCE
708 # undef _TANDEM_SOURCE
710 /* Enable X/Open extensions. Define to 500 only if necessary
711 to make mbstate_t available. */
712 #ifndef _XOPEN_SOURCE
713 # undef _XOPEN_SOURCE
717 /* Version number of package */
720 /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
722 #undef WCHAR_T_SUFFIX
724 /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
728 /* Number of bits in a file offset, on hosts where this is settable. */
729 #undef _FILE_OFFSET_BITS
731 /* True if the compiler says it groks GNU C version MAJOR.MINOR. */
732 #if defined __GNUC__ && defined __GNUC_MINOR__
733 # define _GL_GNUC_PREREQ(major, minor) \
734 ((major) < __GNUC__ + ((minor) <= __GNUC_MINOR__))
736 # define _GL_GNUC_PREREQ(major, minor) 0
740 /* Define to enable the declarations of ISO C 11 types and functions. */
741 #undef _ISOC11_SOURCE
743 /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
744 #undef _LARGEFILE_SOURCE
746 /* Define for large files, on AIX-style hosts. */
749 /* The _Noreturn keyword of C11. */
751 # if (defined __cplusplus \
752 && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \
753 || (defined _MSC_VER && 1900 <= _MSC_VER)) \
755 /* [[noreturn]] is not practically usable, because with it the syntax
756 extern _Noreturn void func (...);
757 would not be valid; such a declaration would only be valid with 'extern'
758 and '_Noreturn' swapped, or without the 'extern' keyword. However, some
759 AIX system header files and several gnulib header files use precisely
760 this syntax with 'extern'. */
761 # define _Noreturn [[noreturn]]
762 # elif ((!defined __cplusplus || defined __clang__) \
763 && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
764 || (!defined __STRICT_ANSI__ \
765 && (_GL_GNUC_PREREQ (4, 7) \
766 || (defined __apple_build_version__ \
767 ? 6000000 <= __apple_build_version__ \
768 : 3 < __clang_major__ + (5 <= __clang_minor__))))))
769 /* _Noreturn works as-is. */
770 # elif _GL_GNUC_PREREQ (2, 8) || defined __clang__ || 0x5110 <= __SUNPRO_C
771 # define _Noreturn __attribute__ ((__noreturn__))
772 # elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0)
773 # define _Noreturn __declspec (noreturn)
780 /* Number of bits in a timestamp, on hosts where this is settable. */
783 /* For standard stat data types on VMS. */
786 /* Define to rpl_ if the getopt replacement functions and variables should be
788 #undef __GETOPT_PREFIX
790 /* For 64-bit time_t on 32-bit mingw. */
791 #undef __MINGW_USE_VC2005_COMPAT
793 /* Define to 1 if the system <stdint.h> predates C++11. */
794 #undef __STDC_CONSTANT_MACROS
796 /* Define to 1 if the system <stdint.h> predates C++11. */
797 #undef __STDC_LIMIT_MACROS
799 /* Define to 1 if C does not support variable-length arrays, and if the
800 compiler does not already define this. */
801 #undef __STDC_NO_VLA__
803 /* The _GL_ASYNC_SAFE marker should be attached to functions that are
804 signal handlers (for signals other than SIGABRT, SIGPIPE) or can be
805 invoked from such signal handlers. Such functions have some restrictions:
806 * All functions that it calls should be marked _GL_ASYNC_SAFE as well,
807 or should be listed as async-signal-safe in POSIX
808 <https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_04>
809 section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in
810 particular, are NOT async-signal-safe.
811 * All memory locations (variables and struct fields) that these functions
812 access must be marked 'volatile'. This holds for both read and write
813 accesses. Otherwise the compiler might optimize away stores to and
814 reads from such locations that occur in the program, depending on its
815 data flow analysis. For example, when the program contains a loop
816 that is intended to inspect a variable set from within a signal handler
817 while (!signal_occurred)
819 the compiler is allowed to transform this into an endless loop if the
820 variable 'signal_occurred' is not declared 'volatile'.
821 Additionally, recall that:
822 * A signal handler should not modify errno (except if it is a handler
823 for a fatal signal and ends by raising the same signal again, thus
824 provoking the termination of the process). If it invokes a function
825 that may clobber errno, it needs to save and restore the value of
827 #define _GL_ASYNC_SAFE
831 #if (defined __has_attribute \
832 && (!defined __clang_minor__ \
833 || (defined __apple_build_version__ \
834 ? 6000000 <= __apple_build_version__ \
835 : 3 < __clang_major__ + (5 <= __clang_minor__))))
836 # define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__)
838 # define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr
839 # define _GL_ATTR_alloc_size _GL_GNUC_PREREQ (4, 3)
840 # define _GL_ATTR_always_inline _GL_GNUC_PREREQ (3, 2)
841 # define _GL_ATTR_artificial _GL_GNUC_PREREQ (4, 3)
842 # define _GL_ATTR_cold _GL_GNUC_PREREQ (4, 3)
843 # define _GL_ATTR_const _GL_GNUC_PREREQ (2, 95)
844 # define _GL_ATTR_deprecated _GL_GNUC_PREREQ (3, 1)
845 # define _GL_ATTR_diagnose_if 0
846 # define _GL_ATTR_error _GL_GNUC_PREREQ (4, 3)
847 # define _GL_ATTR_externally_visible _GL_GNUC_PREREQ (4, 1)
848 # define _GL_ATTR_fallthrough _GL_GNUC_PREREQ (7, 0)
849 # define _GL_ATTR_format _GL_GNUC_PREREQ (2, 7)
850 # define _GL_ATTR_leaf _GL_GNUC_PREREQ (4, 6)
851 # define _GL_ATTR_malloc _GL_GNUC_PREREQ (3, 0)
853 # define _GL_ATTR_may_alias 0
855 # define _GL_ATTR_may_alias _GL_GNUC_PREREQ (3, 3)
857 # define _GL_ATTR_noinline _GL_GNUC_PREREQ (3, 1)
858 # define _GL_ATTR_nonnull _GL_GNUC_PREREQ (3, 3)
859 # define _GL_ATTR_nonstring _GL_GNUC_PREREQ (8, 0)
860 # define _GL_ATTR_nothrow _GL_GNUC_PREREQ (3, 3)
861 # define _GL_ATTR_packed _GL_GNUC_PREREQ (2, 7)
862 # define _GL_ATTR_pure _GL_GNUC_PREREQ (2, 96)
863 # define _GL_ATTR_returns_nonnull _GL_GNUC_PREREQ (4, 9)
864 # define _GL_ATTR_sentinel _GL_GNUC_PREREQ (4, 0)
865 # define _GL_ATTR_unused _GL_GNUC_PREREQ (2, 7)
866 # define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4)
869 #ifdef __has_c_attribute
870 # if ((defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710 \
871 && _GL_GNUC_PREREQ (4, 6))
872 # pragma GCC diagnostic ignored "-Wpedantic"
874 # define _GL_HAS_C_ATTRIBUTE(attr) __has_c_attribute (__##attr##__)
876 # define _GL_HAS_C_ATTRIBUTE(attr) 0
880 /* _GL_ATTRIBUTE_ALLOC_SIZE ((N)) declares that the Nth argument of the function
881 is the size of the returned memory block.
882 _GL_ATTRIBUTE_ALLOC_SIZE ((M, N)) declares that the Mth argument multiplied
883 by the Nth argument of the function is the size of the returned memory block.
885 /* Applies to: function, pointer to function, function types. */
886 #if _GL_HAS_ATTRIBUTE (alloc_size)
887 # define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args))
889 # define _GL_ATTRIBUTE_ALLOC_SIZE(args)
892 /* _GL_ATTRIBUTE_ALWAYS_INLINE tells that the compiler should always inline the
893 function and report an error if it cannot do so. */
894 /* Applies to: function. */
895 #if _GL_HAS_ATTRIBUTE (always_inline)
896 # define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__))
898 # define _GL_ATTRIBUTE_ALWAYS_INLINE
901 /* _GL_ATTRIBUTE_ARTIFICIAL declares that the function is not important to show
902 in stack traces when debugging. The compiler should omit the function from
904 /* Applies to: function. */
905 #if _GL_HAS_ATTRIBUTE (artificial)
906 # define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__))
908 # define _GL_ATTRIBUTE_ARTIFICIAL
911 /* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */
912 /* Applies to: functions. */
913 /* Avoid __attribute__ ((cold)) on MinGW; see thread starting at
914 <https://lists.gnu.org/r/emacs-devel/2019-04/msg01152.html>.
915 Also, Oracle Studio 12.6 requires 'cold' not '__cold__'. */
916 #if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__
918 # define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__))
920 # define _GL_ATTRIBUTE_COLD __attribute__ ((cold))
923 # define _GL_ATTRIBUTE_COLD
926 /* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate
927 calls to the function with the same arguments.
928 This attribute is safe for a function that neither depends on nor affects
929 observable state, and always returns exactly once - e.g., does not loop
930 forever, and does not call longjmp.
931 (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */
932 /* Applies to: functions. */
933 #if _GL_HAS_ATTRIBUTE (const)
934 # define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
936 # define _GL_ATTRIBUTE_CONST
939 /* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers
940 that can be freed by passing them as the Ith argument to the
942 _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that
943 can be freed via 'free'; it can be used only after declaring 'free'. */
944 /* Applies to: functions. Cannot be used on inline functions. */
945 #if _GL_GNUC_PREREQ (11, 0)
946 # define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i)))
948 # define _GL_ATTRIBUTE_DEALLOC(f, i)
950 /* If gnulib's <string.h> or <wchar.h> has already defined this macro, continue
951 to use this earlier definition, since <stdlib.h> may not have been included
953 #ifndef _GL_ATTRIBUTE_DEALLOC_FREE
954 # define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1)
957 /* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated.
958 The compiler may warn if the entity is used. */
960 - function, variable,
961 - struct, union, struct/union member,
962 - enumeration, enumeration item,
964 in C++ also: namespace, class, template specialization. */
965 #if _GL_HAS_C_ATTRIBUTE (deprecated)
966 # define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]]
967 #elif _GL_HAS_ATTRIBUTE (deprecated)
968 # define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__))
970 # define _GL_ATTRIBUTE_DEPRECATED
973 /* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and
974 the function call is not optimized away.
975 _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and
976 the function call is not optimized away. */
977 /* Applies to: functions. */
978 #if _GL_HAS_ATTRIBUTE (error)
979 # define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg)))
980 # define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg)))
981 #elif _GL_HAS_ATTRIBUTE (diagnose_if)
982 # define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error")))
983 # define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning")))
985 # define _GL_ATTRIBUTE_ERROR(msg)
986 # define _GL_ATTRIBUTE_WARNING(msg)
989 /* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain
990 visible to debuggers etc., even with '-fwhole-program'. */
991 /* Applies to: functions, variables. */
992 #if _GL_HAS_ATTRIBUTE (externally_visible)
993 # define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible))
995 # define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE
998 /* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if
999 the control flow falls through to the immediately following 'case' or
1000 'default' label. The compiler should not warn in this case. */
1001 /* Applies to: Empty statement (;), inside a 'switch' statement. */
1002 /* Always expands to something. */
1003 #if _GL_HAS_C_ATTRIBUTE (fallthrough)
1004 # define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]]
1005 #elif _GL_HAS_ATTRIBUTE (fallthrough)
1006 # define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__))
1008 # define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0)
1011 /* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK))
1012 declares that the STRING-INDEXth function argument is a format string of
1013 style ARCHETYPE, which is one of:
1016 strftime, gnu_strftime,
1018 or the same thing prefixed and suffixed with '__'.
1019 If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK
1020 are suitable for the format string. */
1021 /* Applies to: functions. */
1022 #if _GL_HAS_ATTRIBUTE (format)
1023 # define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
1025 # define _GL_ATTRIBUTE_FORMAT(spec)
1028 /* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other
1029 compilation unit, it executes code from that unit only by return or by
1030 exception handling. This declaration lets the compiler optimize that unit
1031 more aggressively. */
1032 /* Applies to: functions. */
1033 #if _GL_HAS_ATTRIBUTE (leaf)
1034 # define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__))
1036 # define _GL_ATTRIBUTE_LEAF
1039 /* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly
1040 allocated memory. */
1041 /* Applies to: functions. */
1042 #if _GL_HAS_ATTRIBUTE (malloc)
1043 # define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
1045 # define _GL_ATTRIBUTE_MALLOC
1048 /* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the
1049 same storage as pointers to other types. Thus this declaration disables
1050 strict aliasing optimization. */
1051 /* Applies to: types. */
1052 /* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */
1053 #if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C
1054 # define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__))
1056 # define _GL_ATTRIBUTE_MAY_ALIAS
1059 /* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if
1060 the entity is not used. The compiler should not warn if the entity is not
1063 - function, variable,
1064 - struct, union, struct/union member,
1065 - enumeration, enumeration item,
1067 in C++ also: class. */
1068 /* In C++ and C2x, this is spelled [[__maybe_unused__]].
1069 GCC's syntax is __attribute__ ((__unused__)).
1070 clang supports both syntaxes. */
1071 #if _GL_HAS_C_ATTRIBUTE (maybe_unused)
1072 # define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]]
1074 # define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED
1076 /* Alternative spelling of this macro, for convenience. */
1077 #define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED
1078 /* Earlier spellings of this macro. */
1079 #define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED
1081 /* _GL_ATTRIBUTE_NODISCARD declares that the caller of the function should not
1082 discard the return value. The compiler may warn if the caller does not use
1083 the return value, unless the caller uses something like ignore_value. */
1084 /* Applies to: function, enumeration, class. */
1085 #if _GL_HAS_C_ATTRIBUTE (nodiscard)
1086 # define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]]
1087 #elif _GL_HAS_ATTRIBUTE (warn_unused_result)
1088 # define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__))
1090 # define _GL_ATTRIBUTE_NODISCARD
1093 /* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the
1095 /* Applies to: functions. */
1096 #if _GL_HAS_ATTRIBUTE (noinline)
1097 # define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__))
1099 # define _GL_ATTRIBUTE_NOINLINE
1102 /* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,...
1104 _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be
1106 /* Applies to: functions. */
1107 #if _GL_HAS_ATTRIBUTE (nonnull)
1108 # define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args))
1110 # define _GL_ATTRIBUTE_NONNULL(args)
1113 /* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is
1114 not meant to be NUL-terminated. */
1115 /* Applies to: struct/union members and variables that are arrays of element
1116 type '[[un]signed] char'. */
1117 #if _GL_HAS_ATTRIBUTE (nonstring)
1118 # define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__))
1120 # define _GL_ATTRIBUTE_NONSTRING
1123 /* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */
1125 /* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions.
1127 /* Applies to: functions. */
1128 #if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus
1129 # define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__))
1131 # define _GL_ATTRIBUTE_NOTHROW
1134 /* _GL_ATTRIBUTE_PACKED declares:
1135 For struct members: The member has the smallest possible alignment.
1136 For struct, union, class: All members have the smallest possible alignment,
1137 minimizing the memory required. */
1138 /* Applies to: struct members, struct, union,
1139 in C++ also: class. */
1140 #if _GL_HAS_ATTRIBUTE (packed)
1141 # define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__))
1143 # define _GL_ATTRIBUTE_PACKED
1146 /* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate
1147 calls to the function with the same arguments if observable state is not
1148 changed between calls.
1149 This attribute is safe for a function that does not affect
1150 observable state, and always returns exactly once.
1151 (This attribute is looser than _GL_ATTRIBUTE_CONST.) */
1152 /* Applies to: functions. */
1153 #if _GL_HAS_ATTRIBUTE (pure)
1154 # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
1156 # define _GL_ATTRIBUTE_PURE
1159 /* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is
1160 a non-NULL pointer. */
1161 /* Applies to: functions. */
1162 #if _GL_HAS_ATTRIBUTE (returns_nonnull)
1163 # define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__))
1165 # define _GL_ATTRIBUTE_RETURNS_NONNULL
1168 /* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a
1169 trailing NULL argument.
1170 _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99).
1171 _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */
1172 /* Applies to: functions. */
1173 #if _GL_HAS_ATTRIBUTE (sentinel)
1174 # define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos))
1176 # define _GL_ATTRIBUTE_SENTINEL(pos)
1179 /* A helper macro. Don't use it directly. */
1180 #if _GL_HAS_ATTRIBUTE (unused)
1181 # define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
1183 # define _GL_ATTRIBUTE_UNUSED
1187 /* _GL_UNUSED_LABEL; declares that it is not a programming mistake if the
1188 immediately preceding label is not used. The compiler should not warn
1189 if the label is not used. */
1190 /* Applies to: label (both in C and C++). */
1191 /* Note that g++ < 4.5 does not support the '__attribute__ ((__unused__)) ;'
1192 syntax. But clang does. */
1193 #if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__
1194 # define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED
1196 # define _GL_UNUSED_LABEL
1200 /* A replacement for va_copy, if needed. */
1201 #define gl_va_copy(a,b) ((a) = (b))
1203 /* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
1204 the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
1205 earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
1206 __APPLE__ && __MACH__ test for Mac OS X.
1207 __APPLE_CC__ tests for the Apple compiler and its version.
1208 __STDC_VERSION__ tests for the C99 mode. */
1209 #if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
1210 # define __GNUC_STDC_INLINE__ 1
1213 /* _GL_CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where
1214 n1 and n2 are expressions without side effects, that evaluate to real
1215 numbers (excluding NaN).
1220 The naïve code (n1 > n2 ? 1 : n1 < n2 ? -1 : 0) produces a conditional
1221 jump with nearly all GCC versions up to GCC 10.
1222 This variant (n1 < n2 ? -1 : n1 > n2) produces a conditional with many
1223 GCC versions up to GCC 9.
1224 The better code (n1 > n2) - (n1 < n2) from Hacker's Delight § 2-9
1225 avoids conditional jumps in all GCC versions >= 3.4. */
1226 #define _GL_CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2)))
1229 /* Define to `int' if <sys/types.h> does not define. */
1232 /* Define to the type of st_nlink in struct stat, or a supertype. */
1235 /* Define as a signed integer type capable of holding a process identifier. */
1238 /* Define to the equivalent of the C99 'restrict' keyword, or to
1239 nothing if this is not supported. Do not define if restrict is
1240 supported only directly. */
1242 /* Work around a bug in older versions of Sun C++, which did not
1243 #define __restrict__ or support _Restrict or __restrict__
1244 even though the corresponding Sun C compiler ended up with
1245 "#define restrict _Restrict" or "#define restrict __restrict__"
1246 in the previous line. This workaround can be removed once
1247 we assume Oracle Developer Studio 12.5 (2016) or later. */
1248 #if defined __SUNPRO_CC && !defined __RESTRICT && !defined __restrict__
1250 # define __restrict__
1253 /* Define to `unsigned int' if <sys/types.h> does not define. */
1256 /* Define as a signed type of the same size as size_t. */
1259 /* Define as a macro for copying va_list variables. */