From: Bruno Haible Date: Thu, 1 Aug 2024 21:08:21 +0000 (+0200) Subject: Remove some uses of global variable gram_pos. X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=fed8e168e5543ac6c66a3c187c5d22b4278bb682;p=thirdparty%2Fgettext.git Remove some uses of global variable gram_pos. * gettext-tools/src/msgfmt.c (msgfmt_comment_special): Use the file name from the catalog reader instead of gram_pos. * gettext-tools/src/read-desktop.c (gram_pos): Remove declaration. (pos): New variable. (phase2_getc, phase2_ungetc, desktop_lex, desktop_parse): Use it instead of gram_pos. * gettext-tools/src/read-properties.c (gram_pos): Remove declaration. (pos): New variable. (phase2_getc, phase2_ungetc, phase4_getuc, read_escaped_string, properties_parse): Use it instead of gram_pos. * gettext-tools/src/read-stringtable.c (gram_pos): Remove declaration. (pos): New variable. (phase3_getc, phase3_ungetc, stringtable_parse): Use it instead of gram_pos. (read_string): Likewise. Rename a parameter. (conv_from_ucs4): Rename a local variable. --- diff --git a/gettext-tools/src/msgfmt.c b/gettext-tools/src/msgfmt.c index b3837449a..87eab26c0 100644 --- a/gettext-tools/src/msgfmt.c +++ b/gettext-tools/src/msgfmt.c @@ -1346,7 +1346,7 @@ msgfmt_comment_special (abstract_catalog_reader_ty *catr, const char *s) warned = true; error (0, 0, _("%s: warning: source file contains fuzzy translation"), - gram_pos.file_name); + mcatr->file_name); } } } diff --git a/gettext-tools/src/read-desktop.c b/gettext-tools/src/read-desktop.c index f716d7815..53978c3ff 100644 --- a/gettext-tools/src/read-desktop.c +++ b/gettext-tools/src/read-desktop.c @@ -101,7 +101,7 @@ desktop_reader_handle_blank (desktop_reader_ty *reader, const char *s) static const char *real_file_name; /* File name and line number. */ -extern lex_pos_ty gram_pos; +static lex_pos_ty pos; /* The input file stream. */ static FILE *fp; @@ -164,7 +164,7 @@ phase2_getc () } if (c == '\n') - gram_pos.line_number++; + pos.line_number++; return c; } @@ -173,7 +173,7 @@ static void phase2_ungetc (int c) { if (c == '\n') - --gram_pos.line_number; + --pos.line_number; if (c != EOF) phase2_pushback[phase2_pushback_length++] = c; } @@ -254,7 +254,7 @@ desktop_lex (token_ty *tp) if (c == '\n') { po_xerror (PO_SEVERITY_WARNING, NULL, - real_file_name, gram_pos.line_number, 0, false, + real_file_name, pos.line_number, 0, false, _("unterminated group name")); break; } @@ -275,7 +275,7 @@ desktop_lex (token_ty *tp) } if (non_blank) po_xerror (PO_SEVERITY_WARNING, NULL, - real_file_name, gram_pos.line_number, 0, false, + real_file_name, pos.line_number, 0, false, _("invalid non-blank character")); APPEND (0); tp->type = token_type_group; @@ -382,7 +382,7 @@ desktop_lex (token_ty *tp) if (c != '=') { po_xerror (PO_SEVERITY_WARNING, NULL, - real_file_name, gram_pos.line_number, 0, false, + real_file_name, pos.line_number, 0, false, xasprintf (_("missing '=' after \"%s\""), buffer)); for (;;) { @@ -445,7 +445,7 @@ desktop_lex (token_ty *tp) if (non_blank) { po_xerror (PO_SEVERITY_WARNING, NULL, - real_file_name, gram_pos.line_number, 0, false, + real_file_name, pos.line_number, 0, false, _("invalid non-blank line")); tp->type = token_type_other; return; @@ -466,8 +466,8 @@ desktop_parse (desktop_reader_ty *reader, FILE *file, { fp = file; real_file_name = real_filename; - gram_pos.file_name = xstrdup (logical_filename); - gram_pos.line_number = 1; + pos.file_name = xstrdup (logical_filename); + pos.line_number = 1; for (;;) { @@ -484,7 +484,7 @@ desktop_parse (desktop_reader_ty *reader, FILE *file, desktop_reader_handle_comment (reader, token.string); break; case token_type_pair: - desktop_reader_handle_pair (reader, &gram_pos, + desktop_reader_handle_pair (reader, &pos, token.string, token.locale, token.value); break; case token_type_blank: @@ -499,7 +499,7 @@ desktop_parse (desktop_reader_ty *reader, FILE *file, out: fp = NULL; real_file_name = NULL; - gram_pos.line_number = 0; + pos.line_number = 0; } char * diff --git a/gettext-tools/src/read-properties.c b/gettext-tools/src/read-properties.c index 5793185ea..451e80575 100644 --- a/gettext-tools/src/read-properties.c +++ b/gettext-tools/src/read-properties.c @@ -66,7 +66,7 @@ static const char *real_file_name; /* File name and line number. */ -extern lex_pos_ty gram_pos; +static lex_pos_ty pos; /* The contents of the input file. */ static char *contents; @@ -127,7 +127,7 @@ phase2_getc () } if (c == '\n') - gram_pos.line_number++; + pos.line_number++; return c; } @@ -136,7 +136,7 @@ static void phase2_ungetc (int c) { if (c == '\n') - --gram_pos.line_number; + --pos.line_number; if (c != EOF) phase2_pushback[phase2_pushback_length++] = c; } @@ -348,7 +348,7 @@ phase4_getuc () { phase3_ungetc (c1); po_xerror (PO_SEVERITY_ERROR, NULL, - real_file_name, gram_pos.line_number, (size_t)(-1), + real_file_name, pos.line_number, (size_t)(-1), false, _("warning: invalid \\uxxxx syntax for Unicode character")); return 'u'; } @@ -490,7 +490,7 @@ read_escaped_string (bool in_key) { error_with_progname = false; po_xerror (PO_SEVERITY_ERROR, NULL, - real_file_name, gram_pos.line_number, (size_t)(-1), + real_file_name, pos.line_number, (size_t)(-1), false, _("warning: invalid Unicode character")); error_with_progname = true; } @@ -510,10 +510,10 @@ read_escaped_string (bool in_key) if (c >= UNICODE (0xd800) && c < UNICODE (0xdc00)) { utf16_surr = UTF16_VALUE (c); - utf16_surr_line = gram_pos.line_number; + utf16_surr_line = pos.line_number; } else if (c >= UNICODE (0xdc00) && c < UNICODE (0xe000)) - utf8_buffer_append_lone_surrogate (UTF16_VALUE (c), gram_pos.line_number); + utf8_buffer_append_lone_surrogate (UTF16_VALUE (c), pos.line_number); else { ucs4_t uc = UTF16_VALUE (c); @@ -525,7 +525,7 @@ read_escaped_string (bool in_key) { error_with_progname = false; po_xerror (PO_SEVERITY_ERROR, NULL, - real_file_name, gram_pos.line_number, (size_t)(-1), + real_file_name, pos.line_number, (size_t)(-1), false, _("warning: invalid Unicode character")); error_with_progname = true; } @@ -613,8 +613,8 @@ properties_parse (abstract_catalog_reader_ty *catr, FILE *file, position = 0; real_file_name = real_filename; - gram_pos.file_name = xstrdup (real_file_name); - gram_pos.line_number = 1; + pos.file_name = xstrdup (real_file_name); + pos.line_number = 1; for (;;) { @@ -681,7 +681,7 @@ properties_parse (abstract_catalog_reader_ty *catr, FILE *file, char *msgid; lex_pos_ty msgid_pos; - msgid_pos = gram_pos; + msgid_pos = pos; msgid = read_escaped_string (true); if (msgid == NULL) /* Skip blank line. */ @@ -692,7 +692,7 @@ properties_parse (abstract_catalog_reader_ty *catr, FILE *file, lex_pos_ty msgstr_pos; bool force_fuzzy; - msgstr_pos = gram_pos; + msgstr_pos = pos; msgstr = read_escaped_string (false); if (msgstr == NULL) msgstr = xstrdup (""); @@ -713,7 +713,7 @@ properties_parse (abstract_catalog_reader_ty *catr, FILE *file, free (contents); contents = NULL; real_file_name = NULL; - gram_pos.line_number = 0; + pos.line_number = 0; } const struct catalog_input_format input_format_properties = diff --git a/gettext-tools/src/read-stringtable.c b/gettext-tools/src/read-stringtable.c index 8de5dd101..6baf3ad42 100644 --- a/gettext-tools/src/read-stringtable.c +++ b/gettext-tools/src/read-stringtable.c @@ -67,7 +67,7 @@ static const char *real_file_name; /* File name and line number. */ -extern lex_pos_ty gram_pos; +static lex_pos_ty pos; /* The input file stream. */ static FILE *fp; @@ -312,7 +312,7 @@ phase3_getc () int c = phase2_getc (); if (c == '\n') - gram_pos.line_number++; + pos.line_number++; return c; } @@ -321,7 +321,7 @@ static void phase3_ungetc (int c) { if (c == '\n') - --gram_pos.line_number; + --pos.line_number; phase2_ungetc (c); } @@ -331,18 +331,18 @@ static char * conv_from_ucs4 (const int *buffer, size_t buflen) { unsigned char *utf8_string; - size_t pos; + size_t i; unsigned char *q; /* Each UCS-4 word needs 6 bytes at worst. */ utf8_string = XNMALLOC (6 * buflen + 1, unsigned char); - for (pos = 0, q = utf8_string; pos < buflen; ) + for (i = 0, q = utf8_string; i < buflen; ) { unsigned int uc; int n; - uc = buffer[pos++]; + uc = buffer[i++]; n = u8_uctomb (q, uc, 6); assert (n > 0); q += n; @@ -707,9 +707,9 @@ is_quotable (int c) /* Read a key or value string. Return the string in UTF-8 encoding, or NULL if no string is seen. - Return the start position of the string in *pos. */ + Return the start position of the string in *start_pos. */ static char * -read_string (abstract_catalog_reader_ty *catr, lex_pos_ty *pos) +read_string (abstract_catalog_reader_ty *catr, lex_pos_ty *start_pos) { static int *buffer; static size_t bufmax; @@ -725,7 +725,7 @@ read_string (abstract_catalog_reader_ty *catr, lex_pos_ty *pos) /* No more string. */ return NULL; - *pos = gram_pos; + *start_pos = pos; buflen = 0; if (c == '"') { @@ -800,7 +800,7 @@ read_string (abstract_catalog_reader_ty *catr, lex_pos_ty *pos) } if (c == UEOF) po_xerror (PO_SEVERITY_ERROR, NULL, - real_file_name, gram_pos.line_number, (size_t)(-1), false, + real_file_name, pos.line_number, (size_t)(-1), false, _("warning: unterminated string")); } else @@ -808,7 +808,7 @@ read_string (abstract_catalog_reader_ty *catr, lex_pos_ty *pos) /* Read a token outside quotes. */ if (is_quotable (c)) po_xerror (PO_SEVERITY_ERROR, NULL, - real_file_name, gram_pos.line_number, (size_t)(-1), false, + real_file_name, pos.line_number, (size_t)(-1), false, _("warning: syntax error")); for (; c != UEOF && !is_quotable (c); c = phase4_getc (catr)) { @@ -834,8 +834,8 @@ stringtable_parse (abstract_catalog_reader_ty *catr, FILE *file, { fp = file; real_file_name = real_filename; - gram_pos.file_name = xstrdup (real_file_name); - gram_pos.line_number = 1; + pos.file_name = xstrdup (real_file_name); + pos.line_number = 1; encoding = enc_undetermined; expect_fuzzy_msgstr_as_c_comment = false; expect_fuzzy_msgstr_as_cxx_comment = false; @@ -870,7 +870,7 @@ stringtable_parse (abstract_catalog_reader_ty *catr, FILE *file, if (c == UEOF) { po_xerror (PO_SEVERITY_ERROR, NULL, - real_file_name, gram_pos.line_number, (size_t)(-1), false, + real_file_name, pos.line_number, (size_t)(-1), false, _("warning: unterminated key/value pair")); break; } @@ -893,7 +893,7 @@ stringtable_parse (abstract_catalog_reader_ty *catr, FILE *file, if (msgstr == NULL) { po_xerror (PO_SEVERITY_ERROR, NULL, - real_file_name, gram_pos.line_number, (size_t)(-1), + real_file_name, pos.line_number, (size_t)(-1), false, _("warning: unterminated key/value pair")); break; } @@ -940,7 +940,7 @@ stringtable_parse (abstract_catalog_reader_ty *catr, FILE *file, else { po_xerror (PO_SEVERITY_ERROR, NULL, - real_file_name, gram_pos.line_number, (size_t)(-1), + real_file_name, pos.line_number, (size_t)(-1), false, _("warning: syntax error, expected ';' after string")); break; @@ -949,7 +949,7 @@ stringtable_parse (abstract_catalog_reader_ty *catr, FILE *file, else { po_xerror (PO_SEVERITY_ERROR, NULL, - real_file_name, gram_pos.line_number, (size_t)(-1), false, + real_file_name, pos.line_number, (size_t)(-1), false, _("warning: syntax error, expected '=' or ';' after string")); break; } @@ -957,7 +957,7 @@ stringtable_parse (abstract_catalog_reader_ty *catr, FILE *file, fp = NULL; real_file_name = NULL; - gram_pos.line_number = 0; + pos.line_number = 0; } const struct catalog_input_format input_format_stringtable =