[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;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- branch master updated: File name encoding variables for XS parser,
Gavin D. Smith <=