texinfo-commits
[Top][All Lists]
Advanced

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

[no subject]


From: Patrice Dumas
Date: Mon, 23 Dec 2024 18:35:14 -0500 (EST)

branch: master
commit 86c0dfe0bdc69bc92fa059cae49313514e4f23b4
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Sat Dec 21 10:22:30 2024 +0100

    * tp/Texinfo/XS/teximakehtml.c (set_option_value)
    (set_customization_default, set_from_cmdline): pass option number
    instead of option.  Pass value to set_customization_default.  Update
    callers.
    
    * tp/Texinfo/XS/teximakehtml.c (long_options, main): add headers and
    no headers command-line options.
---
 ChangeLog                    |  10 +++
 tp/Texinfo/XS/teximakehtml.c | 145 ++++++++++++++++++++++++++++++-------------
 2 files changed, 113 insertions(+), 42 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 3220ad7b35..f2f4c3240b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2024-12-21  Patrice Dumas  <pertusus@free.fr>
+
+       * tp/Texinfo/XS/teximakehtml.c (set_option_value)
+       (set_customization_default, set_from_cmdline): pass option number
+       instead of option.  Pass value to set_customization_default.  Update
+       callers.
+
+       * tp/Texinfo/XS/teximakehtml.c (long_options, main): add headers and
+       no headers command-line options.
+
 2024-12-21  Patrice Dumas  <pertusus@free.fr>
 
        * tp/Texinfo/XS/teximakehtml.c (long_options, main): add macro-expand
diff --git a/tp/Texinfo/XS/teximakehtml.c b/tp/Texinfo/XS/teximakehtml.c
index 258dc37a70..25274671f3 100644
--- a/tp/Texinfo/XS/teximakehtml.c
+++ b/tp/Texinfo/XS/teximakehtml.c
@@ -133,19 +133,6 @@ get_conf (size_t number)
   return 0;
 }
 
-static int
-set_customization_default (const OPTION *option)
-{
-  if (option_number_in_option_list (&cmdline_options, option->number)
-      || option_number_in_option_list (&init_files_options, option->number))
-    return 0;
-
-  options_list_add_option_number (&program_options, option->number);
-  copy_option (program_options.sorted_options[option->number -1], option);
-  return 1;
-}
-
-/* Texinfo::Config and texi2any */
 static char *
 decode_input (char *text)
 {
@@ -360,9 +347,11 @@ set_subdir_directories (const char *subdir,
 }
 
 static void
-set_option_value (OPTIONS_LIST *options_list, OPTION *option,
+set_option_value (OPTIONS_LIST *options_list, size_t number,
                   const char *value)
 {
+  OPTION *option = options_list->sorted_options[number -1];
+
   if (option->type == GOT_integer)
     {
       char *endptr;
@@ -391,7 +380,7 @@ set_option_value (OPTIONS_LIST *options_list, OPTION 
*option,
       option_set_conf (option, 0, option_value);
       free (option_value);
     }
-  options_list_add_option_number (options_list, option->number);
+  options_list_add_option_number (options_list, number);
 }
 
 /* Texinfo::Config::texinfo_set_from_init_file */
@@ -408,20 +397,35 @@ set_from_init_file (const char *option_name,
                     option_name);
       return;
     }
-  set_option_value (&init_files_options, option, value);
+  set_option_value (&init_files_options, option->number, value);
 }
 
+/* Texinfo::Config::GNUT_set_customization_default */
+/* set_main_program_default in texi2any.pl */
+static int
+set_customization_default (size_t number, const char *value)
+{
+  if (option_number_in_option_list (&cmdline_options, number)
+      || option_number_in_option_list (&init_files_options, number))
+    return 0;
+
+  set_option_value (&program_options, number, value);
+  return 1;
+}
+
+/* Texinfo::Config and texi2any */
 static void
-set_from_cmdline (OPTIONS_LIST *options_list, OPTION *option,
+set_from_cmdline (OPTIONS_LIST *options_list, size_t number,
                   const char *value)
 {
   if (!strcmp (value, "undef"))
     {
+      OPTION *option = options_list->sorted_options[number -1];
       clear_option (option);
       options_list_add_option_number (options_list, option->number);
     }
   else
-    set_option_value (options_list, option, value);
+    set_option_value (options_list, number, value);
 }
 
 static void
@@ -497,7 +501,7 @@ get_cmdline_customization_option (OPTIONS_LIST 
*options_list,
                 }
               else
                 {
-                  set_from_cmdline (options_list, option, p);
+                  set_from_cmdline (options_list, option->number, p);
                 }
             }
         }
