texinfo-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

branch master updated: File name encoding variables for XS parser


From: Gavin D. Smith
Subject: branch master updated: File name encoding variables for XS parser
Date: Fri, 04 Mar 2022 13:17:42 -0500

This is an automated email from the git hooks/post-receive script.

gavin pushed a commit to branch master
in repository texinfo.

The following commit(s) were added to refs/heads/master by this push:
     new 46633624c3 File name encoding variables for XS parser
46633624c3 is described below

commit 46633624c3ca4ae168552c00cd1c41709e5c17b9
Author: Gavin Smith <gavinsmith0123@gmail.com>
AuthorDate: Fri Mar 4 18:17:27 2022 +0000

    File name encoding variables for XS parser
    
    * tp/Texinfo/XS/parsetexi/input.c
    (doc_encoding_for_input_file_name, locale_input_file_name_encoding):
    Put these variables in this file, to represent
    DOC_ENCODING_FOR_INPUT_FILE_NAME and LOCALE_OUTPUT_ENCODING_NAME.
    (encode_file_name): Obey these variables as is done in ParserNonXS.pm.
    
    * tp/Texinfo/XS/parsetexi/api.c (reset_parser): Reset both of these
    variables.
    (set_DOC_ENCODING_FOR_INPUT_FILE_NAME): Renamed and moved function.
---
 tp/Texinfo/XS/parsetexi/Parsetexi.pm |  2 +-
 tp/Texinfo/XS/parsetexi/Parsetexi.xs |  2 +-
 tp/Texinfo/XS/parsetexi/api.c        | 10 +++++++++-
 tp/Texinfo/XS/parsetexi/api.h        |  1 +
 tp/Texinfo/XS/parsetexi/conf.c       |  6 ------
 tp/Texinfo/XS/parsetexi/conf.h       |  1 -
 tp/Texinfo/XS/parsetexi/input.c      | 21 ++++++++++++++++++---
 tp/Texinfo/XS/parsetexi/input.h      |  4 ++++
 tp/Texinfo/XS/parsetexi/parser.c     |  1 -
 tp/Texinfo/XS/parsetexi/parser.h     |  2 --
 10 files changed, 34 insertions(+), 16 deletions(-)

