Update.
authorUlrich Drepper <drepper@redhat.com>
Sat, 22 Feb 2003 23:15:39 +0000 (23:15 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 22 Feb 2003 23:15:39 +0000 (23:15 +0000)
* 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 <michael.lampkin@ieee.org>.

* catgets/gencat.c (main): Return 1 if messages have been printed.

ChangeLog
catgets/gencat.c

index 9390307..2acce14 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 
 2003-02-22  Ulrich Drepper  <drepper@redhat.com>
 
+       * 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 <michael.lampkin@ieee.org>.
+
+       * catgets/gencat.c (main): Return 1 if messages have been printed.
+
        * iconv/iconv_prog.c (main): Unify messages.
 
        * stdlib/strtod.c (INTERNAL): Remove bogus clearing of second word
index ff535de..175f1ff 100644 (file)
@@ -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.  */