+2005-10-03 Bruno Haible <bruno@clisp.org>
+
+ * xgettext.h (savable_comment_to_xgettext_comment): Remove
+ declaration.
+ (remember_a_message, remember_a_message_plural): Add a comment
+ argument.
+ * xgettext.c (savable_comment_to_xgettext_comment): Make static.
+ (remember_a_message): Add comment argument. Call
+ savable_comment_to_xgettext_comment and savable_comment_reset at the
+ end.
+ (remember_a_message_plural): Add comment argument. Call
+ savable_comment_to_xgettext_comment and xgettext_comment_reset,
+ savable_comment_reset at the end.
+ * x-awk.c (extract_parenthesized): Pass comment to remember_a_message.
+ * x-c.c (extract_parenthesized): Likewise.
+ * x-csharp.c (extract_parenthesized): Likewise.
+ * x-elisp.c (read_object): Likewise.
+ * x-glade.c (start_element_handler, end_element_handler): Likewise.
+ * x-java.c (extract_parenthesized): Likewise.
+ * x-librep.c (read_object): Likewise.
+ * x-lisp.c (read_object): Likewise.
+ * x-perl.c (extract_variable, interpolate_keywords, extract_balanced):
+ Likewise.
+ * x-php.c (extract_parenthesized): Likewise.
+ * x-python.c (extract_parenthesized): Likewise.
+ * x-scheme.c (read_object): Likewise.
+ * x-sh.c (read_word, read_command): Likewise.
+ * x-smalltalk.c (extract_smalltalk): Likewise.
+ * x-tcl.c (read_command): Likewise.
+ * x-ycp.c (extract_parenthesized): Likewise.
+ * x-rst.c (extract_rst): Update.
+
2005-10-03 Bruno Haible <bruno@clisp.org>
* xgettext.h (xgettext_comment_add, xgettext_comment,
pos.line_number = token.line_number;
if (extract_all)
- {
- savable_comment_to_xgettext_comment (savable_comment);
- remember_a_message (mlp, token.string, inner_context, &pos);
- savable_comment_reset ();
- }
+ remember_a_message (mlp, token.string, inner_context, &pos,
+ savable_comment);
else
{
if (commas_to_skip == 0)
if (plural_mp == NULL)
{
/* Seen an msgid. */
- message_ty *mp;
-
- savable_comment_to_xgettext_comment (savable_comment);
- mp =
+ message_ty *mp =
remember_a_message (mlp, token.string,
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos,
+ savable_comment);
if (plural_commas > 0)
plural_mp = mp;
}
else
{
/* Seen an msgid_plural. */
- savable_comment_to_xgettext_comment (savable_comment);
remember_a_message_plural (plural_mp, token.string,
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos,
+ savable_comment);
plural_mp = NULL;
}
}
pos.file_name = logical_file_name;
pos.line_number = token.line_number;
- savable_comment_to_xgettext_comment (savable_comment);
- remember_a_message (mlp, token.string, inner_context, &pos);
- savable_comment_reset ();
+ remember_a_message (mlp, token.string, inner_context, &pos,
+ savable_comment);
}
next_is_argument = false;
next_context_iter = null_context_list_iterator;
case xgettext_token_type_string_literal:
if (extract_all)
- {
- savable_comment_to_xgettext_comment (token.comment);
- remember_a_message (mlp, token.string, inner_context, &token.pos);
- savable_comment_reset ();
- }
+ remember_a_message (mlp, token.string, inner_context, &token.pos,
+ token.comment);
else
{
if (commas_to_skip == 0)
if (plural_mp == NULL)
{
/* Seen an msgid. */
- message_ty *mp;
-
- savable_comment_to_xgettext_comment (token.comment);
- mp = remember_a_message (mlp, token.string,
- inner_context, &token.pos);
- savable_comment_reset ();
+ message_ty *mp =
+ remember_a_message (mlp, token.string,
+ inner_context, &token.pos,
+ token.comment);
if (plural_commas > 0)
plural_mp = mp;
}
{
/* Seen an msgid_plural. */
remember_a_message_plural (plural_mp, token.string,
- inner_context, &token.pos);
+ inner_context, &token.pos,
+ NULL);
plural_mp = NULL;
}
}
if (extract_all)
{
xgettext_current_source_encoding = po_charset_utf8;
- savable_comment_to_xgettext_comment (token.comment);
- remember_a_message (mlp, token.string, inner_context, &pos);
- savable_comment_reset ();
+ remember_a_message (mlp, token.string, inner_context, &pos,
+ token.comment);
xgettext_current_source_encoding = xgettext_global_source_encoding;
}
else
message_ty *mp;
xgettext_current_source_encoding = po_charset_utf8;
- savable_comment_to_xgettext_comment (token.comment);
mp = remember_a_message (mlp, token.string,
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos,
+ token.comment);
xgettext_current_source_encoding = xgettext_global_source_encoding;
if (plural_commas > 0)
plural_mp = mp;
/* Seen an msgid_plural. */
xgettext_current_source_encoding = po_charset_utf8;
remember_a_message_plural (plural_mp, token.string,
- inner_context, &pos);
+ inner_context, &pos, NULL);
xgettext_current_source_encoding = xgettext_global_source_encoding;
plural_mp = NULL;
}
pos.file_name = logical_file_name;
pos.line_number = inner.line_number_at_start;
- savable_comment_to_xgettext_comment (savable_comment);
mp = remember_a_message (mlp, string_of_object (&inner),
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos,
+ savable_comment);
if (argnum2 > 0)
plural_mp = mp;
}
pos.file_name = logical_file_name;
pos.line_number = inner.line_number_at_start;
- savable_comment_to_xgettext_comment (savable_comment);
remember_a_message_plural (plural_mp, string_of_object (&inner),
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos,
+ savable_comment);
}
}
}
pos.file_name = logical_file_name;
pos.line_number = op->line_number_at_start;
- savable_comment_to_xgettext_comment (savable_comment);
remember_a_message (mlp, string_of_object (op),
- null_context, &pos);
- savable_comment_reset ();
+ null_context, &pos, savable_comment);
}
last_non_comment_line = line_number;
return;
pos.file_name = logical_file_name;
pos.line_number = XML_GetCurrentLineNumber (parser);
- savable_comment_to_xgettext_comment (savable_comment);
remember_a_message (mlp, xstrdup (attp[1]),
- null_context, &pos);
- savable_comment_reset ();
+ null_context, &pos, savable_comment);
}
break;
}
pos.file_name = logical_file_name;
pos.line_number = p->lineno;
- savable_comment_to_xgettext_comment (savable_comment);
- remember_a_message (mlp, p->buffer, null_context, &pos);
- savable_comment_reset ();
+ remember_a_message (mlp, p->buffer, null_context, &pos,
+ savable_comment);
p->buffer = NULL;
}
}
if (extract_all)
{
xgettext_current_source_encoding = po_charset_utf8;
- savable_comment_to_xgettext_comment (token.comment);
- remember_a_message (mlp, token.string, inner_context, &pos);
- savable_comment_reset ();
+ remember_a_message (mlp, token.string, inner_context, &pos,
+ token.comment);
xgettext_current_source_encoding = xgettext_global_source_encoding;
}
else
message_ty *mp;
xgettext_current_source_encoding = po_charset_utf8;
- savable_comment_to_xgettext_comment (token.comment);
mp = remember_a_message (mlp, token.string,
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos,
+ token.comment);
xgettext_current_source_encoding = xgettext_global_source_encoding;
if (plural_commas > 0)
plural_mp = mp;
/* Seen an msgid_plural. */
xgettext_current_source_encoding = po_charset_utf8;
remember_a_message_plural (plural_mp, token.string,
- inner_context, &pos);
+ inner_context, &pos, NULL);
xgettext_current_source_encoding = xgettext_global_source_encoding;
plural_mp = NULL;
}
pos.file_name = logical_file_name;
pos.line_number = inner.line_number_at_start;
- savable_comment_to_xgettext_comment (savable_comment);
mp = remember_a_message (mlp, string_of_object (&inner),
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos,
+ savable_comment);
if (argnum2 > 0)
plural_mp = mp;
}
pos.file_name = logical_file_name;
pos.line_number = inner.line_number_at_start;
- savable_comment_to_xgettext_comment (savable_comment);
remember_a_message_plural (plural_mp, string_of_object (&inner),
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos,
+ savable_comment);
}
}
}
pos.file_name = logical_file_name;
pos.line_number = op->line_number_at_start;
- savable_comment_to_xgettext_comment (savable_comment);
remember_a_message (mlp, string_of_object (op),
- null_context, &pos);
- savable_comment_reset ();
+ null_context, &pos, savable_comment);
}
last_non_comment_line = line_number;
return;
pos.file_name = logical_file_name;
pos.line_number = inner.line_number_at_start;
- savable_comment_to_xgettext_comment (savable_comment);
mp = remember_a_message (mlp, string_of_object (&inner),
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos,
+ savable_comment);
if (argnum2 > 0)
plural_mp = mp;
}
pos.file_name = logical_file_name;
pos.line_number = inner.line_number_at_start;
- savable_comment_to_xgettext_comment (savable_comment);
remember_a_message_plural (plural_mp, string_of_object (&inner),
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos,
+ savable_comment);
}
}
}
pos.file_name = logical_file_name;
pos.line_number = op->line_number_at_start;
- savable_comment_to_xgettext_comment (savable_comment);
remember_a_message (mlp, string_of_object (op),
- null_context, &pos);
- savable_comment_reset ();
+ null_context, &pos, savable_comment);
}
last_non_comment_line = line_number;
return;
pos.file_name = logical_file_name;
xgettext_current_source_encoding = po_charset_utf8;
- savable_comment_to_xgettext_comment (savable_comment);
- remember_a_message (mlp, xstrdup (t1->string), context, &pos);
- savable_comment_reset ();
+ remember_a_message (mlp, xstrdup (t1->string), context,
+ &pos, savable_comment);
xgettext_current_source_encoding = xgettext_global_source_encoding;
free_token (t2);
free_token (t1);
token.string = xstrdup (buffer);
extract_quotelike_pass3 (&token, EXIT_FAILURE);
xgettext_current_source_encoding = po_charset_utf8;
- savable_comment_to_xgettext_comment (savable_comment);
- remember_a_message (mlp, token.string, context, &pos);
- savable_comment_reset ();
+ remember_a_message (mlp, token.string, context, &pos,
+ savable_comment);
xgettext_current_source_encoding = xgettext_global_source_encoding;
/* FALLTHROUGH */
default:
pos.line_number = tp->line_number;
string = collect_message (mlp, tp, EXIT_SUCCESS);
xgettext_current_source_encoding = po_charset_utf8;
- savable_comment_to_xgettext_comment (savable_comment);
- remember_a_message (mlp, string, inner_context, &pos);
- savable_comment_reset ();
+ remember_a_message (mlp, string, inner_context, &pos,
+ savable_comment);
xgettext_current_source_encoding = xgettext_global_source_encoding;
}
else if (state)
{
string = collect_message (mlp, tp, EXIT_FAILURE);
xgettext_current_source_encoding = po_charset_utf8;
- savable_comment_to_xgettext_comment (savable_comment);
- plural_mp = remember_a_message (mlp, string, inner_context, &pos);
- savable_comment_reset ();
+ plural_mp = remember_a_message (mlp, string, inner_context,
+ &pos, savable_comment);
xgettext_current_source_encoding = xgettext_global_source_encoding;
arg_sg = -1;
}
string = collect_message (mlp, tp, EXIT_FAILURE);
xgettext_current_source_encoding = po_charset_utf8;
- savable_comment_to_xgettext_comment (savable_comment);
- remember_a_message_plural (plural_mp, string, inner_context, &pos);
- savable_comment_reset ();
+ remember_a_message_plural (plural_mp, string, inner_context,
+ &pos, savable_comment);
xgettext_current_source_encoding = xgettext_global_source_encoding;
arg_pl = -1;
}
pos.line_number = token.line_number;
if (extract_all)
- {
- savable_comment_to_xgettext_comment (savable_comment);
- remember_a_message (mlp, token.string, inner_context, &pos);
- savable_comment_reset ();
- }
+ remember_a_message (mlp, token.string, inner_context, &pos,
+ savable_comment);
else
{
if (commas_to_skip == 0)
if (plural_mp == NULL)
{
/* Seen an msgid. */
- message_ty *mp;
-
- savable_comment_to_xgettext_comment (savable_comment);
- mp =
+ message_ty *mp =
remember_a_message (mlp, token.string,
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos,
+ savable_comment);
if (plural_commas > 0)
plural_mp = mp;
}
else
{
/* Seen an msgid_plural. */
- savable_comment_to_xgettext_comment (savable_comment);
remember_a_message_plural (plural_mp, token.string,
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos,
+ savable_comment);
plural_mp = NULL;
}
}
if (extract_all)
{
xgettext_current_source_encoding = po_charset_utf8;
- savable_comment_to_xgettext_comment (token.comment);
- remember_a_message (mlp, token.string, inner_context, &pos);
- savable_comment_reset ();
+ remember_a_message (mlp, token.string, inner_context, &pos,
+ token.comment);
xgettext_current_source_encoding = xgettext_current_file_source_encoding;
}
else
message_ty *mp;
xgettext_current_source_encoding = po_charset_utf8;
- savable_comment_to_xgettext_comment (token.comment);
mp = remember_a_message (mlp, token.string,
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos,
+ token.comment);
xgettext_current_source_encoding = xgettext_current_file_source_encoding;
if (plural_commas > 0)
plural_mp = mp;
/* Seen an msgid_plural. */
xgettext_current_source_encoding = po_charset_utf8;
remember_a_message_plural (plural_mp, token.string,
- inner_context, &pos);
+ inner_context, &pos, NULL);
xgettext_current_source_encoding = xgettext_current_file_source_encoding;
plural_mp = NULL;
}
/* xgettext RST backend.
- Copyright (C) 2001-2003 Free Software Foundation, Inc.
+ Copyright (C) 2001-2003, 2005 Free Software Foundation, Inc.
This file was written by Bruno Haible <haible@clisp.cons.org>, 2001.
pos.file_name = location;
pos.line_number = (size_t)(-1);
- remember_a_message (mlp, msgid, null_context, &pos);
+ remember_a_message (mlp, msgid, null_context, &pos, NULL);
/* Here c is the last read character: EOF or '\n'. */
if (c == EOF)
pos.file_name = logical_file_name;
pos.line_number = inner.line_number_at_start;
- savable_comment_to_xgettext_comment (savable_comment);
mp = remember_a_message (mlp, string_of_object (&inner),
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos,
+ savable_comment);
if (argnum2 > 0)
plural_mp = mp;
}
pos.file_name = logical_file_name;
pos.line_number = inner.line_number_at_start;
- savable_comment_to_xgettext_comment (savable_comment);
remember_a_message_plural (plural_mp, string_of_object (&inner),
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos,
+ savable_comment);
}
}
}
pos.file_name = logical_file_name;
pos.line_number = op->line_number_at_start;
- savable_comment_to_xgettext_comment (savable_comment);
remember_a_message (mlp, string_of_object (op),
- null_context, &pos);
- savable_comment_reset ();
+ null_context, &pos, savable_comment);
}
last_non_comment_line = line_number;
return;
grow_token (&string);
string.chars[string.charcount++] = (unsigned char) c;
}
- savable_comment_to_xgettext_comment (savable_comment);
remember_a_message (mlp, string_of_token (&string),
- context, &pos);
- savable_comment_reset ();
+ context, &pos, savable_comment);
free_token (&string);
error_with_progname = false;
pos.file_name = logical_file_name;
pos.line_number = inner.line_number_at_start;
- savable_comment_to_xgettext_comment (savable_comment);
remember_a_message (mlp, string_of_word (&inner),
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos, savable_comment);
}
}
pos.file_name = logical_file_name;
pos.line_number = inner.line_number_at_start;
- savable_comment_to_xgettext_comment (savable_comment);
mp = remember_a_message (mlp, string_of_word (&inner),
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos,
+ savable_comment);
if (argnum2 > 0)
plural_mp = mp;
}
pos.file_name = logical_file_name;
pos.line_number = inner.line_number_at_start;
- savable_comment_to_xgettext_comment (savable_comment);
remember_a_message_plural (plural_mp, string_of_word (&inner),
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos,
+ savable_comment);
}
}
lex_pos_ty pos;
pos.file_name = logical_file_name;
pos.line_number = token.line_number;
- savable_comment_to_xgettext_comment (savable_comment);
- remember_a_message (mlp, token.string, null_context, &pos);
- savable_comment_reset ();
+ remember_a_message (mlp, token.string, null_context, &pos,
+ savable_comment);
state = 0;
break;
}
lex_pos_ty pos;
pos.file_name = logical_file_name;
pos.line_number = token.line_number;
- savable_comment_to_xgettext_comment (savable_comment);
plural_mp = remember_a_message (mlp, token.string,
- null_context, &pos);
- savable_comment_reset ();
+ null_context, &pos,
+ savable_comment);
state = 4;
break;
}
lex_pos_ty pos;
pos.file_name = logical_file_name;
pos.line_number = token.line_number;
- savable_comment_to_xgettext_comment (savable_comment);
remember_a_message_plural (plural_mp, token.string,
- null_context, &pos);
- savable_comment_reset ();
+ null_context, &pos,
+ savable_comment);
state = 0;
break;
}
pos.file_name = logical_file_name;
pos.line_number = inner.line_number_at_start;
- savable_comment_to_xgettext_comment (savable_comment);
remember_a_message (mlp, string_of_word (&inner),
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos, savable_comment);
}
}
pos.file_name = logical_file_name;
pos.line_number = inner.line_number_at_start;
- savable_comment_to_xgettext_comment (savable_comment);
mp = remember_a_message (mlp, string_of_word (&inner),
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos,
+ savable_comment);
if (argnum2 > 0)
plural_mp = mp;
}
pos.file_name = logical_file_name;
pos.line_number = inner.line_number_at_start;
- savable_comment_to_xgettext_comment (savable_comment);
remember_a_message_plural (plural_mp, string_of_word (&inner),
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos,
+ savable_comment);
}
}
}
if (plural_mp == NULL)
{
/* Seen an msgid. */
- savable_comment_to_xgettext_comment (savable_comment);
plural_mp = remember_a_message (mlp, token.string,
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos,
+ savable_comment);
state = 2;
}
else
{
/* Seen an msgid_plural. */
- savable_comment_to_xgettext_comment (savable_comment);
remember_a_message_plural (plural_mp, token.string,
- inner_context, &pos);
- savable_comment_reset ();
+ inner_context, &pos,
+ savable_comment);
state = 0;
}
}
savable_comment = NULL;
}
-void
+static void
savable_comment_to_xgettext_comment (refcounted_string_list_ty *rslp)
{
xgettext_comment_reset ();
message_ty *
remember_a_message (message_list_ty *mlp, char *string,
- flag_context_ty context, lex_pos_ty *pos)
+ flag_context_ty context, lex_pos_ty *pos,
+ refcounted_string_list_ty *comment)
{
enum is_format is_format[NFORMATS];
enum is_wrap do_wrap;
/* Tell the lexer to reset its comment buffer, so that the next
message gets the correct comments. */
xgettext_comment_reset ();
+ savable_comment_reset ();
return NULL;
}
+ savable_comment_to_xgettext_comment (comment);
+
for (i = 0; i < NFORMATS; i++)
is_format[i] = undecided;
do_wrap = undecided;
/* Tell the lexer to reset its comment buffer, so that the next
message gets the correct comments. */
xgettext_comment_reset ();
+ savable_comment_reset ();
return mp;
}
void
remember_a_message_plural (message_ty *mp, char *string,
- flag_context_ty context, lex_pos_ty *pos)
+ flag_context_ty context, lex_pos_ty *pos,
+ refcounted_string_list_ty *comment)
{
char *msgid_plural;
char *msgstr1;
msgid_plural = string;
+ savable_comment_to_xgettext_comment (comment);
+
CONVERT_STRING (msgid_plural);
/* See if the message is already a plural message. */
}
else
free (msgid_plural);
+
+ /* Tell the lexer to reset its comment buffer, so that the next
+ message gets the correct comments. */
+ xgettext_comment_reset ();
+ savable_comment_reset ();
}
extern refcounted_string_list_ty *savable_comment;
extern void savable_comment_add (const char *str);
extern void savable_comment_reset (void);
-extern void savable_comment_to_xgettext_comment (refcounted_string_list_ty *rslp);
/* Add a message to the list of extracted messages.
- string must be malloc()ed string; its ownership is passed to the callee.
- pos->file_name must be allocated with indefinite extent. */
+ STRING must be malloc()ed string; its ownership is passed to the callee.
+ POS->file_name must be allocated with indefinite extent.
+ COMMENT may be savable_comment, or it may be a saved copy of savable_comment
+ (then add_reference must be used when saving it, and drop_reference while
+ dropping it). Clear savable_comment. */
extern message_ty *remember_a_message (message_list_ty *mlp,
char *string,
flag_context_ty context,
- lex_pos_ty *pos);
+ lex_pos_ty *pos,
+ refcounted_string_list_ty *comment);
/* Add an msgid_plural to a message previously returned by
remember_a_message.
- string must be malloc()ed string; its ownership is passed to the callee.
- pos->file_name must be allocated with indefinite extent. */
+ STRING must be malloc()ed string; its ownership is passed to the callee.
+ POS->file_name must be allocated with indefinite extent.
+ COMMENT may be savable_comment, or it may be a saved copy of savable_comment
+ (then add_reference must be used when saving it, and drop_reference while
+ dropping it). Clear savable_comment. */
extern void remember_a_message_plural (message_ty *mp,
char *string,
flag_context_ty context,
- lex_pos_ty *pos);
+ lex_pos_ty *pos,
+ refcounted_string_list_ty *comment);
#ifdef __cplusplus