From: Bruno Haible Date: Sat, 11 Nov 2023 15:48:20 +0000 (+0100) Subject: libgettextpo: Remove static variables po_gram_lval, po_gram_char, po_gram_nerrs. X-Git-Tag: v0.23~309 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aadaa610706d0997ce848ec5fdf61b21de53b3c9;p=thirdparty%2Fgettext.git libgettextpo: Remove static variables po_gram_lval, po_gram_char, po_gram_nerrs. * gettext-tools/src/po-gram-gen.y: Request a pure parser. * gettext-tools/src/po-lex.h (po_gram_lex): Add lval parameter. * gettext-tools/src/po-lex.c (po_gram_lex): Add lval parameter. Store the result in *lval instead of in po_gram_lval. * gettext-tools/woe32dll/gettextsrc-exports.c: Remove po_gram_lval. --- diff --git a/gettext-tools/src/po-gram-gen.y b/gettext-tools/src/po-gram-gen.y index 43c842d11..07ebdacb1 100644 --- a/gettext-tools/src/po-gram-gen.y +++ b/gettext-tools/src/po-gram-gen.y @@ -77,6 +77,7 @@ do_callback_message (char *msgctxt, %} %require "3.0" +%define api.pure full /* Remap parser interface names, so we can have multiple Bison generated parsers in the same program. */ diff --git a/gettext-tools/src/po-lex.c b/gettext-tools/src/po-lex.c index 22d088492..7be0845d3 100644 --- a/gettext-tools/src/po-lex.c +++ b/gettext-tools/src/po-lex.c @@ -863,7 +863,7 @@ control_sequence () /* Return the next token in the PO file. The return codes are defined in "po-gram-gen2.h". Associated data is put in 'po_gram_lval'. */ int -po_gram_lex () +po_gram_lex (union PO_GRAM_STYPE *lval) { static char *buf; static size_t bufmax; @@ -949,9 +949,9 @@ po_gram_lex () } buf[bufpos] = '\0'; - po_gram_lval.string.string = buf; - po_gram_lval.string.pos = gram_pos; - po_gram_lval.string.obsolete = po_lex_obsolete; + lval->string.string = buf; + lval->string.pos = gram_pos; + lval->string.obsolete = po_lex_obsolete; po_lex_obsolete = false; signal_eilseq = true; return COMMENT; @@ -1012,9 +1012,9 @@ po_gram_lex () _("context separator within string")); /* FIXME: Treatment of embedded \000 chars is incorrect. */ - po_gram_lval.string.string = xstrdup (buf); - po_gram_lval.string.pos = gram_pos; - po_gram_lval.string.obsolete = po_lex_obsolete; + lval->string.string = xstrdup (buf); + lval->string.pos = gram_pos; + lval->string.obsolete = po_lex_obsolete; return (po_lex_previous ? PREV_STRING : STRING); case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': @@ -1071,14 +1071,14 @@ po_gram_lex () int k = keyword_p (buf); if (k == NAME) { - po_gram_lval.string.string = xstrdup (buf); - po_gram_lval.string.pos = gram_pos; - po_gram_lval.string.obsolete = po_lex_obsolete; + lval->string.string = xstrdup (buf); + lval->string.pos = gram_pos; + lval->string.obsolete = po_lex_obsolete; } else { - po_gram_lval.pos.pos = gram_pos; - po_gram_lval.pos.obsolete = po_lex_obsolete; + lval->pos.pos = gram_pos; + lval->pos.obsolete = po_lex_obsolete; } return k; } @@ -1112,19 +1112,19 @@ po_gram_lex () buf[bufpos] = '\0'; - po_gram_lval.number.number = atol (buf); - po_gram_lval.number.pos = gram_pos; - po_gram_lval.number.obsolete = po_lex_obsolete; + lval->number.number = atol (buf); + lval->number.pos = gram_pos; + lval->number.obsolete = po_lex_obsolete; return NUMBER; case '[': - po_gram_lval.pos.pos = gram_pos; - po_gram_lval.pos.obsolete = po_lex_obsolete; + lval->pos.pos = gram_pos; + lval->pos.obsolete = po_lex_obsolete; return '['; case ']': - po_gram_lval.pos.pos = gram_pos; - po_gram_lval.pos.obsolete = po_lex_obsolete; + lval->pos.pos = gram_pos; + lval->pos.obsolete = po_lex_obsolete; return ']'; default: diff --git a/gettext-tools/src/po-lex.h b/gettext-tools/src/po-lex.h index 2f6df0d6a..7204a4062 100644 --- a/gettext-tools/src/po-lex.h +++ b/gettext-tools/src/po-lex.h @@ -74,8 +74,9 @@ extern void lex_start (FILE *fp, const char *real_filename, extern void lex_end (void); /* Return the next token in the PO file. The return codes are defined - in "po-gram-gen2.h". Associated data is put in 'po_gram_lval'. */ -extern int po_gram_lex (void); + in "po-gram-gen2.h". Associated data is put in '*lval'. */ +union PO_GRAM_STYPE; +extern int po_gram_lex (union PO_GRAM_STYPE *lval); /* po_gram_lex() can return comments as COMMENT. Switch this on or off. */ extern void po_lex_pass_comments (bool flag); diff --git a/gettext-tools/woe32dll/gettextsrc-exports.c b/gettext-tools/woe32dll/gettextsrc-exports.c index 90066316f..b439b79c0 100644 --- a/gettext-tools/woe32dll/gettextsrc-exports.c +++ b/gettext-tools/woe32dll/gettextsrc-exports.c @@ -77,7 +77,6 @@ VARIABLE(po_charset_ascii) VARIABLE(po_charset_utf8) VARIABLE(po_error) VARIABLE(po_error_at_line) -VARIABLE(po_gram_lval) VARIABLE(po_lex_charset) VARIABLE(po_lex_isolate_start) VARIABLE(po_lex_isolate_end)