diff options
author | Jim Meyering <jim@meyering.net> | 2005-01-03 18:43:09 +0000 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 2005-01-03 18:43:09 +0000 |
commit | 7f6d0aeb3ac198512be54ae9684ed26702446477 (patch) | |
tree | d45181963709b9bffd20fe21f961a1551a90be34 /src | |
parent | 5e37309f7a5ec851025c50f720853545c697cdf5 (diff) | |
download | coreutils-7f6d0aeb3ac198512be54ae9684ed26702446477.tar.xz |
If PRIdMAX, PRIoMAX, PRIuMAX, and PRIxMAX are
not all defined and either ULONG_MAX or ULLONG_MAX is not defined,
then fail at compile-time rather than let tools like od produce
invalid results at run time.
Diffstat (limited to 'src')
-rw-r--r-- | src/system.h | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/system.h b/src/system.h index 27aff00d7..9fd123812 100644 --- a/src/system.h +++ b/src/system.h @@ -368,28 +368,38 @@ initialize_exit_failure (int status) # include <stdint.h> #endif -#if ULONG_MAX < ULLONG_MAX -# define LONGEST_MODIFIER "ll" -#else -# define LONGEST_MODIFIER "l" -#endif #if PRI_MACROS_BROKEN # undef PRIdMAX # undef PRIoMAX # undef PRIuMAX # undef PRIxMAX #endif + +#if ULONG_MAX < ULLONG_MAX +# define LONGEST_MODIFIER "ll" +#else +# define LONGEST_MODIFIER "l" +#endif + #ifndef PRIdMAX # define PRIdMAX LONGEST_MODIFIER "d" +# defined USED_LONGEST_MODIFIER #endif #ifndef PRIoMAX # define PRIoMAX LONGEST_MODIFIER "o" +# defined USED_LONGEST_MODIFIER #endif #ifndef PRIuMAX # define PRIuMAX LONGEST_MODIFIER "u" +# defined USED_LONGEST_MODIFIER #endif #ifndef PRIxMAX # define PRIxMAX LONGEST_MODIFIER "x" +# defined USED_LONGEST_MODIFIER +#endif + +#if USED_LONGEST_MODIFIER && (!defined ULONG_MAX || !defined ULLONG_MAX) +# error "your PRI.MAX macros are broken and we don't work around it" #endif #include <ctype.h> |