]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
Portability fixes.
authorBruno Haible <bruno@clisp.org>
Mon, 31 Jul 2000 20:26:18 +0000 (20:26 +0000)
committerBruno Haible <bruno@clisp.org>
Mon, 31 Jul 2000 20:26:18 +0000 (20:26 +0000)
intl/ChangeLog
intl/loadmsgcat.c
intl/plural.y

index 1b332ccadad2f9ff31c3d0905eb72fba12388cc1..8ab9155fe747db3758b53668e28e15a7c251bd54 100644 (file)
@@ -1,3 +1,10 @@
+2000-07-31  Bruno Haible  <haible@clisp.cons.org>
+
+       * 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.
+       * loadmsgcat.y (INIT_GERMANIC_PLURAL): New macro, for old compilers.
+
 2000-07-28  Bruno Haible  <haible@clisp.cons.org>
 
        Simplification: In all cases where $(gnulocaledir) is used, it is
index 8b26ea7120c44b965e3e82479b3a261d6372b100..37af2d3a6691b2e79195ed0652b940a7d64a9a2e 100644 (file)
    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,
@@ -110,6 +113,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.  */
@@ -369,6 +403,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;
     }
index 9a1341bed476c5fa18c47f0b4e10f0b52f96523e..42aac280ee570fbb46d311518351dd7a1ecc6525 100644 (file)
    along with this program; if not, write to the Free Software Foundation,
    Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 #include <stdarg.h>
 #include <stdlib.h>
 #include "gettext.h"
@@ -218,7 +222,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')