diff --git a/tp/Texinfo/XS/parsetexi/Parsetexi.pm 
b/tp/Texinfo/XS/parsetexi/Parsetexi.pm
index c2cbf60bf0..a0c7477f18 100644
--- a/tp/Texinfo/XS/parsetexi/Parsetexi.pm
+++ b/tp/Texinfo/XS/parsetexi/Parsetexi.pm
@@ -130,7 +130,7 @@ sub parser (;$$)
       } elsif ($key eq 'DEBUG') {
         set_debug($conf->{$key}) if $conf->{$key};
       } elsif ($key eq 'DOC_ENCODING_FOR_INPUT_FILE_NAME') {
-        conf_set_DOC_ENCODING_FOR_INPUT_FILE_NAME ($conf->{$key});
+        set_DOC_ENCODING_FOR_INPUT_FILE_NAME ($conf->{$key});
       } elsif ($key eq 'LOCALE_INPUT_FILE_NAME_ENCODING') {
         if (defined ($conf->{$key})) {
           set_locale_input_file_name_encoding ($conf->{$key});
diff --git a/tp/Texinfo/XS/parsetexi/Parsetexi.xs 
b/tp/Texinfo/XS/parsetexi/Parsetexi.xs
index d75bce9dfe..da991a590e 100644
--- a/tp/Texinfo/XS/parsetexi/Parsetexi.xs
+++ b/tp/Texinfo/XS/parsetexi/Parsetexi.xs
@@ -107,7 +107,7 @@ void
 conf_set_IGNORE_SPACE_AFTER_BRACED_COMMAND_NAME (int i)
 
 void
-conf_set_DOC_ENCODING_FOR_INPUT_FILE_NAME (int i)
+set_DOC_ENCODING_FOR_INPUT_FILE_NAME (int i)
 
 void
 set_locale_input_file_name_encoding (value)
diff --git a/tp/Texinfo/XS/parsetexi/api.c b/tp/Texinfo/XS/parsetexi/api.c
index 75ca1cdf4f..742bc9425a 100644
--- a/tp/Texinfo/XS/parsetexi/api.c
+++ b/tp/Texinfo/XS/parsetexi/api.c
@@ -149,6 +149,7 @@ reset_parser (void)
   global_documentlanguage = 0;
   global_documentlanguage_fixed = 0;
 
+  doc_encoding_for_input_file_name = 1;
   free (locale_input_file_name_encoding);
   locale_input_file_name_encoding = 0;
 
@@ -1101,7 +1102,14 @@ set_documentlanguage_override (char *value)
   global_documentlanguage_fixed = 1;
 }
 
-/* used if conf.doc_encoding_for_input_file_name is 0 */
+
+void
+set_DOC_ENCODING_FOR_INPUT_FILE_NAME (int i)
+{
+  doc_encoding_for_input_file_name = i;
+}
+
+/* used if doc_encoding_for_input_file_name is 0 */
 void
 set_locale_input_file_name_encoding (char *value)
 {
diff --git a/tp/Texinfo/XS/parsetexi/api.h b/tp/Texinfo/XS/parsetexi/api.h
index 0beb464b0f..90987be708 100644
--- a/tp/Texinfo/XS/parsetexi/api.h
+++ b/tp/Texinfo/XS/parsetexi/api.h
@@ -15,6 +15,7 @@ void set_debug (int);
 void wipe_values (void);
 void reset_context_stack (void);
 void set_documentlanguage_override (char *value);
+void set_DOC_ENCODING_FOR_INPUT_FILE_NAME (int i);
 void set_locale_input_file_name_encoding (char *value);
 
 
diff --git a/tp/Texinfo/XS/parsetexi/conf.c b/tp/Texinfo/XS/parsetexi/conf.c
index 8fa65fe445..5797e12853 100644
--- a/tp/Texinfo/XS/parsetexi/conf.c
+++ b/tp/Texinfo/XS/parsetexi/conf.c
@@ -40,12 +40,6 @@ conf_set_IGNORE_SPACE_AFTER_BRACED_COMMAND_NAME (int i)
   conf.ignore_space_after_braced_command_name = i;
 }
 
-void
-conf_set_DOC_ENCODING_FOR_INPUT_FILE_NAME (int i)
-{
-  conf.doc_encoding_for_input_file_name = i;
-}
-
 void
 reset_conf (void)
 {
diff --git a/tp/Texinfo/XS/parsetexi/conf.h b/tp/Texinfo/XS/parsetexi/conf.h
index e2ff3e779e..33ce3b7fbf 100644
--- a/tp/Texinfo/XS/parsetexi/conf.h
+++ b/tp/Texinfo/XS/parsetexi/conf.h
@@ -28,7 +28,6 @@ extern CONF conf;
 void conf_set_show_menu (int i);
 void conf_set_CPP_LINE_DIRECTIVES (int i);
 void conf_set_IGNORE_SPACE_AFTER_BRACED_COMMAND_NAME (int i);
-void conf_set_DOC_ENCODING_FOR_INPUT_FILE_NAME (int i);
 void reset_conf (void);
 
 #endif
diff --git a/tp/Texinfo/XS/parsetexi/input.c b/tp/Texinfo/XS/parsetexi/input.c
index f9ee396836..cccce74de8 100644
--- a/tp/Texinfo/XS/parsetexi/input.c
+++ b/tp/Texinfo/XS/parsetexi/input.c
@@ -280,17 +280,32 @@ convert_to_utf8 (char *s)
   return ret;
 }
 
+
+int doc_encoding_for_input_file_name = 1;
+char *locale_input_file_name_encoding = 0;
+
 /* Reverse the decoding of the filename to the input encoding, to retrieve
    the bytes that were present in the original Texinfo file.  Return
    value is freed by free_small_strings. */
 char *
 encode_file_name (char *filename)
 {
-  if (input_encoding != ce_utf8 && !reverse_iconv)
+  if (!reverse_iconv)
     {
-      if (input_encoding_name)
+      if (doc_encoding_for_input_file_name)
+        {
+          if (input_encoding != ce_utf8 && input_encoding_name)
+            {
+              reverse_iconv = iconv_open (input_encoding_name, "UTF-8");
+            }
+        }
+      else
         {
-          reverse_iconv = iconv_open (input_encoding_name, "UTF-8");
+          if (locale_input_file_name_encoding)
+            {
+              reverse_iconv = iconv_open (locale_input_file_name_encoding,
+                                          "UTF-8");
+            }
         }
     }
   if (reverse_iconv && reverse_iconv != (iconv_t) -1)
diff --git a/tp/Texinfo/XS/parsetexi/input.h b/tp/Texinfo/XS/parsetexi/input.h
index 9f5cf9fc26..8f82fe04be 100644
--- a/tp/Texinfo/XS/parsetexi/input.h
+++ b/tp/Texinfo/XS/parsetexi/input.h
@@ -30,4 +30,8 @@ void free_small_strings (void);
 extern SOURCE_INFO current_source_info;
 
 extern int input_number;
+
+extern int doc_encoding_for_input_file_name;
+extern char *locale_input_file_name_encoding;
+
 #endif
diff --git a/tp/Texinfo/XS/parsetexi/parser.c b/tp/Texinfo/XS/parsetexi/parser.c
index adabf67fbf..e08452fbf4 100644
--- a/tp/Texinfo/XS/parsetexi/parser.c
+++ b/tp/Texinfo/XS/parsetexi/parser.c
@@ -138,7 +138,6 @@ char *global_clickstyle = 0;
 char *global_documentlanguage = 0;
 int global_documentlanguage_fixed = 0;
 int global_accept_internalvalue = 0;
-char *locale_input_file_name_encoding = 0;
 
 enum kbd_enum global_kbdinputstyle = kbd_distinct;
 
diff --git a/tp/Texinfo/XS/parsetexi/parser.h b/tp/Texinfo/XS/parsetexi/parser.h
index 388f714fe6..186e31f7fa 100644
--- a/tp/Texinfo/XS/parsetexi/parser.h
+++ b/tp/Texinfo/XS/parsetexi/parser.h
@@ -189,8 +189,6 @@ extern char *global_documentlanguage;
 extern int global_documentlanguage_fixed;
 extern int global_accept_internalvalue;
 
-extern char *locale_input_file_name_encoding;
-
 enum kbd_enum {kbd_none, kbd_code, kbd_example, kbd_distinct };
 extern enum kbd_enum global_kbdinputstyle;
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]