From 61402fd68972a73caa984ab03199bf05e18b73e5 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 5 Jan 2001 05:52:11 +0000 Subject: [PATCH] Update. 2000-07-31 Bruno Haible * intl/plural.y: Include config.h. Needed to define 'inline' away for C compilers that don't support it. (yylex): Don't use gcc specific case range syntax. * intl/loadmsgcat.c (INIT_GERMANIC_PLURAL): New macro, for old compilers. 2000-10-12 Bruno Haible * intl/finddomain.c: Remove unneeded includes. 2000-10-12 Bruno Haible * intl/localealias.c (memcpy): Return first argument, just like the real memcpy function does. * intl/bindtextdom.c (memcpy): Likewise. * intl/finddomain.c (memcpy): Likewise. * intl/l10nflist.c (memcpy): Likewise. * intl/textdomain.c (memcpy): Likewise. From Paul Eggert . --- ChangeLog | 22 ++++++++++++++++++++++ intl/bindtextdom.c | 2 +- intl/finddomain.c | 4 +--- intl/l10nflist.c | 2 +- intl/loadmsgcat.c | 37 ++++++++++++++++++++++++++++++++++++- intl/localealias.c | 2 +- intl/plural.y | 7 ++++++- intl/textdomain.c | 2 +- 8 files changed, 69 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 10ca84c..7e6f2c7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,25 @@ +2000-07-31 Bruno Haible + + * intl/plural.y: Include config.h. Needed to define 'inline' away for + C compilers that don't support it. + (yylex): Don't use gcc specific case range syntax. + * intl/loadmsgcat.c (INIT_GERMANIC_PLURAL): New macro, for old + compilers. + +2000-10-12 Bruno Haible + + * intl/finddomain.c: Remove unneeded includes. + +2000-10-12 Bruno Haible + + * intl/localealias.c (memcpy): Return first argument, just like the + real memcpy function does. + * intl/bindtextdom.c (memcpy): Likewise. + * intl/finddomain.c (memcpy): Likewise. + * intl/l10nflist.c (memcpy): Likewise. + * intl/textdomain.c (memcpy): Likewise. + From Paul Eggert . + 2001-01-03 Jakub Jelinek * resolv/resolv.h (struct __res_state): Add nsinit field. diff --git a/intl/bindtextdom.c b/intl/bindtextdom.c index 7de81c6..45000a6 100644 --- a/intl/bindtextdom.c +++ b/intl/bindtextdom.c @@ -35,7 +35,7 @@ void free (); #else # include # ifndef memcpy -# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) +# define memcpy(Dst, Src, Num) (bcopy (Src, Dst, Num), (Dst)) # endif #endif diff --git a/intl/finddomain.c b/intl/finddomain.c index dc215ad..1109c5e 100644 --- a/intl/finddomain.c +++ b/intl/finddomain.c @@ -21,8 +21,6 @@ # include #endif -#include -#include #include #include @@ -41,7 +39,7 @@ void free (); #else # include # ifndef memcpy -# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) +# define memcpy(Dst, Src, Num) (bcopy (Src, Dst, Num), (Dst)) # endif #endif diff --git a/intl/l10nflist.c b/intl/l10nflist.c index 4cd6615..2017311 100644 --- a/intl/l10nflist.c +++ b/intl/l10nflist.c @@ -33,7 +33,7 @@ #else # include # ifndef memcpy -# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) +# define memcpy(Dst, Src, Num) (bcopy (Src, Dst, Num), (Dst)) # endif #endif #if !HAVE_STRCHR && !defined _LIBC diff --git a/intl/loadmsgcat.c b/intl/loadmsgcat.c index 6b09815..4e792d2 100644 --- a/intl/loadmsgcat.c +++ b/intl/loadmsgcat.c @@ -85,8 +85,11 @@ cached by one of GCC's features. */ int _nl_msg_cat_cntr; +#if defined __GNUC__ \ + || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) + /* These structs are the constant expression for the germanic plural - form determination. */ + form determination. It represents the expression "n != 1". */ static const struct expression plvar = { .operation = var, @@ -111,6 +114,37 @@ static struct expression germanic_plural = } }; +#define INIT_GERMANIC_PLURAL() + +#else + +/* For compilers without support for ISO C 99 struct/union initializers: + Initialization at run-time. */ + +static struct expression plvar; +static struct expression plone; +static struct expression germanic_plural; + +static void +init_germanic_plural () +{ + if (plone.val.num == 0) + { + plvar.operation = var; + + plone.operation = num; + plone.val.num = 1; + + germanic_plural.operation = not_equal; + germanic_plural.val.args2.left = &plvar; + germanic_plural.val.args2.right = &plone; + } +} + +#define INIT_GERMANIC_PLURAL() init_germanic_plural () + +#endif + /* Load the message catalogs specified by FILENAME. If it is no valid message catalog do nothing. */ @@ -370,6 +404,7 @@ _nl_load_domain (domain_file) for `one', the plural form otherwise. Yes, this is also what English is using since English is a Germanic language. */ no_plural: + INIT_GERMANIC_PLURAL (); domain->plural = &germanic_plural; domain->nplurals = 2; } diff --git a/intl/localealias.c b/intl/localealias.c index 426db49..63e8069 100644 --- a/intl/localealias.c +++ b/intl/localealias.c @@ -64,7 +64,7 @@ void free (); #else # include # ifndef memcpy -# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) +# define memcpy(Dst, Src, Num) (bcopy (Src, Dst, Num), (Dst)) # endif #endif #if !HAVE_STRCHR && !defined _LIBC diff --git a/intl/plural.y b/intl/plural.y index c13dbaf..32ad751 100644 --- a/intl/plural.y +++ b/intl/plural.y @@ -18,6 +18,10 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#ifdef HAVE_CONFIG_H +# include +#endif + #include #include #include "gettext.h" @@ -228,7 +232,8 @@ yylex (YYSTYPE *lval, const char **pexp) result = *exp++; switch (result) { - case '0' ... '9': + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': { unsigned long int n = exp[-1] - '0'; while (exp[0] >= '0' && exp[0] <= '9') diff --git a/intl/textdomain.c b/intl/textdomain.c index fe9f171..02f4a4b 100644 --- a/intl/textdomain.c +++ b/intl/textdomain.c @@ -29,7 +29,7 @@ #else # include # ifndef memcpy -# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) +# define memcpy(Dst, Src, Num) (bcopy (Src, Dst, Num), (Dst)) # endif #endif -- 2.7.4