]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
Refactor directive_domain and set_domain methods.
authorBruno Haible <bruno@clisp.org>
Thu, 1 Aug 2024 20:47:17 +0000 (22:47 +0200)
committerBruno Haible <bruno@clisp.org>
Thu, 1 Aug 2024 20:47:17 +0000 (22:47 +0200)
* gettext-tools/src/read-catalog-abstract.h
(abstract_catalog_reader_class_ty::directive_domain): Add name_pos parameter.
(catalog_reader_seen_domain): Likewise.
* gettext-tools/src/read-catalog-abstract.c (call_directive_domain,
catalog_reader_seen_domain): Likewise.
* gettext-tools/src/read-catalog.h
(default_catalog_reader_class_ty::set_domain): Add name_pos parameter.
(default_directive_domain, default_set_domain): Likewise.
* gettext-tools/src/read-catalog.c (call_set_domain, default_directive_domain):
Likewise.
(default_set_domain): Add name_pos parameter. Use it instead of the global
variable gram_pos.
* gettext-tools/src/msgfmt.c (msgfmt_set_domain): Likewise.
* gettext-tools/src/xgettext.c (exclude_directive_domain): Likewise.
* gettext-tools/src/po-gram-gen.y: Update catalog_reader_seen_domain invocation.

gettext-tools/src/msgfmt.c
gettext-tools/src/po-gram-gen.y
gettext-tools/src/read-catalog-abstract.c
gettext-tools/src/read-catalog-abstract.h
gettext-tools/src/read-catalog.c
gettext-tools/src/read-catalog.h
gettext-tools/src/xgettext.c

index 16f5ed66937daee8fb38e64a0a40aa12b963b2a0..b3837449ac5d3bde73f9a01178b02a77075a1ae6 100644 (file)
@@ -1200,7 +1200,8 @@ msgfmt_parse_debrief (abstract_catalog_reader_ty *catr)
 
 /* Set 'domain' directive when seen in .po file.  */
 static void