@@ -615,7 +619,7 @@ static void
 set_cmdline_format (const char *format_name)
 {
   set_from_cmdline(&cmdline_options,
-                   &cmdline_options.options->TEXINFO_OUTPUT_FORMAT,
+                   cmdline_options.options->TEXINFO_OUTPUT_FORMAT.number,
                    format_name);
 }
 
@@ -709,6 +713,8 @@ static int print_help_p;
 #define HTML_OPT 25
 #define TRACE_INCLUDES_OPT 33
 #define NO_VERBOSE_OPT 34
+#define HEADERS_OPT 35
+#define NO_HEADERS_OPT 36
 
 #define IFFORMAT_TABLE(upcase, name) \
   {"if" #name, 0, 0, IF ## upcase ## _OPT}, \
@@ -723,6 +729,8 @@ static struct option long_options[] = {
   {"error-limit", required_argument, 0, 'e'},
   {"footnote-style", required_argument, 0, FOOTNOTE_STYLE_OPT},
   {"force", 0, 0, 'F'},
+  {"headers", 0, 0, HEADERS_OPT},
+  {"no-headers", 0, 0, NO_HEADERS_OPT},
   {"help", 0, 0, 'h'},
   {"macro-expand", required_argument, 0, 'E'},
   {"no-warn", 0, 0, NO_WARN_OPT},
@@ -791,6 +799,8 @@ main (int argc, char *argv[])
   const char *converted_format;
   FORMAT_SPECIFICATION *format_specification = 0;
   int do_menu = 0;
+  size_t format_menu_option_nr;
+  const char *conversion_format_menu_default = 0;
 
   parse_file_path (argv[0], program_file_name_and_directory);
   program_file = program_file_name_and_directory[0];
@@ -882,33 +892,56 @@ main (int argc, char *argv[])
           break;
         case 'e':
           set_from_cmdline(&cmdline_options,
-                           &cmdline_options.options->ERROR_LIMIT,
+                           cmdline_options.options->ERROR_LIMIT.number,
                            optarg);
           break;
         case 'E':
           set_from_cmdline(&cmdline_options,
-                           &cmdline_options.options->MACRO_EXPAND,
+                           cmdline_options.options->MACRO_EXPAND.number,
                            optarg);
           break;
         case 'F':
           set_from_cmdline(&cmdline_options,
-                           &cmdline_options.options->FORCE, "1");
+                           cmdline_options.options->FORCE.number, "1");
           break;
         case NO_WARN_OPT:
           set_from_cmdline(&cmdline_options,
-                           &cmdline_options.options->NO_WARN, "1");
+                           cmdline_options.options->NO_WARN.number, "1");
           break;
         case TRACE_INCLUDES_OPT:
           set_from_cmdline(&cmdline_options,
-                           &cmdline_options.options->TRACE_INCLUDES, "1");
+                           cmdline_options.options->TRACE_INCLUDES.number,
+                           "1");
           break;
         case 'v':
           set_from_cmdline(&cmdline_options,
-                           &cmdline_options.options->VERBOSE, "1");
+                           cmdline_options.options->VERBOSE.number, "1");
           break;
         case NO_VERBOSE_OPT:
           set_from_cmdline(&cmdline_options,
-                           &cmdline_options.options->VERBOSE, "0");
+                           cmdline_options.options->VERBOSE.number, "0");
+          break;
+        case NO_HEADERS_OPT:
+          set_from_cmdline(&cmdline_options,
+                           cmdline_options.options->HEADERS.number, "0");
+          set_from_cmdline(&cmdline_options,
+                           cmdline_options.options->FORMAT_MENU.number,
+                           "nomenu");
+          {
+            size_t option_nr
+              = program_options.options->TEXINFO_OUTPUT_FORMAT.number;
+            OPTION *output_format_option = get_conf (option_nr);
+            if (output_format_option && output_format_option->o.string
+                && !strcmp (output_format_option->o.string, "info"))
+              set_customization_default (option_nr, "plaintext");
+          }
+          break;
+        case HEADERS_OPT:
+          set_from_cmdline(&cmdline_options,
+                           cmdline_options.options->HEADERS.number, "1");
+          set_from_cmdline(&cmdline_options,
+                           cmdline_options.options->FORMAT_MENU.number,
+                           "set_format_menu_from_cmdline_header_option");
           break;
         case 'I':
           {
@@ -944,7 +977,7 @@ main (int argc, char *argv[])
           break;
         case DOCUMENT_LANGUAGE_OPT:
           set_from_cmdline(&cmdline_options,
-                           &cmdline_options.options->documentlanguage,
+                           cmdline_options.options->documentlanguage.number,
                            optarg);
           break;
         case FOOTNOTE_STYLE_OPT:
@@ -954,7 +987,7 @@ main (int argc, char *argv[])
             if (!strcmp (value, "end") || !strcmp (value, "separate"))
               {
                 set_from_cmdline(&cmdline_options,
-                                 &cmdline_options.options->footnotestyle,
+                          cmdline_options.options->footnotestyle.number,
                                  value);
               }
             else
@@ -987,19 +1020,21 @@ main (int argc, char *argv[])
                 if (optarg[opt_len -1] == '/'
                     || (stat (optarg, &finfo) == 0 && S_ISDIR (finfo.st_mode)))
                   {
-                    set_from_cmdline (&cmdline_options, option, "undef");
+                    set_from_cmdline (&cmdline_options,
+                                      option->number, "undef");
                     option = &cmdline_options.options->SUBDIR;
                   }
               }
