about summary refs log tree commit diff
path: root/intl/plural.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2001-11-28 00:09:26 +0000
committerUlrich Drepper <drepper@redhat.com>2001-11-28 00:09:26 +0000
commit0555fccea74d63cce35ca7121688a4a6dce610ca (patch)
tree2b29fafa424bd97c187d21457e3c4c70f73e32cb /intl/plural.c
parent8a2072042b2b77e4e160d8ebcf99cdde370737ab (diff)
downloadglibc-0555fccea74d63cce35ca7121688a4a6dce610ca.tar.gz
glibc-0555fccea74d63cce35ca7121688a4a6dce610ca.tar.xz
glibc-0555fccea74d63cce35ca7121688a4a6dce610ca.zip
Update.
2001-03-04  Bruno Haible  <bruno@clisp.org>

	* intl/dcigettext.c (DCIGETTEXT): Increment path_max proportionally.

2001-10-31  Bruno Haible  <bruno@clisp.org>

	* intl/plural.y: Include <stddef.h>, needed for NULL with SunOS 4 cc.

2001-03-21  Bruno Haible  <bruno@clisp.org>

	* intl/dcigettext.c (_nl_state_lock): Mark as #ifdef _LIBC. AIX 3 xlc
	chokes on empty macro arguments.
	* intl/plural.y: Add #pragma for alloca on AIX 3.

2001-11-27  Ulrich Drepper  <drepper@redhat.com>

	* intl/dcigettext.c (guess_category_value): Only implement for
	glibc.  Otherwise rely on function _nl_locale_name which isn't
	present in the glibc sources.

2001-09-24  Bruno Haible  <bruno@clisp.org>

	* intl/loadmsgcat.c (_nl_init_domain_conv): Also enable
	transliteration when building on a glibc system but outside glibc.

2001-09-22  Bruno Haible  <bruno@clisp.org>

	* intl/plural-eval.c: New file, extracted from dcigettext.c.
	* intl/dcigettext.c (plural_eval): Remove function, moved to
	intl/plural-eval.c.
	(plural_lookup): Call PLURAL_EVAL instead of plural_eval.
	Include plural-eval.c.

2001-09-22  Bruno Haible  <bruno@clisp.org>

	* intl/plural-exp.c (EXTRACT_PLURAL_EXPRESSION): Reject numbers that
	don't start with a digit; nplurals must be positive.

2001-09-02  Bruno Haible  <bruno@clisp.org>

	* intl/plural-exp.h: New file, extracted from gettextP.h.
	* intl/plural-exp.c: New file, extracted from loadmsgcat.c.
	* intl/gettextP.h (struct expression, struct parse_args,
	__gettext_free_exp, __gettextparse): Move to plural-exp.h.
	* intl/loadmsgcat.c: Include plural-exp.h.
	(PLURAL_PARSE): Move macro to plural-exp.h.
	(plvar, plone, germanic_plural, INIT_GERMANIC_PLURAL): Move to
	plural-exp.c.
	(_nl_load_domain): Move plural handling code to plural-exp.c.  Call
	EXTRACT_PLURAL_EXPRESSION.
	(_nl_unload_domain): Update.
	* intl/dcigettext.c: Include plural-exp.h.
	* intl/plural.y: Include plural-exp.h, not gettextP.h.
	(FREE_EXPRESSION): Move macro to plural-exp.h.
	* intl/Makefile (routines): Add plural-exp.
	(distribute): Add plural-exp.h.

2001-07-28  Bruno Haible  <bruno@clisp.org>

	* intl/l10nflist.c (_nl_normalize_codeset): Cast isalnum, isalpha,
	isdigit, tolower argument to 'unsigned char'.
	* intl/loadmsgcat.c (_nl_load_domain): Cast isspace argument to
	'unsigned char'.
	* intl/localealias.c (read_alias_file): Cast isspace argument to
	'unsigned char'.

