]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
Record the obsoleteness status in the message_ty struct.
authorBruno Haible <bruno@clisp.org>
Mon, 7 May 2001 13:12:13 +0000 (13:12 +0000)
committerBruno Haible <bruno@clisp.org>
Mon, 7 May 2001 13:12:13 +0000 (13:12 +0000)
src/ChangeLog
src/msgcmp.c
src/msgcomm.c
src/msgfmt.c
src/po-gram-gen.y
src/po.c
src/po.h
src/read-po.c
src/xgettext.c

index 47a2b762d85a5bf8d8d7fc18ff60263cd7a92985..44c5801f527707a079c89b7c66c1359e0635b9a2 100644 (file)
@@ -1,3 +1,21 @@
+2001-04-30  Bruno Haible  <haible@clisp.cons.org>
+
+       Save the messages' obsoleteness status in the 'message_ty'.
+       * po.h (struct po_method_ty): Add 'obsolete' argument to
+       directive_message method.
+       (po_callback_message): Add 'obsolete' argument.
+       * po.c (po_directive_message): Add 'obsolete' argument. Pass it to
+       method->directive_message.
+       (po_callback_message): Add 'obsolete' argument.
+       * po-gram-gen.y (message): Pass 'obsolete' argument to
+       po_callback_message.
+       * msgcmp.c (compare_directive_message): Add 'obsolete' argument.
+       * msgcomm.c (extract_directive_message): Likewise.
+       * msgfmt.c (format_directive_message): Likewise.
+       * xgettext.c (exclude_directive_message, extract_directive_message):
+       Likewise.
+       * read-po.c (readall_directive_message): Likewise. Set mp->obsolete.
+
 2001-05-01  Bruno Haible  <haible@clisp.cons.org>
 
        Reduce running time for very long msgstrs from O(n^2) to O(n) where
index ef07b1dbb9209998b1de1f43e82b17a1f44ccc08..816cbe1c75eeff451ae59c89b2e9ca8bbfe71e95 100644 (file)
@@ -80,7 +80,8 @@ static void compare_directive_message PARAMS ((po_ty *__that, char *__msgid,
                                               char *__msgid_plural,
                                               char *__msgstr,
                                               size_t __msgstr_len,
-                                              lex_pos_ty *__msgstr_pos));
+                                              lex_pos_ty *__msgstr_pos,
+                                              int __obsolete));
 static void compare_parse_debrief PARAMS ((po_ty *__that));
 
 
@@ -338,7 +339,7 @@ compare_directive_domain (that, name)
 
 static void
 compare_directive_message (that, msgid, msgid_pos, msgid_plural,
-                          msgstr, msgstr_len, msgstr_pos)
+                          msgstr, msgstr_len, msgstr_pos, obsolete)
      po_ty *that;
      char *msgid;
      lex_pos_ty *msgid_pos;
@@ -346,6 +347,7 @@ compare_directive_message (that, msgid, msgid_pos, msgid_plural,
      char *msgstr;
      size_t msgstr_len;
      lex_pos_ty *msgstr_pos;
+     int obsolete;
 {
   compare_class_ty *this = (compare_class_ty *) that;
   message_ty *mp;
index 42022704320f75b08a2b3b365c83084cb63bc66a..7e4917a9c751dbf91dc341062955fe250aa45075 100644 (file)
@@ -115,7 +115,8 @@ static void extract_directive_message PARAMS ((po_ty *__that, char *__msgid,
                                               char *__msgid_plural,
                                               char *__msgstr,
                                               size_t __msgstr_len,
-                                              lex_pos_ty *__msgstr_pos));
+                                              lex_pos_ty *__msgstr_pos,
+                                              int obsolete));
 static void extract_parse_brief PARAMS ((po_ty *__that));
 static void extract_comment PARAMS ((po_ty *__that, const char *__s));
 static void extract_comment_dot PARAMS ((po_ty *__that, const char *__s));
