[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[no subject]
From: |
Patrice Dumas |
Date: |
Mon, 23 Dec 2024 18:48:34 -0500 (EST) |
branch: master
commit 58f5ac6101a0858bee86775bc44fc49459e3ff68
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Sat Dec 21 16:46:55 2024 +0100
* tp/Texinfo/XS/teximakehtml.c (add_to_option_list)
(remove_from_option_list, set_expansion, unset_expansion)
(main): add add_to_option_list and remove_from_option_list, use in
set_expansion, unset_expansion nad to set EXPANDED_FORMATS.
* tp/Texinfo/XS/teximakehtml.c (long_options, main): add css-include
and css-ref options.
* tp/Texinfo/XS/teximakehtml.c (main): always consider that
command-line array options are set from the command-line and call
options_list_add_option_number early for all these customization
variables.
* tp/Texinfo/XS/convert/texinfo.c (txi_converter_setup),
tp/Texinfo/XS/teximakehtml.c (main): set TEXINFO_LANGUAGE_DIRECTORIES
option in main, not in txi_converter_setup. Remove
texinfo_language_config_dirs_in txi_converter_setup argument. Move
code adding top_srcdir/util to texinfo_language_config_dirs to main.
---
ChangeLog | 21 +++++++
tp/Texinfo/XS/convert/texinfo.c | 22 -------
tp/Texinfo/XS/convert/texinfo.h | 1 -
tp/Texinfo/XS/teximakehtml.c | 123 +++++++++++++++++++++++++++++++---------
4 files changed, 116 insertions(+), 51 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 8a8197625d..72699239c4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+2024-12-21 Patrice Dumas <pertusus@free.fr>
+
+ * tp/Texinfo/XS/teximakehtml.c (add_to_option_list)
+ (remove_from_option_list, set_expansion, unset_expansion)
+ (main): add add_to_option_list and remove_from_option_list, use in
+ set_expansion, unset_expansion nad to set EXPANDED_FORMATS.
+
+ * tp/Texinfo/XS/teximakehtml.c (long_options, main): add css-include
+ and css-ref options.
+
+ * tp/Texinfo/XS/teximakehtml.c (main): always consider that
+ command-line array options are set from the command-line and call
+ options_list_add_option_number early for all these customization
+ variables.
+
+ * tp/Texinfo/XS/convert/texinfo.c (txi_converter_setup),
+ tp/Texinfo/XS/teximakehtml.c (main): set TEXINFO_LANGUAGE_DIRECTORIES
+ option in main, not in txi_converter_setup. Remove
+ texinfo_language_config_dirs_in txi_converter_setup argument. Move
+ code adding top_srcdir/util to texinfo_language_config_dirs to main.
+
2024-12-21 Patrice Dumas <pertusus@free.fr>
* tp/Texinfo/XS/main/customization_options.c (clear_options_list):
diff --git a/tp/Texinfo/XS/convert/texinfo.c b/tp/Texinfo/XS/convert/texinfo.c
index 84a5460566..7a8aba7b44 100644
--- a/tp/Texinfo/XS/convert/texinfo.c
+++ b/tp/Texinfo/XS/convert/texinfo.c
@@ -382,7 +382,6 @@ txi_complete_document (DOCUMENT *document, unsigned long
flags,
CONVERTER *
txi_converter_setup (const char *converted_format,
const char *output_format,
- const STRING_LIST *texinfo_language_config_dirs_in,
const DEPRECATED_DIRS_LIST *deprecated_dirs,
OPTIONS_LIST *customizations)
{
@@ -390,14 +389,9 @@ txi_converter_setup (const char *converted_format,
= find_format_name_converter_format (converted_format);
CONVERTER_INITIALIZATION_INFO *conf;
CONVERTER *self;
- STRING_LIST *texinfo_language_config_dirs = new_string_list ();
conf = new_converter_initialization_info ();
- if (texinfo_language_config_dirs_in)
- copy_strings (texinfo_language_config_dirs,
- texinfo_language_config_dirs_in);
-
if (deprecated_dirs)
copy_deprecated_dirs (&conf->deprecated_config_directories,
deprecated_dirs);
@@ -407,22 +401,6 @@ txi_converter_setup (const char *converted_format,
copy_options_list (&conf->conf, customizations);
}
- if (conf->conf.options->TEST.o.integer <= 0
- && conversion_paths_info.texinfo_uninstalled
- && conversion_paths_info.p.uninstalled.top_srcdir)
- {
- char *in_source_util_dir;
- xasprintf (&in_source_util_dir, "%s/util",
- conversion_paths_info.p.uninstalled.top_srcdir);
- add_string (in_source_util_dir, texinfo_language_config_dirs);
- free (in_source_util_dir);
- }
-
- add_option_strlist_value (&conf->conf, "TEXINFO_LANGUAGE_DIRECTORIES",
- texinfo_language_config_dirs);
-
- destroy_strings_list (texinfo_language_config_dirs);
-
self = converter_converter (converter_format, conf);
destroy_converter_initialization_info (conf);
diff --git a/tp/Texinfo/XS/convert/texinfo.h b/tp/Texinfo/XS/convert/texinfo.h
index f86b88c89d..cbc2796bb7 100644
--- a/tp/Texinfo/XS/convert/texinfo.h
+++ b/tp/Texinfo/XS/convert/texinfo.h
@@ -50,7 +50,6 @@ void txi_complete_document (DOCUMENT *document, unsigned long
flags,
CONVERTER *txi_converter_setup (const char *converter_format,
const char *output_format,
- const STRING_LIST *texinfo_language_config_dirs,
const DEPRECATED_DIRS_LIST *deprecated_dirs,
OPTIONS_LIST *customizations);
diff --git a/tp/Texinfo/XS/teximakehtml.c b/tp/Texinfo/XS/teximakehtml.c
index 0644821ad4..70359bad95 100644
--- a/tp/Texinfo/XS/teximakehtml.c
+++ b/tp/Texinfo/XS/teximakehtml.c
@@ -528,17 +528,43 @@ push_include_directory (STRING_LIST *include_dirs_list,
char *text)
}
}
+static void
+add_to_option_list (OPTION *option, const char *value)
+{
+ STRING_LIST *str_list = option->o.strlist;
+ size_t idx_option = find_string (str_list, value);
+
+ if (!idx_option)
+ add_string (value, str_list);
+}
+
+static int
+remove_from_option_list (OPTION *option, const char *value)
+{
+ STRING_LIST *str_list;
+ size_t idx_option;
+
+ if (option->type != GOT_bytes_string_list
+ && option->type != GOT_file_string_list
+ && option->type != GOT_char_string_list)
+ return 0;
+
+ str_list = option->o.strlist;
+ idx_option = find_string (str_list, value);
+
+ if (idx_option)
+ remove_from_strings_list (str_list, idx_option -1);
+ return 1;
+}
+
static void
set_expansion (OPTIONS_LIST *options_list, STRING_LIST *ignored_formats,
const char *format_name)
{
OPTION *option = &options_list->options->EXPANDED_FORMATS;
- STRING_LIST *str_list = option->o.strlist;
- size_t idx_format = find_string (str_list, format_name);
size_t ignored_idx = find_string (ignored_formats, format_name);
- if (!idx_format)
- add_string (format_name, str_list);
+ add_to_option_list (option, format_name);
if (ignored_idx)
remove_from_strings_list (ignored_formats, ignored_idx -1);
@@ -549,12 +575,9 @@ unset_expansion (OPTIONS_LIST *options_list, STRING_LIST
*ignored_formats,
const char *format_name)
{
OPTION *option = &options_list->options->EXPANDED_FORMATS;
- STRING_LIST *str_list = option->o.strlist;
- size_t idx_format = find_string (str_list, format_name);
size_t ignored_idx = find_string (ignored_formats, format_name);
- if (idx_format)
- remove_from_strings_list (str_list, idx_format -1);
+ remove_from_option_list (option, format_name);
if (!ignored_idx)
add_string (format_name, ignored_formats);
@@ -723,6 +746,8 @@ static int print_help_p;
#define SPLIT_SIZE_OPT 47
#define DEBUG_OPT 48
#define NO_VALIDATE_OPT 49
+#define CSS_INCLUDE_OPT 50
+#define CSS_REF_OPT 51
#define IFFORMAT_TABLE(upcase, name) \
{"if" #name, 0, 0, IF ## upcase ## _OPT}, \
@@ -733,6 +758,8 @@ static struct option long_options[] = {
{"demonstration", 0, &demonstration_p, 1},
{"mimick", 0, &mimick_p, 1},
+ {"css-include", required_argument, 0, CSS_INCLUDE_OPT},
+ {"css-ref", required_argument, 0, CSS_REF_OPT},
{"debug", required_argument, 0, DEBUG_OPT},
{"disable-encoding", 0, 0, DISABLE_ENCODING_OPT},
{"document-language", required_argument, 0, DOCUMENT_LANGUAGE_OPT},
@@ -799,7 +826,6 @@ main (int argc, char *argv[])
size_t errors_count = 0;
size_t errors_nr;
STRING_LIST *texinfo_language_config_dirs;
- STRING_LIST converter_texinfo_language_config_dirs;
STRING_LIST ignored_formats;
STRING_LIST default_expanded_formats;
STRING_LIST prepend_dirs;
@@ -897,6 +923,22 @@ main (int argc, char *argv[])
memset (&input_files, 0, sizeof (STRING_LIST));
initialize_options_list (&cmdline_options);
+
+ /* always consider that command-line array options are set from
+ the command-line */
+
+ options_list_add_option_number (&cmdline_options,
+ cmdline_options.options->CSS_FILES.number);
+ options_list_add_option_number (&cmdline_options,
+ cmdline_options.options->CSS_REFS.number);
+ options_list_add_option_number (&cmdline_options,
+ cmdline_options.options->INCLUDE_DIRECTORIES.number);
+ options_list_add_option_number (&cmdline_options,
+ cmdline_options.options->TEXINFO_LANGUAGE_DIRECTORIES.number);
+ options_list_add_option_number (&cmdline_options,
+ cmdline_options.options->EXPANDED_FORMATS.number);
+
+
memset (&ignored_formats, 0, sizeof (STRING_LIST));
initialize_options_list (&init_files_options);
@@ -1038,12 +1080,23 @@ main (int argc, char *argv[])
{
OPTION *option = &cmdline_options.options->INCLUDE_DIRECTORIES;
push_include_directory (option->o.strlist, optarg);
- options_list_add_option_number (&cmdline_options, option->number);
}
break;
case 'P':
push_include_directory (&prepend_dirs, optarg);
break;
+ case CSS_INCLUDE_OPT:
+ {
+ OPTION *option = &cmdline_options.options->CSS_FILES;
+ add_string (optarg, option->o.strlist);
+ }
+ break;
+ case CSS_REF_OPT:
+ {
+ OPTION *option = &cmdline_options.options->CSS_REFS;
+ add_string (optarg, option->o.strlist);
+ }
+ break;
case 'h':
print_help_p = 1;
break;
@@ -1281,6 +1334,12 @@ main (int argc, char *argv[])
text_append (&help_message, _("Options for HTML:"));
text_append_n (&help_message, "\n", 1);
text_append (&help_message, _(
+ " --css-include=FILE include FILE in HTML <style> output;\n
read stdin if FILE is -."));
+ text_append_n (&help_message, "\n", 1);
+ text_append (&help_message, _(
+ " --css-ref=URL generate CSS reference to URL."));
+ text_append_n (&help_message, "\n", 1);
+ text_append (&help_message, _(
" --split=SPLIT split at SPLIT, where SPLIT may be
`chapter',\n `section' or `node'."));
text_append_n (&help_message, "\n", 1);
text_append (&help_message, _(
@@ -1384,6 +1443,17 @@ main (int argc, char *argv[])
free (format_name);
}
+ if (!test_mode_set
+ && conversion_paths_info.texinfo_uninstalled
+ && conversion_paths_info.p.uninstalled.top_srcdir)
+ {
+ char *in_source_util_dir;
+ xasprintf (&in_source_util_dir, "%s/util",
+ conversion_paths_info.p.uninstalled.top_srcdir);
+ add_string (in_source_util_dir, texinfo_language_config_dirs);
+ free (in_source_util_dir);
+ }
+
output_format_option
= get_conf (program_options.options->TEXINFO_OUTPUT_FORMAT.number);
output_format = output_format_option->o.string;
@@ -1416,14 +1486,9 @@ main (int argc, char *argv[])
}
for (i = 0; i < default_expanded_formats.number; i++)
{
- STRING_LIST *expanded_formats_list = expanded_formats_option->o.strlist;
- if (!find_string (expanded_formats_list,
- default_expanded_formats.list[i]))
- add_string (default_expanded_formats.list[i], expanded_formats_list);
+ add_to_option_list (expanded_formats_option,
+ default_expanded_formats.list[i]);
}
- options_list_add_option_number (&cmdline_options,
- expanded_formats_option->number);
-
/* corresponds to eval "require $module"; in texi2any.pl */
txi_converter_output_format_setup (converted_format);
@@ -1535,8 +1600,6 @@ main (int argc, char *argv[])
configured_name_version);
}
- memset (&converter_texinfo_language_config_dirs, 0, sizeof (STRING_LIST));
-
if (optind < argc)
{
int j;
@@ -1586,11 +1649,13 @@ main (int argc, char *argv[])
OPTION *macro_expand_option;
OPTION *dump_texi_option;
OPTION *converter_include_dirs_option;
+ OPTION *converter_texinfo_language_directories_option;
STRING_LIST *cmdline_include_dirs
= cmdline_options.options->INCLUDE_DIRECTORIES.o.strlist;
STRING_LIST *parser_include_dirs
= parser_options.options->INCLUDE_DIRECTORIES.o.strlist;
STRING_LIST *converter_include_dirs;
+ STRING_LIST *converter_texinfo_language_config_dirs;
const char *curdir = ".";
input_file_path = input_files.list[i];
@@ -1787,24 +1852,28 @@ main (int argc, char *argv[])
clear_strings_list (converter_include_dirs);
copy_strings (converter_include_dirs, &prepended_include_directories);
copy_strings (converter_include_dirs, cmdline_include_dirs);
- /* always mark include directories as set in converter options */
- options_list_add_option_number (&convert_options,
- converter_include_dirs_option->number);
- add_string (curdir, &converter_texinfo_language_config_dirs);
+ /* set TEXINFO_LANGUAGE_DIRECTORIES by prepending current directory
+ and input directory to texinfo_language_config_dirs */
+ converter_texinfo_language_directories_option
+ = &convert_options.options->TEXINFO_LANGUAGE_DIRECTORIES;
+ converter_texinfo_language_config_dirs
+ = converter_texinfo_language_directories_option->o.strlist;
+ clear_strings_list (converter_texinfo_language_config_dirs);
+
+ add_string (curdir, converter_texinfo_language_config_dirs);
if (input_directory)
{
if (strcmp (curdir, input_directory))
add_string (input_directory,
- &converter_texinfo_language_config_dirs);
+ converter_texinfo_language_config_dirs);
free (input_directory);
}
- copy_strings (&converter_texinfo_language_config_dirs,
+ copy_strings (converter_texinfo_language_config_dirs,
texinfo_language_config_dirs);
converter = txi_converter_setup (converted_format, output_format,
- &converter_texinfo_language_config_dirs,
&deprecated_directories,
&convert_options);
@@ -1839,13 +1908,11 @@ main (int argc, char *argv[])
free (input_file_name);
clear_strings_list (&prepended_include_directories);
- clear_strings_list (&converter_texinfo_language_config_dirs);
clear_options_list (&convert_options);
}
free_strings_list (&opened_files);
free_strings_list (&prepended_include_directories);
- free_strings_list (&converter_texinfo_language_config_dirs);
free_options_list (&convert_options);
free_strings_list (&input_files);