diff options
author | Daiki Ueno <ueno@gnu.org> | 2016-05-24 12:18:07 +0900 |
---|---|---|
committer | Daiki Ueno <ueno@gnu.org> | 2016-05-25 15:25:27 +0900 |
commit | 77dde02ef05e63e0ae2b113546e8adb26a962e29 (patch) | |
tree | 2ce365c5afa8a77dd875517afd61bab89321216d | |
parent | 68ab0dafa99f1941b3ebb47b7cf969381e7310f4 (diff) | |
download | external_gettext-77dde02ef05e63e0ae2b113546e8adb26a962e29.zip external_gettext-77dde02ef05e63e0ae2b113546e8adb26a962e29.tar.gz external_gettext-77dde02ef05e63e0ae2b113546e8adb26a962e29.tar.bz2 |
intl: Pacify pre-C99 compilers
* gettext-runtime/intl/plural-exp.h (HAVE_STRUCT_INITIALIZER): New
macro, based on the check previously in plural-exp.c. Also add check
for __SUNPRO_C for Solaris Studio C compiler.
(GERMANIC_PLURAL): Define as 'struct expression' not 'const struct
expression' if struct/union initializers are not supported by the
compiler.
* gettext-runtime/intl/plural-exp.c: Use HAVE_STRUCT_INITIALIZER.
Reported by Dagobert Michelsen and investigated by pan7 in:
https://savannah.gnu.org/support/?108743
-rw-r--r-- | gettext-runtime/intl/plural-exp.c | 4 | ||||
-rw-r--r-- | gettext-runtime/intl/plural-exp.h | 14 |
2 files changed, 15 insertions, 3 deletions
diff --git a/gettext-runtime/intl/plural-exp.c b/gettext-runtime/intl/plural-exp.c index 7f37e54..b1445ff 100644 --- a/gettext-runtime/intl/plural-exp.c +++ b/gettext-runtime/intl/plural-exp.c @@ -25,9 +25,7 @@ #include "plural-exp.h" -#if (defined __GNUC__ && !(defined __APPLE_CC_ && __APPLE_CC__ > 1) \ - && !defined __cplusplus) \ - || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) +#if HAVE_STRUCT_INITIALIZER /* These structs are the constant expression for the germanic plural form determination. It represents the expression "n != 1". */ diff --git a/gettext-runtime/intl/plural-exp.h b/gettext-runtime/intl/plural-exp.h index 76b882a..6278b95 100644 --- a/gettext-runtime/intl/plural-exp.h +++ b/gettext-runtime/intl/plural-exp.h @@ -105,10 +105,24 @@ struct parse_args # define EXTRACT_PLURAL_EXPRESSION extract_plural_expression #endif +#if (defined __GNUC__ && !(defined __APPLE_CC_ && __APPLE_CC__ > 1) \ + && !defined __cplusplus) \ + || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) \ + || (defined __SUNPRO_C && 0x560 <= __SUNPRO_C \ + && !(defined __STDC__ && __STDC__ == 1)) +# define HAVE_STRUCT_INITIALIZER 1 +#else +# define HAVE_STRUCT_INITIALIZER 0 +#endif + extern void FREE_EXPRESSION (struct expression *exp) internal_function; extern int PLURAL_PARSE (struct parse_args *arg); +#if HAVE_STRUCT_INITIALIZER extern const struct expression GERMANIC_PLURAL attribute_hidden; +#else +extern struct expression GERMANIC_PLURAL attribute_hidden; +#endif extern void EXTRACT_PLURAL_EXPRESSION (const char *nullentry, const struct expression **pluralp, unsigned long int *npluralsp) |