@@ -564,7 +565,7 @@ extract_directive_domain (that, name)
 
 static void
 extract_directive_message (that, msgid, msgid_pos, msgid_plural,
-                          msgstr, msgstr_len, msgstr_pos)
+                          msgstr, msgstr_len, msgstr_pos, obsolete)
      po_ty *that;
      char *msgid;
      lex_pos_ty *msgid_pos;
@@ -572,6 +573,7 @@ extract_directive_message (that, msgid, msgid_pos, msgid_plural,
      char *msgstr;
      size_t msgstr_len;
      lex_pos_ty *msgstr_pos;
+     int obsolete;
 {
   extract_class_ty *this = (extract_class_ty *)that;
   message_ty *mp;
index 3b10a156cc43eb708d5650d6b6f6e0f5206f7518..e175597d997b121e40be87b571424b8c4dd98a3f 100644 (file)
@@ -176,7 +176,8 @@ static void format_directive_message PARAMS ((po_ty *__pop, char *__msgid,
                                              char *__msgid_plural,
                                              char *__msgstr,
                                              size_t __msgstr_len,
-                                             lex_pos_ty *__msgstr_pos));
+                                             lex_pos_ty *__msgstr_pos,
+                                             int __obsolete));
 static void format_comment_special PARAMS ((po_ty *pop, const char *s));
 static void format_debrief PARAMS ((po_ty *));
 static struct msg_domain *new_domain PARAMS ((const char *name));
@@ -552,7 +553,7 @@ domain name \"%s\" not suitable as file name: will use prefix"), name);
 /* Process `msgid'/`msgstr' pair from .po file.  */
 static void
 format_directive_message (that, msgid_string, msgid_pos, msgid_plural,
-                         msgstr_string, msgstr_len, msgstr_pos)
+                         msgstr_string, msgstr_len, msgstr_pos, obsolete)
      po_ty *that;
      char *msgid_string;
      lex_pos_ty *msgid_pos;
@@ -560,6 +561,7 @@ format_directive_message (that, msgid_string, msgid_pos, msgid_plural,
      char *msgstr_string;
      size_t msgstr_len;
      lex_pos_ty *msgstr_pos;
+     int obsolete;
 {
   msgfmt_class_ty *this = (msgfmt_class_ty *) that;
   struct hashtable_entry *entry;
index fdee4862d7763f8a2f79c89062e9edb1f719d4fc..b539b56b6006be19a561ab7f61a2aa6f72075cd2 100644 (file)
@@ -145,7 +145,8 @@ message
                  check_obsolete ($1, $4);
                  if (!$1.obsolete || pass_obsolete_entries)
                    po_callback_message (string2, &$1.pos, NULL,
-                                        string4, strlen (string4) + 1, &$3.pos);
+                                        string4, strlen (string4) + 1, &$3.pos,
+                                        $1.obsolete);
                  else
                    {
                      free (string2);
@@ -161,7 +162,8 @@ message
                  check_obsolete ($1, $4);
                  if (!$1.obsolete || pass_obsolete_entries)
                    po_callback_message (string2, &$1.pos, $3.string,
-                                        $4.rhs.msgstr, $4.rhs.msgstr_len, &$4.pos);
+                                        $4.rhs.msgstr, $4.rhs.msgstr_len, &$4.pos,
+                                        $1.obsolete);
                  else
                    {
                      free (string2);
index 0bf95ffcd454f9fea9052557949876a89474bd67..e9ccb33da416becae6ad4660984553b85164df42 100644 (file)
--- a/src/po.c
+++ b/src/po.c
@@ -39,7 +39,8 @@ static void po_directive_message PARAMS ((po_ty *__pop, char *__msgid,
                                          lex_pos_ty *__msgid_pos,
                                          char *__msgid_plural,
                                          char *__msgstr, size_t __msgstr_len,
-                                         lex_pos_ty *__msgstr_pos));
+                                         lex_pos_ty *__msgstr_pos,
+                                         int __obsolete));
 static void po_comment PARAMS ((po_ty *__pop, const char *__s));
 static void po_comment_dot PARAMS ((po_ty *__pop, const char *__s));
 static void po_comment_filepos PARAMS ((po_ty *__pop, const char *__name,
@@ -136,7 +137,7 @@ po_callback_domain (name)
 
 static void
 po_directive_message (pop, msgid, msgid_pos, msgid_plural,
-                     msgstr, msgstr_len, msgstr_pos)
+                     msgstr, msgstr_len, msgstr_pos, obsolete)
      po_ty *pop;
      char *msgid;
      lex_pos_ty *msgid_pos;
@@ -144,22 +145,25 @@ po_directive_message (pop, msgid, msgid_pos, msgid_plural,
      char *msgstr;
      size_t msgstr_len;
      lex_pos_ty *msgstr_pos;
+     int obsolete;
 {
   if (pop->method->directive_message)
     pop->method->directive_message (pop, msgid, msgid_pos, msgid_plural,
-                                   msgstr, msgstr_len, msgstr_pos);
+                                   msgstr, msgstr_len, msgstr_pos, obsolete);
 }
 
 
 void
 po_callback_message (msgid, msgid_pos, msgid_plural,
-                    msgstr, msgstr_len, msgstr_pos)
+                    msgstr, msgstr_len, msgstr_pos,
+                    obsolete)
      char *msgid;
      lex_pos_ty *msgid_pos;
      char *msgid_plural;
      char *msgstr;
      size_t msgstr_len;
      lex_pos_ty *msgstr_pos;