-            set_from_cmdline (&cmdline_options, option, decoded_string);
+            set_from_cmdline (&cmdline_options, option->number, 
decoded_string);
             free (decoded_string);
           }
           break;
         case NO_SPLIT_OPT:
           set_from_cmdline (&cmdline_options,
-                            &cmdline_options.options->SPLIT, "");
+                            cmdline_options.options->SPLIT.number, "");
           set_from_cmdline (&cmdline_options,
-                            &cmdline_options.options->SPLIT_SIZE, "undef");
+                            cmdline_options.options->SPLIT_SIZE.number,
+                            "undef");
           break;
         case SPLIT_OPT:
           {
@@ -1016,7 +1051,7 @@ main (int argc, char *argv[])
                 split = strdup ("node");
               }
             set_from_cmdline (&cmdline_options,
-                              &cmdline_options.options->SPLIT, split);
+                              cmdline_options.options->SPLIT.number, split);
             free (split);
           }
           break;
@@ -1117,6 +1152,9 @@ main (int argc, char *argv[])
    "  -E, --macro-expand=FILE     output macro-expanded source to FILE,\n      
                          ignoring any @setfilename."));
       text_append_n (&help_message, "\n", 1);
       text_append (&help_message, _(
+   "      --no-headers            suppress node separators, Node: lines, and 
menus\n                                from Info output (thus producing plain 
text)\n                                or from HTML (thus producing shorter 
output).\n                                Also, if producing Info, write to\n   
                             standard output by default."));
+      text_append_n (&help_message, "\n", 1);
+      text_append (&help_message, _(
    "      --no-split              suppress any splitting of the output;\n      
                          generate only one output file."));
       text_append_n (&help_message, "\n", 1);
       text_append (&help_message, _(
@@ -1279,24 +1317,47 @@ main (int argc, char *argv[])
   format_defaults = txi_converter_format_defaults (converted_format,
                                                    &cmdline_options);
 
-  /* in Perl the presence of a module is used to determine if there
-     are format defaults.  Here we use format_defaults being set */
+  format_menu_option_nr = program_options.options->FORMAT_MENU.number;
+
+  /* in Perl the presence of a module in format specification is used to
+     determine if there are format defaults.  Here check if format_defaults
+     is set */
   if (format_defaults)
     {
-      if (format_defaults->conf.options->FORMAT_MENU.o.string != 0)
+      conversion_format_menu_default
+        = strdup (format_defaults->conf.options->FORMAT_MENU.o.string);
+      if (conversion_format_menu_default != 0)
         {
           /*
-          fprintf (stderr, "FORMAT_MENU %s\n",
-               format_defaults->conf.options->FORMAT_MENU.o.string);
+          fprintf (stderr, "FORMAT_MENU %s\n", conversion_format_menu_default);
            */
-          set_customization_default (
-                               &format_defaults->conf.options->FORMAT_MENU);
+          set_customization_default (format_menu_option_nr,
+                                     conversion_format_menu_default);
         }
 
       destroy_converter_initialization_info (format_defaults);
     }
 
-  format_menu_option = get_conf (program_options.options->FORMAT_MENU.number);
+  /* special case for FORMAT_MENU of delayed setting based in
+     some case on converter */
+  format_menu_option = get_conf (format_menu_option_nr);
+  if (format_menu_option && format_menu_option->o.string
+      && !strcmp (format_menu_option->o.string,
+                  "set_format_menu_from_cmdline_header_option"))
+    {
+      if (conversion_format_menu_default
+          && strcmp (conversion_format_menu_default, "nomenu"))
+        {
+          set_from_cmdline (&cmdline_options, format_menu_option_nr,
+                            conversion_format_menu_default);
+        }
+      else
+        set_from_cmdline (&cmdline_options, format_menu_option_nr, "menu");
+    }
+
+  free (conversion_format_menu_default);
+
+  format_menu_option = get_conf (format_menu_option_nr);
   if (format_menu_option && (!format_menu_option->o.string
                              || !strcmp (format_menu_option->o.string,
                                          "menu")))



reply via email to

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