-msgfmt_set_domain (default_catalog_reader_ty *dcatr, char *name)
+msgfmt_set_domain (default_catalog_reader_ty *dcatr,
+                   char *name, lex_pos_ty *name_pos)
 {
   /* If no output file was given, we change it with each 'domain'
      directive.  */
@@ -1234,7 +1235,7 @@ msgfmt_set_domain (default_catalog_reader_ty *dcatr, char *name)
   else
     {
       if (check_domain)
-        po_gram_error_at_line (&gram_pos,
+        po_gram_error_at_line (name_pos,
                                _("'domain %s' directive ignored"), name);
 
       /* NAME was allocated in po-gram-gen.y but is not used anywhere.  */
index 05ff9b6c38177789c74ba90f0e96d152dae2e912..a70fcc1bf944bf1ab8b9dd779fb01124189fa6b4 100644 (file)
@@ -148,7 +148,7 @@ comment
 domain
         : DOMAIN STRING
                 {
-                   catalog_reader_seen_domain (ps->catr, $2.string);
+                   catalog_reader_seen_domain (ps->catr, $2.string, &gram_pos);
                 }
         ;
 
index 71a9b644e33423e73d8c4f0daf11bbf0fc52db42..31c31afa4ce660333614ca31a64795de8bf48d14 100644 (file)
@@ -85,10 +85,11 @@ call_parse_debrief (abstract_catalog_reader_ty *catr)
 }
 
 static inline void
-call_directive_domain (abstract_catalog_reader_ty *catr, char *name)
+call_directive_domain (abstract_catalog_reader_ty *catr,
+                       char *name, lex_pos_ty *name_pos)
 {
   if (catr->methods->directive_domain)
-    catr->methods->directive_domain (catr, name);
+    catr->methods->directive_domain (catr, name, name_pos);
 }
 
 static inline void
@@ -177,9 +178,10 @@ catalog_reader_parse (abstract_catalog_reader_ty *catr, FILE *fp,
 
 
 void
-catalog_reader_seen_domain (abstract_catalog_reader_ty *catr, char *name)
+catalog_reader_seen_domain (abstract_catalog_reader_ty *catr,
+                            char *name, lex_pos_ty *name_pos)
 {
-  call_directive_domain (catr, name);
+  call_directive_domain (catr, name, name_pos);
 }
 
 
index a9de36878a368e1c68cc69660c384e2731ea8967..2381f106aaae80cb42a3f7eb736b6f4f6b70319c 100644 (file)
@@ -76,7 +76,8 @@ struct abstract_catalog_reader_class_ty
   void (*parse_debrief) (struct abstract_catalog_reader_ty *catr);
 
   /* What to do with a domain directive.  */
-  void (*directive_domain) (struct abstract_catalog_reader_ty *catr, char *name);
+  void (*directive_domain) (struct abstract_catalog_reader_ty *catr,
+                            char *name, lex_pos_ty *name_pos);
 
   /* What to do with a message directive.  */
   void (*directive_message) (struct abstract_catalog_reader_ty *catr,
@@ -189,7 +190,7 @@ extern void
    It invokes the 'directive_domain' method.  */
 extern void
        catalog_reader_seen_domain (abstract_catalog_reader_ty *catr,
-                                   char *name);
+                                   char *name, lex_pos_ty *name_pos);
 /* This callback is called whenever a message has been seen.
    It invokes the 'directive_message' method.  */
 extern void
index 2e85fd96743af3dd927164a168b88962c9abf4e1..0f8d065f31922964878e8715556240749bafc9fb 100644 (file)
 /* Inline functions to invoke the methods.  */
 
 static inline void
-call_set_domain (struct default_catalog_reader_ty *dcatr, char *name)
+call_set_domain (struct default_catalog_reader_ty *dcatr,
+                 char *name, lex_pos_ty *name_pos)
 {
   default_catalog_reader_class_ty *methods =
     (default_catalog_reader_class_ty *) dcatr->methods;
 
   if (methods->set_domain)
-    methods->set_domain (dcatr, name);
+    methods->set_domain (dcatr, name, name_pos);
 }
 
 static inline void
@@ -216,11 +217,12 @@ default_reset_comment_state (default_catalog_reader_ty *dcatr)
 
 /* Process 'domain' directive from .po file.  */
 void
-default_directive_domain (abstract_catalog_reader_ty *catr, char *name)
+default_directive_domain (abstract_catalog_reader_ty *catr,
+                          char *name, lex_pos_ty *name_pos)
 {
   default_catalog_reader_ty *dcatr = (default_catalog_reader_ty *) catr;
 
-  call_set_domain (dcatr, name);
+  call_set_domain (dcatr, name, name_pos);
 
   /* If there are accumulated comments, throw them away, they are
      probably part of the file header, or about the domain directive,
@@ -313,14 +315,15 @@ default_comment_special (abstract_catalog_reader_ty *catr, const char *s)
 
 
 void
-default_set_domain (default_catalog_reader_ty *dcatr, char *name)
+default_set_domain (default_catalog_reader_ty *dcatr,
+                    char *name, lex_pos_ty *name_pos)
 {
   if (dcatr->allow_domain_directives)
     /* Override current domain name.  Don't free memory.  */
     dcatr->domain = name;
   else
     {
-      po_gram_error_at_line (&gram_pos,
+      po_gram_error_at_line (name_pos,
                              _("this file may not contain domain directives"));
 
       /* NAME was allocated in po-gram-gen.y but is not used anywhere.  */
index 6fc24528c2450fdabc2ea497875f906c4076859c..72d6111f01108da8ede0fa4587dd43fd61d491b7 100644 (file)
@@ -52,7 +52,8 @@ struct default_catalog_reader_class_ty
   struct abstract_catalog_reader_class_ty super;
 
   /* How to change the current domain.  */
-  void (*set_domain) (struct default_catalog_reader_ty *dcatr, char *name);
+  void (*set_domain) (struct default_catalog_reader_ty *dcatr,
+                      char *name, lex_pos_ty *name_pos);
 
   /* How to add a message to the list.  */
   void (*add_message) (struct default_catalog_reader_ty *dcatr,
@@ -127,7 +128,7 @@ extern void default_destructor (abstract_catalog_reader_ty *catr);
 extern void default_parse_brief (abstract_catalog_reader_ty *catr);
 extern void default_parse_debrief (abstract_catalog_reader_ty *catr);
 extern void default_directive_domain (abstract_catalog_reader_ty *catr,
-                                      char *name);
+                                      char *name, lex_pos_ty *name_pos);
 extern void default_directive_message (abstract_catalog_reader_ty *catr,
                                        char *msgctxt,
                                        char *msgid,
@@ -146,7 +147,8 @@ extern void default_comment_filepos (abstract_catalog_reader_ty *catr,
                                      const char *file_name, size_t line_number);
 extern void default_comment_special (abstract_catalog_reader_ty *catr,
                                      const char *s);
-extern void default_set_domain (default_catalog_reader_ty *dcatr, char *name);
+extern void default_set_domain (default_catalog_reader_ty *dcatr,
+                                char *name, lex_pos_ty *name_pos);
 extern void default_add_message (default_catalog_reader_ty *dcatr,
                                  char *msgctxt,
                                  char *msgid,
index aec4343137f566f88da29ac09bff1f03b9ef6974..c470b334ba718d275d1370a57e231168509b2756 100644 (file)
@@ -1268,9 +1268,10 @@ or by email to <%s>.\n"),
 
 
 static void
-exclude_directive_domain (abstract_catalog_reader_ty *catr, char *name)
+exclude_directive_domain (abstract_catalog_reader_ty *catr,
+                          char *name, lex_pos_ty *name_pos)
 {
-  po_gram_error_at_line (&gram_pos,
+  po_gram_error_at_line (name_pos,
                          _("this file may not contain domain directives"));
 }