From 819c56e76de80b99e1c04516597518f278820048 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sat, 22 Feb 2003 23:15:39 +0000 Subject: Update. * catgets/gencat.c (read_input_file): Collision between auto-assigned numbers and user-defined nubmers is not fatal. Handle it. Patch by Michael M. Lampkin . * catgets/gencat.c (main): Return 1 if messages have been printed. --- catgets/gencat.c | 41 +++++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) (limited to 'catgets') diff --git a/catgets/gencat.c b/catgets/gencat.c index ff535dec1d..175f1ffd09 100644 --- a/catgets/gencat.c +++ b/catgets/gencat.c @@ -197,7 +197,7 @@ main (int argc, char *argv[]) if (result != NULL) write_out (result, output_name, header_name); - return EXIT_SUCCESS; + return error_message_count != 0; } @@ -613,11 +613,40 @@ this is the first definition")); { /* Oh, oh. There is already a message with this number in the message set. */ - error_at_line (0, 0, fname, start_line, - gettext ("duplicated message number")); - error_at_line (0, 0, runp->fname, runp->line, - gettext ("this is the first definition")); - message_number = 0; + if (runp->symbol == NULL) + { + /* The existing message had its number specified + by the user. Fatal collision type uh, oh. */ + error_at_line (0, 0, fname, start_line, + gettext ("duplicated message number")); + error_at_line (0, 0, runp->fname, runp->line, + gettext ("this is the first definition")); + message_number = 0; + } + else + { + /* Collision was with number auto-assigned to a + symbolic. Change existing symbolic number + and move to end the list (if not already there). */ + runp->number = ++current->current_set->last_message; + + if (runp->next != NULL) + { + struct message_list *endp; + + if (lastp == NULL) + current->current_set->messages=runp->next; + else + lastp->next=runp->next; + + endp = runp->next; + while (endp->next != NULL) + endp = endp->next; + + endp->next = runp; + runp->next = NULL; + } + } } ident = NULL; /* We don't have a symbol. */ -- cgit 1.4.1