+     int obsolete;
 {
   /* assert(callback_arg); */
 
@@ -168,7 +172,7 @@ po_callback_message (msgid, msgid_pos, msgid_plural,
     po_lex_charset_set (msgstr, gram_pos.file_name);
 
   po_directive_message (callback_arg, msgid, msgid_pos, msgid_plural,
-                       msgstr, msgstr_len, msgstr_pos);
+                       msgstr, msgstr_len, msgstr_pos, obsolete);
 }
 
 
index 0b77f8e85bdb170838a3531e5cc5f2de9c6b498c..069296dc50e963ca51f1777bea50364864f9232f 100644 (file)
--- a/src/po.h
+++ b/src/po.h
@@ -59,7 +59,8 @@ struct po_method_ty
                                     char *__msgid, lex_pos_ty *__msgid_pos,
                                     char *__msgid_plural,
                                     char *__msgstr, size_t __msgstr_len,
-                                    lex_pos_ty *__msgstr_pos));
+                                    lex_pos_ty *__msgstr_pos,
+                                    int __obsolete));
 
   /* This method is invoked before the parse, but after the file is
      opened by the lexer.  */
@@ -134,7 +135,8 @@ extern void po_callback_message PARAMS ((char *__msgid,
                                         lex_pos_ty *__msgid_pos,
                                         char *__msgid_plural,
                                         char *__msgstr, size_t __msgstr_len,
-                                        lex_pos_ty *__msgstr_pos));
+                                        lex_pos_ty *__msgstr_pos,
+                                        int __obsolete));
 extern void po_callback_comment PARAMS ((const char *__s));
 extern void po_callback_comment_dot PARAMS ((const char *__s));
 extern void po_callback_comment_filepos PARAMS ((const char *__s, int __line));
index 920fc7c3471b218eb809de0026fbf7159a6124d2..7c502494a3da6974d1fca762dbe2928c69a8ec99 100644 (file)
@@ -76,7 +76,8 @@ static void readall_directive_message PARAMS ((po_ty *that, char *msgid,
                                               lex_pos_ty *msgid_pos,
                                               char *msgid_plural,
                                               char *msgstr, size_t msgstr_len,
-                                              lex_pos_ty *msgstr_pos));
+                                              lex_pos_ty *msgstr_pos,
+                                              int obsolete));
 static void readall_parse_brief PARAMS ((po_ty *that));
 static void readall_parse_debrief PARAMS ((po_ty *that));
 static void readall_comment PARAMS ((po_ty *that, const char *s));