2001-10-20  Bruno Haible  <bruno@clisp.org>

	Assume strchr() exists. (Without it, intl/explodename.c wouldn't link
	anyway.)
	* intl/dcigettext.c (strchr): Remove fallback definition; it conflicts
	with the variable 'index' in plural_lookup.
	* intl/l10nflist.c (strchr): Likewise.
	* intl/localealias.c (strchr): Likewise.

	Assume <stddef.h>, <stdlib.h>, <string.h>, <locale.h> exist.
	* intl/bindtextdom.c: Likewise.
	* intl/dcigettext.c: Likewise.
	* intl/dgettext.c: Likewise.
	* intl/dngettext.c: Likewise.
	* intl/explodename.c: Likewise.
	* intl/finddomain.c: Likewise.
	* intl/gettext.c: Likewise.
	* intl/l10nflist.c: Likewise.
	* intl/loadmsgcat.c: Likewise.
	* intl/localealias.c: Likewise.
	* intl/ngettext.c: Likewise.
	* intl/textdomain.c: Likewise.
	* intl/gettext.h: Assume <limits.h> exists.
Diffstat (limited to 'intl/plural.c')
-rw-r--r--intl/plural.c86
1 files changed, 37 insertions, 49 deletions
diff --git a/intl/plural.c b/intl/plural.c
index f96eff2cda..92b192c7e8 100644
--- a/intl/plural.c
+++ b/intl/plural.c
@@ -39,34 +39,37 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+/* The bison generated parser uses alloca.  AIX 3 forces us to put this
+   declaration at the beginning of the file.  The declaration in bison's
+   skeleton file comes too late.  This must come before <config.h>
+   because <config.h> may include arbitrary system headers.  */
+#if defined _AIX && !defined __GNUC__
+ #pragma alloca
+#endif
 #ifdef HAVE_CONFIG_H
 # include <config.h>
 #endif
 
+#include <stddef.h>
 #include <stdlib.h>
-#include "gettextP.h"
-
-/* Names for the libintl functions are a problem.  They must not clash
-   with existing names and they should follow ANSI C.  But this source
-   code is also used in GNU C Library where the names have a __
-   prefix.  So we have to make a difference here.  */
-#ifdef _LIBC
-# define FREE_EXPRESSION __gettext_free_exp
-#else
-# define FREE_EXPRESSION gettext_free_exp__
-# define __gettextparse gettextparse__
+#include "plural-exp.h"
+
+/* The main function generated by the parser is called __gettextparse,
+   but we want it to be called PLURAL_PARSE.  */
+#ifndef _LIBC
+# define __gettextparse PLURAL_PARSE
 #endif
 
 #define YYLEX_PARAM	&((struct parse_args *) arg)->cp
 #define YYPARSE_PARAM	arg
 
-#line 46 "plural.y"
+#line 49 "plural.y"
 typedef union {
   unsigned long int num;
   enum operator op;
   struct expression *exp;
 } YYSTYPE;