@@ -160,7 +161,7 @@ readall_directive_domain (that, name)
 
 static void
 readall_directive_message (that, msgid, msgid_pos, msgid_plural,
-                        msgstr, msgstr_len, msgstr_pos)
+                          msgstr, msgstr_len, msgstr_pos, obsolete)
      po_ty *that;
      char *msgid;
      lex_pos_ty *msgid_pos;
@@ -168,6 +169,7 @@ readall_directive_message (that, msgid, msgid_pos, msgid_plural,
      char *msgstr;
      size_t msgstr_len;
      lex_pos_ty *msgstr_pos;
+     int obsolete;
 {
   readall_class_ty *this = (readall_class_ty *) that;
   message_ty *mp;
@@ -180,11 +182,16 @@ readall_directive_message (that, msgid, msgid_pos, msgid_plural,
   /* See if this message ID has been seen before.  */
   mp = message_list_search (this->mlp, msgid);
   if (mp)
-    free (msgid);
+    {
+      free (msgid);
+      if (!obsolete)
+       mp->obsolete = 0;
+    }
   else
     {
       mp = message_alloc (msgid, msgid_plural);
       message_list_append (this->mlp, mp);
+      mp->obsolete = obsolete;
     }
 
   /* Add the accumulated comments to the message.  Clear the
index 5c451bf3e31ef49aaa305e392c005926b49ffe14..abfba61845141b5408280e296ff8fae2a02cbd79 100644 (file)
@@ -157,7 +157,8 @@ static void exclude_directive_message PARAMS ((po_ty *__pop, char *__msgid,
                                               char *__msgid_plural,
                                               char *__msgstr,
                                               size_t __msgstr_len,
-                                              lex_pos_ty *__msgstr_pos));
+                                              lex_pos_ty *__msgstr_pos,
+                                              int __obsolete));
 static void read_exclusion_file PARAMS ((char *__file_name));
 static message_ty *remember_a_message PARAMS ((message_list_ty *__mlp,
                                               xgettext_token_ty *__tp));
@@ -172,7 +173,8 @@ static void extract_directive_message PARAMS ((po_ty *__that, char *__msgid,
                                               char *__msgid_plural,
                                               char *__msgstr,
                                               size_t __msgstr_len,
-                                              lex_pos_ty *__msgstr_pos));
+                                              lex_pos_ty *__msgstr_pos,
+                                              int __obsolete));
 static void extract_parse_brief PARAMS ((po_ty *__that));
 static void extract_comment PARAMS ((po_ty *__that, const char *__s));
 static void extract_comment_dot PARAMS ((po_ty *__that, const char *__s));
@@ -675,7 +677,7 @@ exclude_directive_domain (pop, name)
 
 static void
 exclude_directive_message (pop, msgid, msgid_pos, msgid_plural,
-                          msgstr, msgstr_len, msgstr_pos)
+                          msgstr, msgstr_len, msgstr_pos, obsolete)
      po_ty *pop;
      char *msgid;
      lex_pos_ty *msgid_pos;
@@ -683,6 +685,7 @@ exclude_directive_message (pop, msgid, msgid_pos, msgid_plural,
      char *msgstr;
      size_t msgstr_len;
      lex_pos_ty *msgstr_pos;
+     int obsolete;
 {
   message_ty *mp;
 
@@ -1093,7 +1096,7 @@ extract_directive_domain (that, name)
 
 static void
 extract_directive_message (that, msgid, msgid_pos, msgid_plural,
-                          msgstr, msgstr_len, msgstr_pos)
+                          msgstr, msgstr_len, msgstr_pos, obsolete)
      po_ty *that;
      char *msgid;
      lex_pos_ty *msgid_pos;
@@ -1101,6 +1104,7 @@ extract_directive_message (that, msgid, msgid_pos, msgid_plural,
      char *msgstr;
      size_t msgstr_len;
      lex_pos_ty *msgstr_pos;
+     int obsolete;
 {
   extract_class_ty *this = (extract_class_ty *)that;
   message_ty *mp;