-#line 52 "plural.y"
+#line 55 "plural.y"
 
 /* Prototypes for local functions.  */
 static struct expression *new_exp PARAMS ((int nargs, enum operator op,
@@ -228,8 +231,8 @@ static const short yyrhs[] = {    17,
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   171,   179,   183,   187,   191,   195,   199,   203,   207,   211,
-   215,   220
+   174,   182,   186,   190,   194,   198,   202,   206,   210,   214,
+   218,   223
 };
 #endif
 
@@ -296,7 +299,7 @@ static const short yycheck[] = {     1,
 #define YYPURE 1
 
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
-#line 3 "/usr/share/bison.simple"
+#line 3 "/usr/lib/bison.simple"
 /* This file comes from bison-1.28.  */
 
 /* Skeleton output parser for bison,
@@ -327,11 +330,6 @@ static const short yycheck[] = {     1,
   It was written by Richard Stallman by simplifying the hairy parser
   used when %semantic_parser is specified.  */
 
-#ifndef YYPARSE_RETURN_TYPE
-#define YYPARSE_RETURN_TYPE int
-#endif
-
-
 #ifndef YYSTACK_USE_ALLOCA
 #ifdef alloca
 #define YYSTACK_USE_ALLOCA
@@ -515,7 +513,7 @@ __yy_memcpy (char *to, char *from, unsigned int count)
 #endif
 #endif
 
-#line 222 "/usr/share/bison.simple"
+#line 217 "/usr/lib/bison.simple"
 
 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
    into yyparse.  The argument should have type void *.
@@ -539,15 +537,13 @@ __yy_memcpy (char *to, char *from, unsigned int count)
 /* Prevent warning if -Wstrict-prototypes.  */
 #ifdef __GNUC__
 #ifdef YYPARSE_PARAM
-YYPARSE_RETURN_TYPE
-yyparse (void *);
+int yyparse (void *);
 #else
-YYPARSE_RETURN_TYPE
-yyparse (void);
+int yyparse (void);
 #endif
 #endif
 
-YYPARSE_RETURN_TYPE
+int
 yyparse(YYPARSE_PARAM_ARG)
      YYPARSE_PARAM_DECL
 {
@@ -575,9 +571,7 @@ yyparse(YYPARSE_PARAM_ARG)
 #endif
 
   int yystacksize = YYINITDEPTH;
-#ifndef YYSTACK_USE_ALLOCA
   int yyfree_stacks = 0;
-#endif
 
 #ifdef YYPURE
   int yychar;
@@ -662,7 +656,6 @@ yynewstate:
       if (yystacksize >= YYMAXDEPTH)
 	{
 	  yyerror("parser stack overflow");
-#ifndef YYSTACK_USE_ALLOCA
 	  if (yyfree_stacks)
 	    {
 	      free (yyss);
@@ -671,7 +664,6 @@ yynewstate:
 	      free (yyls);
 #endif
 	    }
-#endif	    
 	  return 2;
 	}
       yystacksize *= 2;
@@ -850,7 +842,7 @@ yyreduce:
   switch (yyn) {
 
 case 1:
-#line 172 "plural.y"
+#line 175 "plural.y"
 {
 	    if (yyvsp[0].exp == NULL)
 	      YYABORT;
@@ -858,75 +850,75 @@ case 1:
 	  ;
     break;}
 case 2:
-#line 180 "plural.y"
+#line 183 "plural.y"
 {
 	    yyval.exp = new_exp_3 (qmop, yyvsp[-4].exp, yyvsp[-2].exp, yyvsp[0].exp);
 	  ;
     break;}
 case 3:
-#line 184 "plural.y"
+#line 187 "plural.y"
 {
 	    yyval.exp = new_exp_2 (lor, yyvsp[-2].exp, yyvsp[0].exp);
 	  ;
     break;}
 case 4:
-#line 188 "plural.y"
+#line 191 "plural.y"
 {
 	    yyval.exp = new_exp_2 (land, yyvsp[-2].exp, yyvsp[0].exp);
 	  ;
     break;}
 case 5:
-#line 192 "plural.y"
+#line 195 "plural.y"
 {
 	    yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
 	  ;
     break;}
 case 6:
-#line 196 "plural.y"
+#line 199 "plural.y"
 {
 	    yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
 	  ;
     break;}
 case 7:
-#line 200 "plural.y"
+#line 203 "plural.y"
 {
 	    yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
 	  ;
     break;}
 case 8:
-#line 204 "plural.y"
+#line 207 "plural.y"
 {
 	    yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
 	  ;
     break;}
 case 9:
-#line 208 "plural.y"
+#line 211 "plural.y"
 {
 	    yyval.exp = new_exp_1 (lnot, yyvsp[0].exp);
 	  ;
     break;}
 case 10:
-#line 212 "plural.y"
+#line 215 "plural.y"
 {
 	    yyval.exp = new_exp_0 (var);
 	  ;
     break;}
 case 11:
-#line 216 "plural.y"
+#line 219 "plural.y"
 {
 	    if ((yyval.exp = new_exp_0 (num)) != NULL)
 	      yyval.exp->val.num = yyvsp[0].num;
 	  ;
     break;}
 case 12:
-#line 221 "plural.y"
+#line 224 "plural.y"
 {
 	    yyval.exp = yyvsp[-1].exp;
 	  ;
     break;}
 }
    /* the action file gets copied in in place of this dollarsign */
-#line 554 "/usr/share/bison.simple"
+#line 543 "/usr/lib/bison.simple"
 
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -1124,7 +1116,6 @@ yyerrhandle:
 
  yyacceptlab:
   /* YYACCEPT comes here.  */
-#ifndef YYSTACK_USE_ALLOCA
   if (yyfree_stacks)
     {
       free (yyss);
@@ -1133,12 +1124,10 @@ yyerrhandle:
       free (yyls);
 #endif
     }
-#endif
   return 0;
 
  yyabortlab:
   /* YYABORT comes here.  */
-#ifndef YYSTACK_USE_ALLOCA
   if (yyfree_stacks)
     {
       free (yyss);
@@ -1147,10 +1136,9 @@ yyerrhandle:
       free (yyls);
 #endif
     }
-#endif    
   return 1;
 }
-#line 226 "plural.y"
+#line 229 "plural.y"
 
 
 void