texinfo-commits
[Top][All Lists]
Advanced

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

branch master updated: Always have an OPTIONS structure associated to an


From: Patrice Dumas
Subject: branch master updated: Always have an OPTIONS structure associated to an options list
Date: Mon, 28 Oct 2024 03:23:25 -0400

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

pertusus pushed a commit to branch master
in repository texinfo.

The following commit(s) were added to refs/heads/master by this push:
     new 729420500b Always have an OPTIONS structure associated to an options 
list
729420500b is described below

commit 729420500bc659d7455df3a4be787c5f292eb31c
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Mon Oct 28 08:23:13 2024 +0100

    Always have an OPTIONS structure associated to an options list
    
    * tp/Texinfo/XS/convert/texinfo.c (txi_parser): rename OPTIONS_LIST
    argument as options_list.
    
    * tp/Texinfo/XS/convert/converter.c
    (new_converter_initialization_info): always initialize the options
    list.
    
    * tp/Texinfo/XS/convert/get_converter_perl_info.c
    (get_converter_info_from_sv),
    tp/maintain/regenerate_C_options_info.pl,
    tp/Texinfo/XS/convert/texinfo.c (txi_parser),
    tp/Texinfo/XS/main/build_perl_info.c
    (build_sv_options_from_options_list),
    tp/Texinfo/XS/main/customization_options.c
    (copy_numbered_options_list_options, initialize_options_list)
    (options_list_add_option_number, options_list_add_option_name)
    (add_option_value, add_option_copy, add_new_button_option)
    (free_options_list, add_option_strlist_value),
    tp/Texinfo/XS/main/option_types.h (OPTIONS_LIST),
    tp/Texinfo/XS/teximakehtml.c (main): add an OPTIONS and
    sorted options field to OPTIONS_LIST and initialize them in
    initialize_options_list.  Set OPTIONS_LIST list to be the list of
    option numbers instead of the options themselves.  Replace
    new_option_string_value and add_new_option_value by add_option_value.
    Replace options_list_add_option by options_list_add_option_number and
    options_list_add_option_name.  Remove number_options_list as the
    options list are always numbered now.
    
    * tp/Texinfo/XS/convert/html_converter_init_options.c
    (html_converter_defaults), tp/Texinfo/XS/convert/texinfo.c
    (txi_parser): simplify code by using the OPTIONS to find if a
    customization variable is set is set.
---
 ChangeLog                                          |  38 ++
 tp/Texinfo/XS/convert/ConvertXS.xs                 |   1 -
 tp/Texinfo/XS/convert/converter.c                  |   5 +-
 tp/Texinfo/XS/convert/converters_options.c         | 166 +++----
 tp/Texinfo/XS/convert/get_converter_perl_info.c    |  11 +-
 .../XS/convert/html_converter_init_options.c       |  17 +-
 tp/Texinfo/XS/convert/texinfo.c                    |  28 +-
 tp/Texinfo/XS/main/build_perl_info.c               |   3 +-
 tp/Texinfo/XS/main/customization_options.c         | 213 ++++-----
 tp/Texinfo/XS/main/customization_options.h         |  15 +-
 tp/Texinfo/XS/main/option_types.h                  |   4 +-
 tp/Texinfo/XS/main/options_defaults.c              | 504 +++++++++++----------
 tp/Texinfo/XS/teximakehtml.c                       |  58 +--
 tp/maintain/regenerate_C_options_info.pl           |  12 +-
 14 files changed, 524 insertions(+), 551 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index f4cad26ee5..1c1316bb97 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,41 @@
+2024-10-28  Patrice Dumas  <pertusus@free.fr>
+
+       Always have an OPTIONS structure associated to an options list
+
+       * tp/Texinfo/XS/convert/texinfo.c (txi_parser): rename OPTIONS_LIST
+       argument as options_list.
+
+       * tp/Texinfo/XS/convert/converter.c
+       (new_converter_initialization_info): always initialize the options
+       list.
+
+       * tp/Texinfo/XS/convert/get_converter_perl_info.c
+       (get_converter_info_from_sv),
+       tp/maintain/regenerate_C_options_info.pl,
+       tp/Texinfo/XS/convert/texinfo.c (txi_parser),
+       tp/Texinfo/XS/main/build_perl_info.c
+       (build_sv_options_from_options_list),
+       tp/Texinfo/XS/main/customization_options.c
+       (copy_numbered_options_list_options, initialize_options_list)
+       (options_list_add_option_number, options_list_add_option_name)
+       (add_option_value, add_option_copy, add_new_button_option)
+       (free_options_list, add_option_strlist_value),
+       tp/Texinfo/XS/main/option_types.h (OPTIONS_LIST),
+       tp/Texinfo/XS/teximakehtml.c (main): add an OPTIONS and
+       sorted options field to OPTIONS_LIST and initialize them in
+       initialize_options_list.  Set OPTIONS_LIST list to be the list of
+       option numbers instead of the options themselves.  Replace
+       new_option_string_value and add_new_option_value by add_option_value.
+       Replace options_list_add_option by options_list_add_option_number and
+       options_list_add_option_name.  Remove number_options_list as the
+       options list are always numbered now.
+
+       * tp/Texinfo/XS/convert/html_converter_init_options.c
+       (html_converter_defaults), tp/Texinfo/XS/convert/texinfo.c
+       (txi_parser): simplify code by using the OPTIONS to find if a
+       customization variable is set is set.
+
+
 2024-10-27  Patrice Dumas  <pertusus@free.fr>
 
        * tp/Texinfo/XS/convert/converter.c (converter_converter),
diff --git a/tp/Texinfo/XS/convert/ConvertXS.xs 
b/tp/Texinfo/XS/convert/ConvertXS.xs
index 56392801eb..0f5453b1cc 100644
--- a/tp/Texinfo/XS/convert/ConvertXS.xs
+++ b/tp/Texinfo/XS/convert/ConvertXS.xs
@@ -199,7 +199,6 @@ generic_converter_init (SV *converter_in, SV 
*format_defaults_sv, SV *conf_sv=0)
           {
             format_defaults = self->format_defaults;
             self->format_defaults = 0;
-            number_options_list (&format_defaults->conf, self->sorted_options);
           }
 
         conf = get_converter_info_from_sv (conf_sv, class_name, self,
diff --git a/tp/Texinfo/XS/convert/converter.c 
b/tp/Texinfo/XS/convert/converter.c
index a4df233f18..b179a8a947 100644
--- a/tp/Texinfo/XS/convert/converter.c
+++ b/tp/Texinfo/XS/convert/converter.c
@@ -372,6 +372,8 @@ new_converter_initialization_info (void)
   CONVERTER_INITIALIZATION_INFO *result = (CONVERTER_INITIALIZATION_INFO *)
      malloc (sizeof (CONVERTER_INITIALIZATION_INFO));
   memset (result, 0, sizeof (CONVERTER_INITIALIZATION_INFO));
+
+  initialize_options_list (&result->conf, 0);
   return result;
 }
 
@@ -464,12 +466,9 @@ converter_converter (enum converter_format format,
      = new_converter_initialization_info ();
 
   copy_converter_initialization_info (user_conf, input_user_conf);
-  number_options_list (&user_conf->conf, converter->sorted_options);
 
   format_defaults = converter_defaults (converter->format, user_conf);
 
-  number_options_list (&format_defaults->conf, converter->sorted_options);
-
   set_converter_init_information (converter, format_defaults, user_conf);
 
   destroy_converter_initialization_info (format_defaults);
diff --git a/tp/Texinfo/XS/convert/converters_options.c 
b/tp/Texinfo/XS/convert/converters_options.c
index 35bc2499e6..5294551b56 100644
--- a/tp/Texinfo/XS/convert/converters_options.c
+++ b/tp/Texinfo/XS/convert/converters_options.c
@@ -26,12 +26,12 @@ set_common_regular_options_defaults (OPTIONS *options)
 void
 add_common_regular_options_defaults (OPTIONS_LIST *options_list)
 {
-  add_new_option_value (options_list, GOT_char, "PACKAGE", -2, "texinfo");
-  add_new_option_value (options_list, GOT_char, "PACKAGE_NAME", -2, "GNU 
Texinfo");
-  add_new_option_value (options_list, GOT_char, "PACKAGE_AND_VERSION", -2, 
"texinfo");
-  add_new_option_value (options_list, GOT_char, "PACKAGE_VERSION", -2, "");
-  add_new_option_value (options_list, GOT_char, "PACKAGE_URL", -2, 
"https://www.gnu.org/software/texinfo/";);
-  add_new_option_value (options_list, GOT_char, "PROGRAM", -2, "");
+  add_option_value (options_list, "PACKAGE", -2, "texinfo");
+  add_option_value (options_list, "PACKAGE_NAME", -2, "GNU Texinfo");
+  add_option_value (options_list, "PACKAGE_AND_VERSION", -2, "texinfo");
+  add_option_value (options_list, "PACKAGE_VERSION", -2, "");
+  add_option_value (options_list, "PACKAGE_URL", -2, 
"https://www.gnu.org/software/texinfo/";);
+  add_option_value (options_list, "PROGRAM", -2, "");
 }
 
 void
@@ -43,7 +43,7 @@ set_converter_regular_options_defaults (OPTIONS *options)
 void
 add_converter_regular_options_defaults (OPTIONS_LIST *options_list)
 {
-  add_new_option_value (options_list, GOT_char, "documentlanguage", -2, 0);
+  add_option_value (options_list, "documentlanguage", -2, 0);
 }
 
 void
@@ -107,59 +107,59 @@ set_html_regular_options_defaults (OPTIONS *options)
 void
 add_html_regular_options_defaults (OPTIONS_LIST *options_list)
 {
-  add_new_option_value (options_list, GOT_char, "BIG_RULE", -2, "<hr>");
-  add_new_option_value (options_list, GOT_char, "BODY_ELEMENT_ATTRIBUTES", -2, 
0);
-  add_new_option_value (options_list, GOT_integer, "CHAPTER_HEADER_LEVEL", 2, 
0);
-  add_new_option_value (options_list, GOT_char, "CLOSE_QUOTE_SYMBOL", -2, 0);
-  add_new_option_value (options_list, GOT_char, "CONTENTS_OUTPUT_LOCATION", 
-2, "after_top");
-  add_new_option_value (options_list, GOT_integer, "CONVERT_TO_LATEX_IN_MATH", 
-1, 0);
-  add_new_option_value (options_list, GOT_integer, 
"INDENTED_BLOCK_COMMANDS_IN_TABLE", 0, 0);
-  add_new_option_value (options_list, GOT_integer, "CHECK_HTMLXREF", 1, 0);
-  add_new_option_value (options_list, GOT_integer, "COPIABLE_LINKS", 1, 0);
-  add_new_option_value (options_list, GOT_integer, "DATE_IN_HEADER", 0, 0);
-  add_new_option_value (options_list, GOT_char, "DEFAULT_RULE", -2, "<hr>");
-  add_new_option_value (options_list, GOT_char, "documentlanguage", -2, "en");
-  add_new_option_value (options_list, GOT_char, "DOCTYPE", -2, "<!DOCTYPE 
html>");
-  add_new_option_value (options_list, GOT_integer, "DO_ABOUT", 0, 0);
-  add_new_option_value (options_list, GOT_integer, "OUTPUT_CHARACTERS", 0, 0);
-  add_new_option_value (options_list, GOT_char, "EXTENSION", -2, "html");
-  add_new_option_value (options_list, GOT_char, "EXTERNAL_CROSSREF_EXTENSION", 
-2, 0);
-  add_new_option_value (options_list, GOT_integer, 
"FOOTNOTE_END_HEADER_LEVEL", 4, 0);
-  add_new_option_value (options_list, GOT_integer, 
"FOOTNOTE_SEPARATE_HEADER_LEVEL", 4, 0);
-  add_new_option_value (options_list, GOT_char, "FORMAT_MENU", -2, 
"sectiontoc");
-  add_new_option_value (options_list, GOT_integer, "HEADERS", 1, 0);
-  add_new_option_value (options_list, GOT_char, "INDEX_ENTRY_COLON", -2, "");
-  add_new_option_value (options_list, GOT_integer, "INLINE_CSS_STYLE", 0, 0);
-  add_new_option_value (options_list, GOT_char, "JS_WEBLABELS", -2, 
"generate");
-  add_new_option_value (options_list, GOT_char, "JS_WEBLABELS_FILE", -2, 
"js_licenses.html");
-  add_new_option_value (options_list, GOT_integer, "MAX_HEADER_LEVEL", 4, 0);
-  add_new_option_value (options_list, GOT_char, "MENU_ENTRY_COLON", -2, ":");
-  add_new_option_value (options_list, GOT_char, "MENU_SYMBOL", -2, 0);
-  add_new_option_value (options_list, GOT_integer, "MONOLITHIC", 1, 0);
-  add_new_option_value (options_list, GOT_integer, "NO_CUSTOM_HTML_ATTRIBUTE", 
0, 0);
-  add_new_option_value (options_list, GOT_integer, "NO_CSS", 0, 0);
-  add_new_option_value (options_list, GOT_char, "NO_NUMBER_FOOTNOTE_SYMBOL", 
-2, "*");
-  add_new_option_value (options_list, GOT_integer, "NODE_NAME_IN_MENU", 1, 0);
-  add_new_option_value (options_list, GOT_char, "OPEN_QUOTE_SYMBOL", -2, 0);
-  add_new_option_value (options_list, GOT_char, "OUTPUT_ENCODING_NAME", -2, 
"utf-8");
-  add_new_option_value (options_list, GOT_integer, "SECTION_NAME_IN_TITLE", 0, 
0);
-  add_new_option_value (options_list, GOT_integer, "SHORT_TOC_LINK_TO_TOC", 1, 
0);
-  add_new_option_value (options_list, GOT_integer, "SHOW_TITLE", -1, 0);
-  add_new_option_value (options_list, GOT_char, "SPLIT", -2, "node");
-  add_new_option_value (options_list, GOT_char, "TOP_FILE", -2, "index.html");
-  add_new_option_value (options_list, GOT_char, "TOP_NODE_FILE_TARGET", -2, 
"index.html");
-  add_new_option_value (options_list, GOT_integer, "USE_ACCESSKEY", 1, 0);
-  add_new_option_value (options_list, GOT_integer, 
"USE_NEXT_HEADING_FOR_LONE_NODE", 1, 0);
-  add_new_option_value (options_list, GOT_integer, "USE_ISO", 1, 0);
-  add_new_option_value (options_list, GOT_integer, "USE_LINKS", 1, 0);
-  add_new_option_value (options_list, GOT_integer, "USE_NODES", 1, 0);
-  add_new_option_value (options_list, GOT_integer, "USE_NODE_DIRECTIONS", -1, 
0);
-  add_new_option_value (options_list, GOT_integer, "USE_REL_REV", 1, 0);
-  add_new_option_value (options_list, GOT_integer, "USE_TITLEPAGE_FOR_TITLE", 
1, 0);
-  add_new_option_value (options_list, GOT_integer, "WORDS_IN_PAGE", 300, 0);
-  add_new_option_value (options_list, GOT_integer, "XREF_USE_NODE_NAME_ARG", 
-1, 0);
-  add_new_option_value (options_list, GOT_integer, "XREF_USE_FLOAT_LABEL", 0, 
0);
-  add_new_option_value (options_list, GOT_char, "xrefautomaticsectiontitle", 
-2, "on");
+  add_option_value (options_list, "BIG_RULE", -2, "<hr>");
+  add_option_value (options_list, "BODY_ELEMENT_ATTRIBUTES", -2, 0);
+  add_option_value (options_list, "CHAPTER_HEADER_LEVEL", 2, 0);
+  add_option_value (options_list, "CLOSE_QUOTE_SYMBOL", -2, 0);
+  add_option_value (options_list, "CONTENTS_OUTPUT_LOCATION", -2, "after_top");
+  add_option_value (options_list, "CONVERT_TO_LATEX_IN_MATH", -1, 0);
+  add_option_value (options_list, "INDENTED_BLOCK_COMMANDS_IN_TABLE", 0, 0);
+  add_option_value (options_list, "CHECK_HTMLXREF", 1, 0);
+  add_option_value (options_list, "COPIABLE_LINKS", 1, 0);
+  add_option_value (options_list, "DATE_IN_HEADER", 0, 0);
+  add_option_value (options_list, "DEFAULT_RULE", -2, "<hr>");
+  add_option_value (options_list, "documentlanguage", -2, "en");
+  add_option_value (options_list, "DOCTYPE", -2, "<!DOCTYPE html>");
+  add_option_value (options_list, "DO_ABOUT", 0, 0);
+  add_option_value (options_list, "OUTPUT_CHARACTERS", 0, 0);
+  add_option_value (options_list, "EXTENSION", -2, "html");
+  add_option_value (options_list, "EXTERNAL_CROSSREF_EXTENSION", -2, 0);
+  add_option_value (options_list, "FOOTNOTE_END_HEADER_LEVEL", 4, 0);
+  add_option_value (options_list, "FOOTNOTE_SEPARATE_HEADER_LEVEL", 4, 0);
+  add_option_value (options_list, "FORMAT_MENU", -2, "sectiontoc");
+  add_option_value (options_list, "HEADERS", 1, 0);
+  add_option_value (options_list, "INDEX_ENTRY_COLON", -2, "");
+  add_option_value (options_list, "INLINE_CSS_STYLE", 0, 0);
+  add_option_value (options_list, "JS_WEBLABELS", -2, "generate");
+  add_option_value (options_list, "JS_WEBLABELS_FILE", -2, "js_licenses.html");
+  add_option_value (options_list, "MAX_HEADER_LEVEL", 4, 0);
+  add_option_value (options_list, "MENU_ENTRY_COLON", -2, ":");
+  add_option_value (options_list, "MENU_SYMBOL", -2, 0);
+  add_option_value (options_list, "MONOLITHIC", 1, 0);
+  add_option_value (options_list, "NO_CUSTOM_HTML_ATTRIBUTE", 0, 0);
+  add_option_value (options_list, "NO_CSS", 0, 0);
+  add_option_value (options_list, "NO_NUMBER_FOOTNOTE_SYMBOL", -2, "*");
+  add_option_value (options_list, "NODE_NAME_IN_MENU", 1, 0);
+  add_option_value (options_list, "OPEN_QUOTE_SYMBOL", -2, 0);
+  add_option_value (options_list, "OUTPUT_ENCODING_NAME", -2, "utf-8");
+  add_option_value (options_list, "SECTION_NAME_IN_TITLE", 0, 0);
+  add_option_value (options_list, "SHORT_TOC_LINK_TO_TOC", 1, 0);
+  add_option_value (options_list, "SHOW_TITLE", -1, 0);
+  add_option_value (options_list, "SPLIT", -2, "node");
+  add_option_value (options_list, "TOP_FILE", -2, "index.html");
+  add_option_value (options_list, "TOP_NODE_FILE_TARGET", -2, "index.html");
+  add_option_value (options_list, "USE_ACCESSKEY", 1, 0);
+  add_option_value (options_list, "USE_NEXT_HEADING_FOR_LONE_NODE", 1, 0);
+  add_option_value (options_list, "USE_ISO", 1, 0);
+  add_option_value (options_list, "USE_LINKS", 1, 0);
+  add_option_value (options_list, "USE_NODES", 1, 0);
+  add_option_value (options_list, "USE_NODE_DIRECTIONS", -1, 0);
+  add_option_value (options_list, "USE_REL_REV", 1, 0);
+  add_option_value (options_list, "USE_TITLEPAGE_FOR_TITLE", 1, 0);
+  add_option_value (options_list, "WORDS_IN_PAGE", 300, 0);
+  add_option_value (options_list, "XREF_USE_NODE_NAME_ARG", -1, 0);
+  add_option_value (options_list, "XREF_USE_FLOAT_LABEL", 0, 0);
+  add_option_value (options_list, "xrefautomaticsectiontitle", -2, "on");
 }
 
 void
@@ -193,29 +193,29 @@ set_texi2html_regular_options_defaults (OPTIONS *options)
 void
 add_texi2html_regular_options_defaults (OPTIONS_LIST *options_list)
 {
-  add_new_option_value (options_list, GOT_char, "FORMAT_MENU", -2, "menu");
-  add_new_option_value (options_list, GOT_integer, 
"USE_SETFILENAME_EXTENSION", 0, 0);
-  add_new_option_value (options_list, GOT_char, "footnotestyle", -2, 
"separate");
-  add_new_option_value (options_list, GOT_char, "CONTENTS_OUTPUT_LOCATION", 
-2, "separate_element");
-  add_new_option_value (options_list, GOT_integer, "FORCE", 1, 0);
-  add_new_option_value (options_list, GOT_integer, "USE_ACCESSKEY", 0, 0);
-  add_new_option_value (options_list, GOT_integer, "NODE_NAME_IN_MENU", 0, 0);
-  add_new_option_value (options_list, GOT_integer, "SHORT_TOC_LINK_TO_TOC", 0, 
0);
-  add_new_option_value (options_list, GOT_integer, "SHOW_TITLE", 1, 0);
-  add_new_option_value (options_list, GOT_integer, "USE_REL_REV", 0, 0);
-  add_new_option_value (options_list, GOT_integer, "USE_LINKS", 0, 0);
-  add_new_option_value (options_list, GOT_integer, "USE_NODES", 0, 0);
-  add_new_option_value (options_list, GOT_char, "SPLIT", -2, "");
-  add_new_option_value (options_list, GOT_integer, "PROGRAM_NAME_IN_FOOTER", 
1, 0);
-  add_new_option_value (options_list, GOT_integer, "PROGRAM_NAME_IN_ABOUT", 1, 
0);
-  add_new_option_value (options_list, GOT_integer, "HEADER_IN_TABLE", 1, 0);
-  add_new_option_value (options_list, GOT_char, "MENU_ENTRY_COLON", -2, "");
-  add_new_option_value (options_list, GOT_char, "INDEX_ENTRY_COLON", -2, "");
-  add_new_option_value (options_list, GOT_integer, "DO_ABOUT", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "CHAPTER_HEADER_LEVEL", 1, 
0);
-  add_new_option_value (options_list, GOT_char, "BIG_RULE", -2, "<hr 
style=\"height: 6px;\">");
-  add_new_option_value (options_list, GOT_integer, 
"FOOTNOTE_END_HEADER_LEVEL", 3, 0);
-  add_new_option_value (options_list, GOT_integer, 
"FOOTNOTE_SEPARATE_HEADER_LEVEL", 1, 0);
+  add_option_value (options_list, "FORMAT_MENU", -2, "menu");
+  add_option_value (options_list, "USE_SETFILENAME_EXTENSION", 0, 0);
+  add_option_value (options_list, "footnotestyle", -2, "separate");
+  add_option_value (options_list, "CONTENTS_OUTPUT_LOCATION", -2, 
"separate_element");
+  add_option_value (options_list, "FORCE", 1, 0);
+  add_option_value (options_list, "USE_ACCESSKEY", 0, 0);
+  add_option_value (options_list, "NODE_NAME_IN_MENU", 0, 0);
+  add_option_value (options_list, "SHORT_TOC_LINK_TO_TOC", 0, 0);
+  add_option_value (options_list, "SHOW_TITLE", 1, 0);
+  add_option_value (options_list, "USE_REL_REV", 0, 0);
+  add_option_value (options_list, "USE_LINKS", 0, 0);
+  add_option_value (options_list, "USE_NODES", 0, 0);
+  add_option_value (options_list, "SPLIT", -2, "");
+  add_option_value (options_list, "PROGRAM_NAME_IN_FOOTER", 1, 0);
+  add_option_value (options_list, "PROGRAM_NAME_IN_ABOUT", 1, 0);
+  add_option_value (options_list, "HEADER_IN_TABLE", 1, 0);
+  add_option_value (options_list, "MENU_ENTRY_COLON", -2, "");
+  add_option_value (options_list, "INDEX_ENTRY_COLON", -2, "");
+  add_option_value (options_list, "DO_ABOUT", -1, 0);
+  add_option_value (options_list, "CHAPTER_HEADER_LEVEL", 1, 0);
+  add_option_value (options_list, "BIG_RULE", -2, "<hr style=\"height: 
6px;\">");
+  add_option_value (options_list, "FOOTNOTE_END_HEADER_LEVEL", 3, 0);
+  add_option_value (options_list, "FOOTNOTE_SEPARATE_HEADER_LEVEL", 1, 0);
 }
 
 void
diff --git a/tp/Texinfo/XS/convert/get_converter_perl_info.c 
b/tp/Texinfo/XS/convert/get_converter_perl_info.c
index a766daf23a..b54e2bc305 100644
--- a/tp/Texinfo/XS/convert/get_converter_perl_info.c
+++ b/tp/Texinfo/XS/convert/get_converter_perl_info.c
@@ -264,14 +264,23 @@ get_converter_info_from_sv (SV *conf_sv, const char 
*class_name,
           char *key;
           I32 retlen;
           SV *value = hv_iternextsv (conf_hv, &key, &retlen);
+          /* FIXME could directly set the value in
+              &initialization_info->conf */
           OPTION *option = new_numbered_option_from_sv (value, converter,
                                                sorted_options, key, &status);
 
           if (!status)
             {
+              size_t index = option->number -1;
+              OPTION *dst_option
+                = initialization_info->conf.sorted_options[index];
+
               initialization_info->conf.list[initialization_info->conf.number]
-                = option;
+                = option->number;
               initialization_info->conf.number++;
+
+              copy_option (dst_option, option);
+              free_option (option);
             }
           else
             {
diff --git a/tp/Texinfo/XS/convert/html_converter_init_options.c 
b/tp/Texinfo/XS/convert/html_converter_init_options.c
index 87accfae07..4fb9a888f9 100644
--- a/tp/Texinfo/XS/convert/html_converter_init_options.c
+++ b/tp/Texinfo/XS/convert/html_converter_init_options.c
@@ -196,22 +196,11 @@ html_converter_defaults (enum converter_format format,
 
   if (conf)
     {
-      size_t i;
-
-      for (i = 0; i < conf->conf.number; i++)
+      if (conf->conf.options->TEXI2HTML.o.integer > 0)
         {
-          OPTION *option = conf->conf.list[i];
-          if (!strcmp (option->name, "TEXI2HTML"))
-            {
-              if (option->o.integer >= 0)
-                {
-                  add_texi2html_regular_options_defaults
-                                               (&format_defaults->conf);
-                  add_texi2html_default_buttons_specifications
+          add_texi2html_regular_options_defaults (&format_defaults->conf);
+          add_texi2html_default_buttons_specifications
                                         (&format_defaults->conf, 0);
-                }
-              break;
-            }
         }
     }
   return format_defaults;
diff --git a/tp/Texinfo/XS/convert/texinfo.c b/tp/Texinfo/XS/convert/texinfo.c
index 9ee262b075..f711a8887b 100644
--- a/tp/Texinfo/XS/convert/texinfo.c
+++ b/tp/Texinfo/XS/convert/texinfo.c
@@ -100,7 +100,6 @@ txi_converter_format_defaults (const char *format_str,
   format_defaults->options = new_options ();
   format_defaults_sorted_options
     = new_sorted_options (format_defaults->options);
-  number_options_list (&format_defaults->conf, format_defaults_sorted_options);
   copy_numbered_options_list_options (format_defaults->options,
                                       format_defaults_sorted_options,
                                       &format_defaults->conf, 0);
@@ -115,7 +114,7 @@ txi_converter_format_defaults (const char *format_str,
 void
 txi_parser (const char *file_path, const char *locale_encoding,
             const char **expanded_formats, const VALUE_LIST *values,
-            OPTIONS_LIST *options)
+            OPTIONS_LIST *options_list)
 {
   char *input_file_name_and_directory[2];
   char *input_directory;
@@ -125,18 +124,10 @@ txi_parser (const char *file_path, const char 
*locale_encoding,
 
   /* special case, we need to know if debug is set before calling
      reset_parser */
-  if (options)
+  if (options_list)
     {
-      for (i = 0; i < options->number; i++)
-        {
-          OPTION *option = options->list[i];
-          if (!strcmp (option->name, "DEBUG"))
-            {
-              if (option->o.integer >= 0)
-                debug = 1;
-              break;
-            }
-        }
+      if (options_list->options->DEBUG.o.integer >= 0)
+        debug = 1;
     }
 
   reset_parser (debug);
@@ -158,11 +149,12 @@ txi_parser (const char *file_path, const char 
*locale_encoding,
   for (i = 0; expanded_formats[i]; i++)
     parser_conf_add_expanded_format (expanded_formats[i]);
 
-  if (options)
+  if (options_list)
     {
-      for (i = 0; i < options->number; i++)
+      for (i = 0; i < options_list->number; i++)
         {
-          OPTION *option = options->list[i];
+          size_t index = options_list->list[i] -1;
+          OPTION *option = options_list->sorted_options[index];
           if (!strcmp (option->name, "INCLUDE_DIRECTORIES"))
             {
               includes_set = 1;
@@ -332,8 +324,8 @@ err_add_option_string_value (OPTIONS_LIST *options_list,
                              const char *option_name, int int_value,
                              const char *char_value)
 {
-  if (!add_option_string_value (options_list, sorted_options, option_name,
-                                int_value, char_value))
+  if (!add_option_value (options_list, option_name,
+                         int_value, char_value))
     fprintf (stderr, "BUG: error setting %s\n", option_name);
 }
 
diff --git a/tp/Texinfo/XS/main/build_perl_info.c 
b/tp/Texinfo/XS/main/build_perl_info.c
index 50fcdeaae9..bb8bf05779 100644
--- a/tp/Texinfo/XS/main/build_perl_info.c
+++ b/tp/Texinfo/XS/main/build_perl_info.c
@@ -3065,7 +3065,8 @@ build_sv_options_from_options_list (const OPTIONS_LIST 
*options_list,
 
   for (i = 0; i < options_list->number; i++)
     {
-      const OPTION *option = options_list->list[i];
+      size_t index = options_list->list[i] -1;
+      const OPTION *option = options_list->sorted_options[index];
       const char *key = option->name;
       SV *option_sv = build_sv_option (option, converter);
 
diff --git a/tp/Texinfo/XS/main/customization_options.c 
b/tp/Texinfo/XS/main/customization_options.c
index dee247c08d..d3860c90ea 100644
--- a/tp/Texinfo/XS/main/customization_options.c
+++ b/tp/Texinfo/XS/main/customization_options.c
@@ -430,22 +430,19 @@ copy_numbered_options_list_options (OPTIONS *options,
 
   for (i = 0; i < options_list->number; i++)
     {
-      OPTION *src_option = options_list->list[i];
-      if (src_option->number > 0)
-        {
-          size_t index = src_option->number - 1;
-          OPTION *dst_option = sorted_options[index];
+      size_t index = options_list->list[i] - 1;
+      OPTION *src_option = options_list->sorted_options[index];
+      OPTION *dst_option = sorted_options[index];
 
-          copy_option (dst_option, src_option);
+      copy_option (dst_option, src_option);
 
-          if (dst_option->type == GOT_buttons
-              && dst_option->o.buttons && options)
-            options->BIT_user_function_number
+      if (dst_option->type == GOT_buttons
+          && dst_option->o.buttons && options)
+         options->BIT_user_function_number
                += dst_option->o.buttons->BIT_user_function_number;
 
-          if (set_configured)
-            dst_option->configured = 1;
-        }
+      if (set_configured)
+        dst_option->configured = 1;
     }
 }
 
@@ -463,27 +460,9 @@ set_sorted_option_key_configured (OPTION **sorted_options, 
const char *key,
     }
 }
 
-static OPTION *
-new_option_string_value (OPTION **sorted_options,
-                         const char *option_name, int int_value,
-                         const char *char_value)
-{
-  OPTION *option;
-  const OPTION *ref_option = find_option_string (sorted_options, option_name);
-  if (!ref_option)
-    return 0;
-
-  option = new_option (ref_option->type, ref_option->name, ref_option->number);
-
-  option_set_conf (option, int_value, char_value);
-
-  return option;
-}
-
 
 
-/* functions to set and use options list.  Functions in this section do
-   not need options to be numbered */
+/* functions to set and use options list */
 
 void
 initialize_options_list (OPTIONS_LIST *options_list, size_t number)
@@ -492,66 +471,90 @@ initialize_options_list (OPTIONS_LIST *options_list, 
size_t number)
   options_list->space = number;
   if (number > 0)
     {
-      options_list->list = (OPTION **) malloc (sizeof (OPTION *) * number);
-      memset (options_list->list, 0, sizeof (OPTION *) * number);
+      options_list->list = (size_t *) malloc (sizeof (size_t) * number);
+      memset (options_list->list, 0, sizeof (size_t) * number);
     }
   else
     options_list->list = 0;
+
+  options_list->options = new_options ();
+  options_list->sorted_options = new_sorted_options (options_list->options);
+}
+
+void
+free_options_list (OPTIONS_LIST *options_list)
+{
+  free (options_list->list);
+  free (options_list->sorted_options);
+  free_options (options_list->options);
 }
 
 void
-options_list_add_option (OPTIONS_LIST *options_list, OPTION *option)
+options_list_add_option_number (OPTIONS_LIST *options_list,
+                                size_t number)
 {
   size_t i;
 
   for (i = 0; i < options_list->number; i++)
     {
-      OPTION *list_option = options_list->list[i];
-      if (!strcmp (list_option->name, option->name))
-        {
-          free_option (list_option);
-          free (list_option);
-          options_list->list[i] = option;
-          return;
-        }
+      size_t option_nr = options_list->list[i];
+      if (number == option_nr)
+        return;
     }
 
   if (options_list->number >= options_list->space)
     {
       options_list->list = realloc (options_list->list,
-              (options_list->space += 5) * sizeof (OPTION *));
+             (options_list->space += 5) * sizeof (size_t));
     }
-  options_list->list[options_list->number] = option;
+  options_list->list[options_list->number] = number;
   options_list->number++;
 }
 
 static OPTION *
-add_option_copy (OPTIONS_LIST *options_list, const OPTION *src_option)
+options_list_add_option_name (OPTIONS_LIST *options_list,
+                              const char *option_name)
+{
+  OPTION *option = find_option_string (options_list->sorted_options,
+                                       option_name);
+  if (!option)
+    return 0;
+
+  options_list_add_option_number (options_list, option->number);
+
+  return option;
+}
+
+OPTION *
+add_option_copy (OPTIONS_LIST *options_list, const OPTION *option_in)
 {
-  OPTION *option
-    = new_option (src_option->type, src_option->name, src_option->number);
+  options_list_add_option_number (options_list, option_in->number);
+  OPTION *option = options_list->sorted_options[option_in->number -1];
 
-  copy_option (option, src_option);
+  if (option->type == GOT_buttons)
+    {
+      if (option_in->o.buttons)
+        options_list->options->BIT_user_function_number
+            += option_in->o.buttons->BIT_user_function_number;
+      if (option->o.buttons)
+        options_list->options->BIT_user_function_number
+            -= option->o.buttons->BIT_user_function_number;
+    }
 
-  options_list_add_option (options_list, option);
+  copy_option (option, option_in);
 
   return option;
 }
 
-/* similar with new_option_string_value but in cases where there is no
-   sorted_options, and options are found with their names, for example
-   for parser options */
 OPTION *
-add_new_option_value (OPTIONS_LIST *options_list,
-                  enum global_option_type type, const char *name,
+add_option_value (OPTIONS_LIST *options_list,
+                  const char *name,
                   int int_value, const char *char_value)
 {
-  OPTION *option = new_option (type, name, 0);
+  OPTION *option = options_list_add_option_name (options_list, name);
 
   option_set_conf (option, int_value, char_value);
 
-  options_list_add_option (options_list, option);
-
   return option;
 }
 
@@ -559,11 +562,22 @@ OPTION *
 add_new_button_option (OPTIONS_LIST *options_list, const char *option_name,
                        BUTTON_SPECIFICATION_LIST *buttons)
 {
-  OPTION *option = new_option (GOT_buttons, option_name, 0);
+  OPTION *option = find_option_string (options_list->sorted_options,
+                                       option_name);
+  if (!option || option->type != GOT_buttons)
+    return 0;
 
-  option->o.buttons = buttons;
+  options_list_add_option_number (options_list, option->number);
+
+  if (option->o.buttons)
+    options_list->options->BIT_user_function_number
+        -= option->o.buttons->BIT_user_function_number;
 
-  options_list_add_option (options_list, option);
+  clear_option (option);
+  option->o.buttons = buttons;
+  if (option->o.buttons)
+    options_list->options->BIT_user_function_number
+        += option->o.buttons->BIT_user_function_number;
 
   return option;
 }
@@ -576,86 +590,37 @@ copy_options_list (OPTIONS_LIST *options_list, const 
OPTIONS_LIST *options_src)
   if (options_src)
     {
       for (i = 0; i < options_src->number; i++)
-        add_option_copy (options_list, options_src->list[i]);
-    }
-}
-
-void
-free_options_list (OPTIONS_LIST *options_list)
-{
-  size_t i;
-
-  for (i = 0; i < options_list->number; i++)
-    {
-      free_option (options_list->list[i]);
-      free (options_list->list[i]);
+        {
+          size_t index = options_src->list[i] - 1;
+          OPTION *src_option = options_src->sorted_options[index];
+          add_option_copy (options_list, src_option);
+        }
     }
-
-  free (options_list->list);
-}
-
-
-
-/* options list functions for numbered options */
-
-OPTION *
-add_option_string_value (OPTIONS_LIST *options_list, OPTION **sorted_options,
-                         const char *option_name, int int_value,
-                         const char *char_value)
-{
-  OPTION *option = new_option_string_value (sorted_options, option_name,
-                                            int_value, char_value);
-
-  if (option)
-    options_list_add_option (options_list, option);
-
-  return option;
 }
 
 OPTION *
-add_option_strlist_value (OPTIONS_LIST *options_list, OPTION **sorted_options,
+add_option_strlist_value (OPTIONS_LIST *options_list,
                           const char *option_name, const STRING_LIST *strlist)
 {
-  OPTION *option;
-  const OPTION *ref_option = find_option_string (sorted_options, option_name);
-  if (!ref_option)
+  OPTION *option = find_option_string (options_list->sorted_options,
+                                      option_name);
+  if (!option)
     return 0;
 
-  if (ref_option->type != GOT_char_string_list
-      && ref_option->type != GOT_bytes_string_list
-      && ref_option->type != GOT_file_string_list)
+  if (option->type != GOT_char_string_list
+      && option->type != GOT_bytes_string_list
+      && option->type != GOT_file_string_list)
     return 0;
 
-  option = new_option (ref_option->type, ref_option->name, ref_option->number);
+  options_list_add_option_number (options_list, option->number);
 
-  copy_strings (option->o.strlist, strlist);
+  clear_option (option);
 
-  options_list_add_option (options_list, option);
+  copy_strings (option->o.strlist, strlist);
 
   return option;
 }
 
-void
-number_options_list (OPTIONS_LIST *options_list, OPTION **sorted_options)
-{
-  size_t i;
-
-  for (i = 0; i < options_list->number; i++)
-    {
-      OPTION *option = options_list->list[i];
-      if (!option->number)
-        {
-          const OPTION *ref_option
-            = find_option_string (sorted_options, option->name);
-          if (ref_option)
-            option->number = ref_option->number;
-          else
-            fprintf (stderr, "ERROR: could not find option: %s\n",
-                             option->name);
-        }
-    }
-}
-
 
 
 /* misc other functions */
diff --git a/tp/Texinfo/XS/main/customization_options.h 
b/tp/Texinfo/XS/main/customization_options.h
index 13c026fb2d..3fe0b1a20c 100644
--- a/tp/Texinfo/XS/main/customization_options.h
+++ b/tp/Texinfo/XS/main/customization_options.h
@@ -65,10 +65,9 @@ void set_sorted_option_key_configured (OPTION 
**sorted_options,
 
 
 void initialize_options_list (OPTIONS_LIST *options_list, size_t number);
-void options_list_add_option (OPTIONS_LIST *options_list, OPTION *option);
-OPTION *add_new_option_value (OPTIONS_LIST *options_list,
-                  enum global_option_type type, const char *name,
-                  int int_value, const char *char_value);
+OPTION *add_option_value (OPTIONS_LIST *options_list,
+                          const char *name,
+                          int int_value, const char *char_value);
 OPTION *add_new_button_option (OPTIONS_LIST *options_list,
                               const char *option_name,
                               BUTTON_SPECIFICATION_LIST *buttons);
@@ -78,14 +77,10 @@ void free_options_list (OPTIONS_LIST *options_list);
 
 
 
-OPTION *add_option_string_value (OPTIONS_LIST *options_list,
-                         OPTION **sorted_options,
-                         const char *option_name, int int_value,
-                         const char *char_value);
+void options_list_add_option_number (OPTIONS_LIST *options_list,
+                                     size_t number);
 OPTION *add_option_strlist_value (OPTIONS_LIST *options_list,
-                                  OPTION **sorted_options,
                           const char *option_name, const STRING_LIST *strlist);
-void number_options_list (OPTIONS_LIST *options_list, OPTION **sorted_options);
 
 
 
diff --git a/tp/Texinfo/XS/main/option_types.h 
b/tp/Texinfo/XS/main/option_types.h
index f0b29787da..c99606a2d4 100644
--- a/tp/Texinfo/XS/main/option_types.h
+++ b/tp/Texinfo/XS/main/option_types.h
@@ -188,7 +188,9 @@ typedef struct OPTION {
 typedef struct OPTIONS_LIST {
     size_t number;
     size_t space;
-    OPTION **list;
+    size_t *list;
+    struct OPTIONS *options;
+    OPTION **sorted_options;
 } OPTIONS_LIST;
 
 #endif
diff --git a/tp/Texinfo/XS/main/options_defaults.c 
b/tp/Texinfo/XS/main/options_defaults.c
index 7b577e0dab..ce09daf4ae 100644
--- a/tp/Texinfo/XS/main/options_defaults.c
+++ b/tp/Texinfo/XS/main/options_defaults.c
@@ -25,16 +25,21 @@ add_array_cmdline_options_defaults (OPTIONS_LIST 
*options_list)
 {
   OPTION *option;
 
-  option = new_option (GOT_bytes_string_list, "CSS_FILES", 0);
-  options_list_add_option (options_list, option);
-  option = new_option (GOT_char_string_list, "CSS_REFS", 0);
-  options_list_add_option (options_list, option);
-  option = new_option (GOT_bytes_string_list, "EXPANDED_FORMATS", 0);
-  options_list_add_option (options_list, option);
-  option = new_option (GOT_file_string_list, "INCLUDE_DIRECTORIES", 0);
-  options_list_add_option (options_list, option);
-  option = new_option (GOT_file_string_list, "TEXINFO_LANGUAGE_DIRECTORIES", 
0);
-  options_list_add_option (options_list, option);
+  option = find_option_string (options_list->sorted_options, "CSS_FILES");
+  options_list_add_option_number (options_list, option->number);
+  clear_option (option);
+  option = find_option_string (options_list->sorted_options, "CSS_REFS");
+  options_list_add_option_number (options_list, option->number);
+  clear_option (option);
+  option = find_option_string (options_list->sorted_options, 
"EXPANDED_FORMATS");
+  options_list_add_option_number (options_list, option->number);
+  clear_option (option);
+  option = find_option_string (options_list->sorted_options, 
"INCLUDE_DIRECTORIES");
+  options_list_add_option_number (options_list, option->number);
+  clear_option (option);
+  option = find_option_string (options_list->sorted_options, 
"TEXINFO_LANGUAGE_DIRECTORIES");
+  options_list_add_option_number (options_list, option->number);
+  clear_option (option);
 }
 
 
@@ -60,18 +65,18 @@ set_converter_cmdline_options_defaults (OPTIONS *options)
 void
 add_converter_cmdline_options_defaults (OPTIONS_LIST *options_list)
 {
-  add_new_option_value (options_list, GOT_integer, "SPLIT_SIZE", 300000, 0);
-  add_new_option_value (options_list, GOT_integer, "FILLCOLUMN", 72, 0);
-  add_new_option_value (options_list, GOT_integer, "NUMBER_SECTIONS", 1, 0);
-  add_new_option_value (options_list, GOT_integer, "NUMBER_FOOTNOTES", 1, 0);
-  add_new_option_value (options_list, GOT_integer, "TRANSLITERATE_FILE_NAMES", 
1, 0);
-  add_new_option_value (options_list, GOT_char, "SPLIT", -2, 0);
-  add_new_option_value (options_list, GOT_integer, "HEADERS", 1, 0);
-  add_new_option_value (options_list, GOT_integer, "NODE_FILES", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "VERBOSE", -1, 0);
-  add_new_option_value (options_list, GOT_char, "OUTFILE", -2, 0);
-  add_new_option_value (options_list, GOT_char, "SUBDIR", -2, 0);
-  add_new_option_value (options_list, GOT_integer, "ENABLE_ENCODING", 1, 0);
+  add_option_value (options_list, "SPLIT_SIZE", 300000, 0);
+  add_option_value (options_list, "FILLCOLUMN", 72, 0);
+  add_option_value (options_list, "NUMBER_SECTIONS", 1, 0);
+  add_option_value (options_list, "NUMBER_FOOTNOTES", 1, 0);
+  add_option_value (options_list, "TRANSLITERATE_FILE_NAMES", 1, 0);
+  add_option_value (options_list, "SPLIT", -2, 0);
+  add_option_value (options_list, "HEADERS", 1, 0);
+  add_option_value (options_list, "NODE_FILES", -1, 0);
+  add_option_value (options_list, "VERBOSE", -1, 0);
+  add_option_value (options_list, "OUTFILE", -2, 0);
+  add_option_value (options_list, "SUBDIR", -2, 0);
+  add_option_value (options_list, "ENABLE_ENCODING", 1, 0);
 }
 
 
@@ -225,146 +230,146 @@ set_converter_customization_options_defaults (OPTIONS 
*options)
 void
 add_converter_customization_options_defaults (OPTIONS_LIST *options_list)
 {
-  add_new_option_value (options_list, GOT_char, "TOP_NODE_UP", -2, "(dir)");
-  add_new_option_value (options_list, GOT_integer, "BASEFILENAME_LENGTH", 
255-10, 0);
-  add_new_option_value (options_list, GOT_integer, 
"DOC_ENCODING_FOR_INPUT_FILE_NAME", 1, 0);
-  add_new_option_value (options_list, GOT_integer, 
"DOC_ENCODING_FOR_OUTPUT_FILE_NAME", 0, 0);
-  add_new_option_value (options_list, GOT_char, "IMAGE_LINK_PREFIX", -2, 0);
-  add_new_option_value (options_list, GOT_integer, 
"CASE_INSENSITIVE_FILENAMES", 0, 0);
-  add_new_option_value (options_list, GOT_integer, "DEBUG", 0, 0);
-  add_new_option_value (options_list, GOT_integer, 
"HANDLER_FATAL_ERROR_LEVEL", 100, 0);
-  add_new_option_value (options_list, GOT_integer, "TEST", 0, 0);
-  add_new_option_value (options_list, GOT_integer, "TEXTCONTENT_COMMENT", -1, 
0);
-  add_new_option_value (options_list, GOT_char, "TEXINFO_DTD_VERSION", -2, 
"7.1");
-  add_new_option_value (options_list, GOT_integer, "USE_UNICODE_COLLATION", 1, 
0);
-  add_new_option_value (options_list, GOT_char, "AFTER_BODY_OPEN", -2, 0);
-  add_new_option_value (options_list, GOT_char, "AFTER_SHORT_TOC_LINES", -2, 
0);
-  add_new_option_value (options_list, GOT_char, "AFTER_TOC_LINES", -2, 0);
-  add_new_option_value (options_list, GOT_integer, "ASCII_DASHES_AND_QUOTES", 
-1, 0);
-  add_new_option_value (options_list, GOT_integer, "ASCII_GLYPH", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "ASCII_PUNCTUATION", -1, 0);
-  add_new_option_value (options_list, GOT_integer, 
"AUTO_MENU_DESCRIPTION_ALIGN_COLUMN", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "AUTO_MENU_MAX_WIDTH", -1, 
0);
-  add_new_option_value (options_list, GOT_char, "BEFORE_SHORT_TOC_LINES", -2, 
0);
-  add_new_option_value (options_list, GOT_char, "BEFORE_TOC_LINES", -2, 0);
-  add_new_option_value (options_list, GOT_char, "BIG_RULE", -2, 0);
-  add_new_option_value (options_list, GOT_char, "BODY_ELEMENT_ATTRIBUTES", -2, 
0);
-  add_new_option_value (options_list, GOT_char, "CLASS_BEGIN_USEPACKAGE", -2, 
0);
-  add_new_option_value (options_list, GOT_integer, "COPIABLE_LINKS", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "CHAPTER_HEADER_LEVEL", -1, 
0);
-  add_new_option_value (options_list, GOT_integer, "CHECK_HTMLXREF", -1, 0);
-  add_new_option_value (options_list, GOT_char, "CLOSE_DOUBLE_QUOTE_SYMBOL", 
-2, 0);
-  add_new_option_value (options_list, GOT_char, "CLOSE_QUOTE_SYMBOL", -2, 0);
-  add_new_option_value (options_list, GOT_char, "COLLATION_LANGUAGE", -2, 0);
-  add_new_option_value (options_list, GOT_char, "COMMAND_LINE_ENCODING", -2, 
0);
-  add_new_option_value (options_list, GOT_integer, 
"INDENTED_BLOCK_COMMANDS_IN_TABLE", -1, 0);
-  add_new_option_value (options_list, GOT_char, "CONTENTS_OUTPUT_LOCATION", 
-2, 0);
-  add_new_option_value (options_list, GOT_integer, "CONVERT_TO_LATEX_IN_MATH", 
-1, 0);
-  add_new_option_value (options_list, GOT_integer, "DATE_IN_HEADER", -1, 0);
-  add_new_option_value (options_list, GOT_char, "DEFAULT_RULE", -2, 0);
-  add_new_option_value (options_list, GOT_integer, "DEF_TABLE", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "DO_ABOUT", -1, 0);
-  add_new_option_value (options_list, GOT_char, "DOCTYPE", -2, 0);
-  add_new_option_value (options_list, GOT_integer, 
"DOCUMENTLANGUAGE_COLLATION", -1, 0);
-  add_new_option_value (options_list, GOT_char, "END_USEPACKAGE", -2, 0);
-  add_new_option_value (options_list, GOT_integer, 
"EPUB_CREATE_CONTAINER_FILE", -1, 0);
-  add_new_option_value (options_list, GOT_integer, 
"EPUB_KEEP_CONTAINER_FOLDER", -1, 0);
-  add_new_option_value (options_list, GOT_char, "EXTENSION", -2, 0);
-  add_new_option_value (options_list, GOT_char, "EXTERNAL_CROSSREF_EXTENSION", 
-2, 0);
-  add_new_option_value (options_list, GOT_char, "EXTERNAL_CROSSREF_SPLIT", -2, 
0);
-  add_new_option_value (options_list, GOT_char, "EXTERNAL_DIR", -2, 0);
-  add_new_option_value (options_list, GOT_char, "EXTRA_HEAD", -2, 0);
-  add_new_option_value (options_list, GOT_integer, 
"FOOTNOTE_END_HEADER_LEVEL", -1, 0);
-  add_new_option_value (options_list, GOT_integer, 
"FOOTNOTE_SEPARATE_HEADER_LEVEL", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "HEADER_IN_TABLE", -1, 0);
-  add_new_option_value (options_list, GOT_char, "HIGHLIGHT_SYNTAX", -2, 0);
-  add_new_option_value (options_list, GOT_char, 
"HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE", -2, 0);
-  add_new_option_value (options_list, GOT_char, "HTML_MATH", -2, 0);
-  add_new_option_value (options_list, GOT_char, 
"HTML_ROOT_ELEMENT_ATTRIBUTES", -2, 0);
-  add_new_option_value (options_list, GOT_char, "HTMLXREF_FILE", -2, 0);
-  add_new_option_value (options_list, GOT_char, "HTMLXREF_MODE", -2, 0);
-  add_new_option_value (options_list, GOT_integer, "ICONS", -1, 0);
-  add_new_option_value (options_list, GOT_char, "INDEX_ENTRY_COLON", -2, 0);
-  add_new_option_value (options_list, GOT_integer, 
"INDEX_SPECIAL_CHARS_WARNING", -1, 0);
-  add_new_option_value (options_list, GOT_char, "INFO_JS_DIR", -2, 0);
-  add_new_option_value (options_list, GOT_char, "INFO_SPECIAL_CHARS_QUOTE", 
-2, 0);
-  add_new_option_value (options_list, GOT_integer, 
"INFO_SPECIAL_CHARS_WARNING", -1, 0);
-  add_new_option_value (options_list, GOT_integer, 
"IGNORE_REF_TO_TOP_NODE_UP", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "INLINE_CSS_STYLE", -1, 0);
-  add_new_option_value (options_list, GOT_char, "INPUT_FILE_NAME_ENCODING", 
-2, 0);
-  add_new_option_value (options_list, GOT_char, "JS_WEBLABELS", -2, 0);
-  add_new_option_value (options_list, GOT_char, "JS_WEBLABELS_FILE", -2, 0);
-  add_new_option_value (options_list, GOT_char, "LATEX_FLOATS_FILE_EXTENSION", 
-2, "tfl");
-  add_new_option_value (options_list, GOT_char, "LOCALE_ENCODING", -2, 0);
-  add_new_option_value (options_list, GOT_integer, "L2H_CLEAN", -1, 0);
-  add_new_option_value (options_list, GOT_char, "L2H_FILE", -2, 0);
-  add_new_option_value (options_list, GOT_char, "L2H_HTML_VERSION", -2, 0);
-  add_new_option_value (options_list, GOT_char, "L2H_L2H", -2, 0);
-  add_new_option_value (options_list, GOT_integer, "L2H_SKIP", -1, 0);
-  add_new_option_value (options_list, GOT_char, "L2H_TMP", -2, 0);
-  add_new_option_value (options_list, GOT_char, "MATHJAX_CONFIGURATION", -2, 
0);
-  add_new_option_value (options_list, GOT_char, "MATHJAX_SCRIPT", -2, 0);
-  add_new_option_value (options_list, GOT_char, "MATHJAX_SOURCE", -2, 0);
-  add_new_option_value (options_list, GOT_integer, "MAX_HEADER_LEVEL", -1, 0);
-  add_new_option_value (options_list, GOT_char, "MENU_ENTRY_COLON", -2, 0);
-  add_new_option_value (options_list, GOT_char, "MENU_SYMBOL", -2, 0);
-  add_new_option_value (options_list, GOT_char, "MESSAGE_ENCODING", -2, 0);
-  add_new_option_value (options_list, GOT_integer, "MONOLITHIC", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "NO_CSS", -1, 0);
-  add_new_option_value (options_list, GOT_char, "NO_NUMBER_FOOTNOTE_SYMBOL", 
-2, 0);
-  add_new_option_value (options_list, GOT_integer, "NO_CUSTOM_HTML_ATTRIBUTE", 
-1, 0);
-  add_new_option_value (options_list, GOT_integer, "NODE_NAME_IN_INDEX", -1, 
0);
-  add_new_option_value (options_list, GOT_integer, "NODE_NAME_IN_MENU", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "NO_TOP_NODE_OUTPUT", -1, 
0);
-  add_new_option_value (options_list, GOT_char, "OPEN_DOUBLE_QUOTE_SYMBOL", 
-2, 0);
-  add_new_option_value (options_list, GOT_char, "OPEN_QUOTE_SYMBOL", -2, 0);
-  add_new_option_value (options_list, GOT_integer, "OUTPUT_CHARACTERS", -1, 0);
-  add_new_option_value (options_list, GOT_char, "OUTPUT_ENCODING_NAME", -2, 0);
-  add_new_option_value (options_list, GOT_char, "OUTPUT_FILE_NAME_ENCODING", 
-2, 0);
-  add_new_option_value (options_list, GOT_char, "OUTPUT_PERL_ENCODING", -2, 0);
-  add_new_option_value (options_list, GOT_char, "PACKAGE", -2, 0);
-  add_new_option_value (options_list, GOT_char, "PACKAGE_AND_VERSION", -2, 0);
-  add_new_option_value (options_list, GOT_char, "PACKAGE_NAME", -2, 0);
-  add_new_option_value (options_list, GOT_char, "PACKAGE_URL", -2, 0);
-  add_new_option_value (options_list, GOT_char, "PACKAGE_VERSION", -2, 0);
-  add_new_option_value (options_list, GOT_char, "PRE_BODY_CLOSE", -2, 0);
-  add_new_option_value (options_list, GOT_char, "PREFIX", -2, 0);
-  add_new_option_value (options_list, GOT_char, "PROGRAM", -2, 0);
-  add_new_option_value (options_list, GOT_integer, "PROGRAM_NAME_IN_ABOUT", 
-1, 0);
-  add_new_option_value (options_list, GOT_integer, "PROGRAM_NAME_IN_FOOTER", 
-1, 0);
-  add_new_option_value (options_list, GOT_integer, "SECTION_NAME_IN_TITLE", 
-1, 0);
-  add_new_option_value (options_list, GOT_integer, "SHORT_TOC_LINK_TO_TOC", 
-1, 0);
-  add_new_option_value (options_list, GOT_integer, "SHOW_TITLE", -1, 0);
-  add_new_option_value (options_list, GOT_char, "T4H_LATEX_CONVERSION", -2, 0);
-  add_new_option_value (options_list, GOT_char, "T4H_MATH_CONVERSION", -2, 0);
-  add_new_option_value (options_list, GOT_char, "T4H_TEX_CONVERSION", -2, 0);
-  add_new_option_value (options_list, GOT_integer, "TEXI2HTML", -1, 0);
-  add_new_option_value (options_list, GOT_char, "TEXINFO_OUTPUT_FORMAT", -2, 
0);
-  add_new_option_value (options_list, GOT_integer, 
"TXI_MARKUP_NO_SECTION_EXTENT", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "TOC_LINKS", -1, 0);
-  add_new_option_value (options_list, GOT_char, "TOP_FILE", -2, 0);
-  add_new_option_value (options_list, GOT_char, "TOP_NODE_FILE_TARGET", -2, 0);
-  add_new_option_value (options_list, GOT_char, "TOP_NODE_UP_URL", -2, 0);
-  add_new_option_value (options_list, GOT_integer, "USE_ACCESSKEY", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "USE_ISO", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "USE_LINKS", -1, 0);
-  add_new_option_value (options_list, GOT_integer, 
"USE_NEXT_HEADING_FOR_LONE_NODE", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "USE_NODES", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "USE_NODE_DIRECTIONS", -1, 
0);
-  add_new_option_value (options_list, GOT_integer, "USE_NUMERIC_ENTITY", -1, 
0);
-  add_new_option_value (options_list, GOT_integer, "USE_REL_REV", -1, 0);
-  add_new_option_value (options_list, GOT_integer, 
"USE_SETFILENAME_EXTENSION", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "USE_TITLEPAGE_FOR_TITLE", 
-1, 0);
-  add_new_option_value (options_list, GOT_integer, "USE_UNIDECODE", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "USE_XML_SYNTAX", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "VERTICAL_HEAD_NAVIGATION", 
-1, 0);
-  add_new_option_value (options_list, GOT_integer, "WORDS_IN_PAGE", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "XREF_USE_FLOAT_LABEL", -1, 
0);
-  add_new_option_value (options_list, GOT_integer, "XREF_USE_NODE_NAME_ARG", 
-1, 0);
-  add_new_option_value (options_list, GOT_integer, "XS_EXTERNAL_CONVERSION", 
-1, 0);
-  add_new_option_value (options_list, GOT_integer, "XS_EXTERNAL_FORMATTING", 
-1, 0);
-  add_new_option_value (options_list, GOT_char, "XS_STRXFRM_COLLATION_LOCALE", 
-2, 0);
-  add_new_option_value (options_list, GOT_integer, "_INLINE_STYLE_WIDTH", -1, 
0);
+  add_option_value (options_list, "TOP_NODE_UP", -2, "(dir)");
+  add_option_value (options_list, "BASEFILENAME_LENGTH", 255-10, 0);
+  add_option_value (options_list, "DOC_ENCODING_FOR_INPUT_FILE_NAME", 1, 0);
+  add_option_value (options_list, "DOC_ENCODING_FOR_OUTPUT_FILE_NAME", 0, 0);
+  add_option_value (options_list, "IMAGE_LINK_PREFIX", -2, 0);
+  add_option_value (options_list, "CASE_INSENSITIVE_FILENAMES", 0, 0);
+  add_option_value (options_list, "DEBUG", 0, 0);
+  add_option_value (options_list, "HANDLER_FATAL_ERROR_LEVEL", 100, 0);
+  add_option_value (options_list, "TEST", 0, 0);
+  add_option_value (options_list, "TEXTCONTENT_COMMENT", -1, 0);
+  add_option_value (options_list, "TEXINFO_DTD_VERSION", -2, "7.1");
+  add_option_value (options_list, "USE_UNICODE_COLLATION", 1, 0);
+  add_option_value (options_list, "AFTER_BODY_OPEN", -2, 0);
+  add_option_value (options_list, "AFTER_SHORT_TOC_LINES", -2, 0);
+  add_option_value (options_list, "AFTER_TOC_LINES", -2, 0);
+  add_option_value (options_list, "ASCII_DASHES_AND_QUOTES", -1, 0);
+  add_option_value (options_list, "ASCII_GLYPH", -1, 0);
+  add_option_value (options_list, "ASCII_PUNCTUATION", -1, 0);
+  add_option_value (options_list, "AUTO_MENU_DESCRIPTION_ALIGN_COLUMN", -1, 0);
+  add_option_value (options_list, "AUTO_MENU_MAX_WIDTH", -1, 0);
+  add_option_value (options_list, "BEFORE_SHORT_TOC_LINES", -2, 0);
+  add_option_value (options_list, "BEFORE_TOC_LINES", -2, 0);
+  add_option_value (options_list, "BIG_RULE", -2, 0);
+  add_option_value (options_list, "BODY_ELEMENT_ATTRIBUTES", -2, 0);
+  add_option_value (options_list, "CLASS_BEGIN_USEPACKAGE", -2, 0);
+  add_option_value (options_list, "COPIABLE_LINKS", -1, 0);
+  add_option_value (options_list, "CHAPTER_HEADER_LEVEL", -1, 0);
+  add_option_value (options_list, "CHECK_HTMLXREF", -1, 0);
+  add_option_value (options_list, "CLOSE_DOUBLE_QUOTE_SYMBOL", -2, 0);
+  add_option_value (options_list, "CLOSE_QUOTE_SYMBOL", -2, 0);
+  add_option_value (options_list, "COLLATION_LANGUAGE", -2, 0);
+  add_option_value (options_list, "COMMAND_LINE_ENCODING", -2, 0);
+  add_option_value (options_list, "INDENTED_BLOCK_COMMANDS_IN_TABLE", -1, 0);
+  add_option_value (options_list, "CONTENTS_OUTPUT_LOCATION", -2, 0);
+  add_option_value (options_list, "CONVERT_TO_LATEX_IN_MATH", -1, 0);
+  add_option_value (options_list, "DATE_IN_HEADER", -1, 0);
+  add_option_value (options_list, "DEFAULT_RULE", -2, 0);
+  add_option_value (options_list, "DEF_TABLE", -1, 0);
+  add_option_value (options_list, "DO_ABOUT", -1, 0);
+  add_option_value (options_list, "DOCTYPE", -2, 0);
+  add_option_value (options_list, "DOCUMENTLANGUAGE_COLLATION", -1, 0);
+  add_option_value (options_list, "END_USEPACKAGE", -2, 0);
+  add_option_value (options_list, "EPUB_CREATE_CONTAINER_FILE", -1, 0);
+  add_option_value (options_list, "EPUB_KEEP_CONTAINER_FOLDER", -1, 0);
+  add_option_value (options_list, "EXTENSION", -2, 0);
+  add_option_value (options_list, "EXTERNAL_CROSSREF_EXTENSION", -2, 0);
+  add_option_value (options_list, "EXTERNAL_CROSSREF_SPLIT", -2, 0);
+  add_option_value (options_list, "EXTERNAL_DIR", -2, 0);
+  add_option_value (options_list, "EXTRA_HEAD", -2, 0);
+  add_option_value (options_list, "FOOTNOTE_END_HEADER_LEVEL", -1, 0);
+  add_option_value (options_list, "FOOTNOTE_SEPARATE_HEADER_LEVEL", -1, 0);
+  add_option_value (options_list, "HEADER_IN_TABLE", -1, 0);
+  add_option_value (options_list, "HIGHLIGHT_SYNTAX", -2, 0);
+  add_option_value (options_list, "HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE", -2, 0);
+  add_option_value (options_list, "HTML_MATH", -2, 0);
+  add_option_value (options_list, "HTML_ROOT_ELEMENT_ATTRIBUTES", -2, 0);
+  add_option_value (options_list, "HTMLXREF_FILE", -2, 0);
+  add_option_value (options_list, "HTMLXREF_MODE", -2, 0);
+  add_option_value (options_list, "ICONS", -1, 0);
+  add_option_value (options_list, "INDEX_ENTRY_COLON", -2, 0);
+  add_option_value (options_list, "INDEX_SPECIAL_CHARS_WARNING", -1, 0);
+  add_option_value (options_list, "INFO_JS_DIR", -2, 0);
+  add_option_value (options_list, "INFO_SPECIAL_CHARS_QUOTE", -2, 0);
+  add_option_value (options_list, "INFO_SPECIAL_CHARS_WARNING", -1, 0);
+  add_option_value (options_list, "IGNORE_REF_TO_TOP_NODE_UP", -1, 0);
+  add_option_value (options_list, "INLINE_CSS_STYLE", -1, 0);
+  add_option_value (options_list, "INPUT_FILE_NAME_ENCODING", -2, 0);
+  add_option_value (options_list, "JS_WEBLABELS", -2, 0);
+  add_option_value (options_list, "JS_WEBLABELS_FILE", -2, 0);
+  add_option_value (options_list, "LATEX_FLOATS_FILE_EXTENSION", -2, "tfl");
+  add_option_value (options_list, "LOCALE_ENCODING", -2, 0);
+  add_option_value (options_list, "L2H_CLEAN", -1, 0);
+  add_option_value (options_list, "L2H_FILE", -2, 0);
+  add_option_value (options_list, "L2H_HTML_VERSION", -2, 0);
+  add_option_value (options_list, "L2H_L2H", -2, 0);
+  add_option_value (options_list, "L2H_SKIP", -1, 0);
+  add_option_value (options_list, "L2H_TMP", -2, 0);
+  add_option_value (options_list, "MATHJAX_CONFIGURATION", -2, 0);
+  add_option_value (options_list, "MATHJAX_SCRIPT", -2, 0);
+  add_option_value (options_list, "MATHJAX_SOURCE", -2, 0);
+  add_option_value (options_list, "MAX_HEADER_LEVEL", -1, 0);
+  add_option_value (options_list, "MENU_ENTRY_COLON", -2, 0);
+  add_option_value (options_list, "MENU_SYMBOL", -2, 0);
+  add_option_value (options_list, "MESSAGE_ENCODING", -2, 0);
+  add_option_value (options_list, "MONOLITHIC", -1, 0);
+  add_option_value (options_list, "NO_CSS", -1, 0);
+  add_option_value (options_list, "NO_NUMBER_FOOTNOTE_SYMBOL", -2, 0);
+  add_option_value (options_list, "NO_CUSTOM_HTML_ATTRIBUTE", -1, 0);
+  add_option_value (options_list, "NODE_NAME_IN_INDEX", -1, 0);
+  add_option_value (options_list, "NODE_NAME_IN_MENU", -1, 0);
+  add_option_value (options_list, "NO_TOP_NODE_OUTPUT", -1, 0);
+  add_option_value (options_list, "OPEN_DOUBLE_QUOTE_SYMBOL", -2, 0);
+  add_option_value (options_list, "OPEN_QUOTE_SYMBOL", -2, 0);
+  add_option_value (options_list, "OUTPUT_CHARACTERS", -1, 0);
+  add_option_value (options_list, "OUTPUT_ENCODING_NAME", -2, 0);
+  add_option_value (options_list, "OUTPUT_FILE_NAME_ENCODING", -2, 0);
+  add_option_value (options_list, "OUTPUT_PERL_ENCODING", -2, 0);
+  add_option_value (options_list, "PACKAGE", -2, 0);
+  add_option_value (options_list, "PACKAGE_AND_VERSION", -2, 0);
+  add_option_value (options_list, "PACKAGE_NAME", -2, 0);
+  add_option_value (options_list, "PACKAGE_URL", -2, 0);
+  add_option_value (options_list, "PACKAGE_VERSION", -2, 0);
+  add_option_value (options_list, "PRE_BODY_CLOSE", -2, 0);
+  add_option_value (options_list, "PREFIX", -2, 0);
+  add_option_value (options_list, "PROGRAM", -2, 0);
+  add_option_value (options_list, "PROGRAM_NAME_IN_ABOUT", -1, 0);
+  add_option_value (options_list, "PROGRAM_NAME_IN_FOOTER", -1, 0);
+  add_option_value (options_list, "SECTION_NAME_IN_TITLE", -1, 0);
+  add_option_value (options_list, "SHORT_TOC_LINK_TO_TOC", -1, 0);
+  add_option_value (options_list, "SHOW_TITLE", -1, 0);
+  add_option_value (options_list, "T4H_LATEX_CONVERSION", -2, 0);
+  add_option_value (options_list, "T4H_MATH_CONVERSION", -2, 0);
+  add_option_value (options_list, "T4H_TEX_CONVERSION", -2, 0);
+  add_option_value (options_list, "TEXI2HTML", -1, 0);
+  add_option_value (options_list, "TEXINFO_OUTPUT_FORMAT", -2, 0);
+  add_option_value (options_list, "TXI_MARKUP_NO_SECTION_EXTENT", -1, 0);
+  add_option_value (options_list, "TOC_LINKS", -1, 0);
+  add_option_value (options_list, "TOP_FILE", -2, 0);
+  add_option_value (options_list, "TOP_NODE_FILE_TARGET", -2, 0);
+  add_option_value (options_list, "TOP_NODE_UP_URL", -2, 0);
+  add_option_value (options_list, "USE_ACCESSKEY", -1, 0);
+  add_option_value (options_list, "USE_ISO", -1, 0);
+  add_option_value (options_list, "USE_LINKS", -1, 0);
+  add_option_value (options_list, "USE_NEXT_HEADING_FOR_LONE_NODE", -1, 0);
+  add_option_value (options_list, "USE_NODES", -1, 0);
+  add_option_value (options_list, "USE_NODE_DIRECTIONS", -1, 0);
+  add_option_value (options_list, "USE_NUMERIC_ENTITY", -1, 0);
+  add_option_value (options_list, "USE_REL_REV", -1, 0);
+  add_option_value (options_list, "USE_SETFILENAME_EXTENSION", -1, 0);
+  add_option_value (options_list, "USE_TITLEPAGE_FOR_TITLE", -1, 0);
+  add_option_value (options_list, "USE_UNIDECODE", -1, 0);
+  add_option_value (options_list, "USE_XML_SYNTAX", -1, 0);
+  add_option_value (options_list, "VERTICAL_HEAD_NAVIGATION", -1, 0);
+  add_option_value (options_list, "WORDS_IN_PAGE", -1, 0);
+  add_option_value (options_list, "XREF_USE_FLOAT_LABEL", -1, 0);
+  add_option_value (options_list, "XREF_USE_NODE_NAME_ARG", -1, 0);
+  add_option_value (options_list, "XS_EXTERNAL_CONVERSION", -1, 0);
+  add_option_value (options_list, "XS_EXTERNAL_FORMATTING", -1, 0);
+  add_option_value (options_list, "XS_STRXFRM_COLLATION_LOCALE", -2, 0);
+  add_option_value (options_list, "_INLINE_STYLE_WIDTH", -1, 0);
 }
 
 
@@ -391,28 +396,39 @@ add_converter_other_options_defaults (OPTIONS_LIST 
*options_list)
 {
   OPTION *option;
 
-  option = new_option (GOT_buttons, "LINKS_BUTTONS", 0);
-  options_list_add_option (options_list, option);
-  option = new_option (GOT_buttons, "TOP_BUTTONS", 0);
-  options_list_add_option (options_list, option);
-  option = new_option (GOT_buttons, "TOP_FOOTER_BUTTONS", 0);
-  options_list_add_option (options_list, option);
-  option = new_option (GOT_buttons, "SECTION_BUTTONS", 0);
-  options_list_add_option (options_list, option);
-  option = new_option (GOT_buttons, "CHAPTER_FOOTER_BUTTONS", 0);
-  options_list_add_option (options_list, option);
-  option = new_option (GOT_buttons, "SECTION_FOOTER_BUTTONS", 0);
-  options_list_add_option (options_list, option);
-  option = new_option (GOT_buttons, "NODE_FOOTER_BUTTONS", 0);
-  options_list_add_option (options_list, option);
-  option = new_option (GOT_buttons, "MISC_BUTTONS", 0);
-  options_list_add_option (options_list, option);
-  option = new_option (GOT_buttons, "CHAPTER_BUTTONS", 0);
-  options_list_add_option (options_list, option);
-  option = new_option (GOT_icons, "ACTIVE_ICONS", 0);
-  options_list_add_option (options_list, option);
-  option = new_option (GOT_icons, "PASSIVE_ICONS", 0);
-  options_list_add_option (options_list, option);
+  option = find_option_string (options_list->sorted_options, "LINKS_BUTTONS");
+  options_list_add_option_number (options_list, option->number);
+  clear_option (option);
+  option = find_option_string (options_list->sorted_options, "TOP_BUTTONS");
+  options_list_add_option_number (options_list, option->number);
+  clear_option (option);
+  option = find_option_string (options_list->sorted_options, 
"TOP_FOOTER_BUTTONS");
+  options_list_add_option_number (options_list, option->number);
+  clear_option (option);
+  option = find_option_string (options_list->sorted_options, 
"SECTION_BUTTONS");
+  options_list_add_option_number (options_list, option->number);
+  clear_option (option);
+  option = find_option_string (options_list->sorted_options, 
"CHAPTER_FOOTER_BUTTONS");
+  options_list_add_option_number (options_list, option->number);
+  clear_option (option);
+  option = find_option_string (options_list->sorted_options, 
"SECTION_FOOTER_BUTTONS");
+  options_list_add_option_number (options_list, option->number);
+  clear_option (option);
+  option = find_option_string (options_list->sorted_options, 
"NODE_FOOTER_BUTTONS");
+  options_list_add_option_number (options_list, option->number);
+  clear_option (option);
+  option = find_option_string (options_list->sorted_options, "MISC_BUTTONS");
+  options_list_add_option_number (options_list, option->number);
+  clear_option (option);
+  option = find_option_string (options_list->sorted_options, 
"CHAPTER_BUTTONS");
+  options_list_add_option_number (options_list, option->number);
+  clear_option (option);
+  option = find_option_string (options_list->sorted_options, "ACTIVE_ICONS");
+  options_list_add_option_number (options_list, option->number);
+  clear_option (option);
+  option = find_option_string (options_list->sorted_options, "PASSIVE_ICONS");
+  options_list_add_option_number (options_list, option->number);
+  clear_option (option);
 }
 
 
@@ -451,31 +467,31 @@ set_multiple_at_command_options_defaults (OPTIONS 
*options)
 void
 add_multiple_at_command_options_defaults (OPTIONS_LIST *options_list)
 {
-  add_new_option_value (options_list, GOT_char, "allowcodebreaks", -2, "true");
-  add_new_option_value (options_list, GOT_char, "clickstyle", -2, "@arrow");
-  add_new_option_value (options_list, GOT_char, "codequotebacktick", -2, 
"off");
-  add_new_option_value (options_list, GOT_char, "codequoteundirected", -2, 
"off");
-  add_new_option_value (options_list, GOT_integer, "contents", 0, 0);
-  add_new_option_value (options_list, GOT_char, "deftypefnnewline", -2, "off");
-  add_new_option_value (options_list, GOT_char, "documentencoding", -2, 
"utf-8");
-  add_new_option_value (options_list, GOT_char, "documentlanguage", -2, 0);
-  add_new_option_value (options_list, GOT_char, "evenfooting", -2, 0);
-  add_new_option_value (options_list, GOT_char, "evenheading", -2, 0);
-  add_new_option_value (options_list, GOT_char, "everyfooting", -2, 0);
-  add_new_option_value (options_list, GOT_char, "everyheading", -2, 0);
-  add_new_option_value (options_list, GOT_char, "exampleindent", -2, "5");
-  add_new_option_value (options_list, GOT_char, "firstparagraphindent", -2, 
"none");
-  add_new_option_value (options_list, GOT_char, "frenchspacing", -2, "off");
-  add_new_option_value (options_list, GOT_char, "headings", -2, "on");
-  add_new_option_value (options_list, GOT_char, "kbdinputstyle", -2, 
"distinct");
-  add_new_option_value (options_list, GOT_char, "microtype", -2, 0);
-  add_new_option_value (options_list, GOT_char, "oddheading", -2, 0);
-  add_new_option_value (options_list, GOT_char, "oddfooting", -2, 0);
-  add_new_option_value (options_list, GOT_char, "paragraphindent", -2, "3");
-  add_new_option_value (options_list, GOT_integer, "shortcontents", 0, 0);
-  add_new_option_value (options_list, GOT_integer, "summarycontents", 0, 0);
-  add_new_option_value (options_list, GOT_char, "urefbreakstyle", -2, "after");
-  add_new_option_value (options_list, GOT_char, "xrefautomaticsectiontitle", 
-2, "off");
+  add_option_value (options_list, "allowcodebreaks", -2, "true");
+  add_option_value (options_list, "clickstyle", -2, "@arrow");
+  add_option_value (options_list, "codequotebacktick", -2, "off");
+  add_option_value (options_list, "codequoteundirected", -2, "off");
+  add_option_value (options_list, "contents", 0, 0);
+  add_option_value (options_list, "deftypefnnewline", -2, "off");
+  add_option_value (options_list, "documentencoding", -2, "utf-8");
+  add_option_value (options_list, "documentlanguage", -2, 0);
+  add_option_value (options_list, "evenfooting", -2, 0);
+  add_option_value (options_list, "evenheading", -2, 0);
+  add_option_value (options_list, "everyfooting", -2, 0);
+  add_option_value (options_list, "everyheading", -2, 0);
+  add_option_value (options_list, "exampleindent", -2, "5");
+  add_option_value (options_list, "firstparagraphindent", -2, "none");
+  add_option_value (options_list, "frenchspacing", -2, "off");
+  add_option_value (options_list, "headings", -2, "on");
+  add_option_value (options_list, "kbdinputstyle", -2, "distinct");
+  add_option_value (options_list, "microtype", -2, 0);
+  add_option_value (options_list, "oddheading", -2, 0);
+  add_option_value (options_list, "oddfooting", -2, 0);
+  add_option_value (options_list, "paragraphindent", -2, "3");
+  add_option_value (options_list, "shortcontents", 0, 0);
+  add_option_value (options_list, "summarycontents", 0, 0);
+  add_option_value (options_list, "urefbreakstyle", -2, "after");
+  add_option_value (options_list, "xrefautomaticsectiontitle", -2, "off");
 }
 
 
@@ -496,13 +512,13 @@ set_program_cmdline_options_defaults (OPTIONS *options)
 void
 add_program_cmdline_options_defaults (OPTIONS_LIST *options_list)
 {
-  add_new_option_value (options_list, GOT_bytes, "MACRO_EXPAND", -2, 0);
-  add_new_option_value (options_list, GOT_bytes, "INTERNAL_LINKS", -2, 0);
-  add_new_option_value (options_list, GOT_integer, "ERROR_LIMIT", 100, 0);
-  add_new_option_value (options_list, GOT_integer, "FORCE", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "NO_WARN", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "TRACE_INCLUDES", 0, 0);
-  add_new_option_value (options_list, GOT_char, "FORMAT_MENU", -2, "menu");
+  add_option_value (options_list, "MACRO_EXPAND", -2, 0);
+  add_option_value (options_list, "INTERNAL_LINKS", -2, 0);
+  add_option_value (options_list, "ERROR_LIMIT", 100, 0);
+  add_option_value (options_list, "FORCE", -1, 0);
+  add_option_value (options_list, "NO_WARN", -1, 0);
+  add_option_value (options_list, "TRACE_INCLUDES", 0, 0);
+  add_option_value (options_list, "FORMAT_MENU", -2, "menu");
 }
 
 
@@ -525,15 +541,15 @@ set_program_customization_options_defaults (OPTIONS 
*options)
 void
 add_program_customization_options_defaults (OPTIONS_LIST *options_list)
 {
-  add_new_option_value (options_list, GOT_integer, 
"CHECK_NORMAL_MENU_STRUCTURE", 1, 0);
-  add_new_option_value (options_list, GOT_integer, "CHECK_MISSING_MENU_ENTRY", 
1, 0);
-  add_new_option_value (options_list, GOT_integer, "DUMP_TREE", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "DUMP_TEXI", -1, 0);
-  add_new_option_value (options_list, GOT_integer, "SHOW_BUILTIN_CSS_RULES", 
0, 0);
-  add_new_option_value (options_list, GOT_char, "SORT_ELEMENT_COUNT", -2, 0);
-  add_new_option_value (options_list, GOT_integer, "SORT_ELEMENT_COUNT_WORDS", 
-1, 0);
-  add_new_option_value (options_list, GOT_char, "TEXI2DVI", -2, "texi2dvi");
-  add_new_option_value (options_list, GOT_char, "TREE_TRANSFORMATIONS", -2, 0);
+  add_option_value (options_list, "CHECK_NORMAL_MENU_STRUCTURE", 1, 0);
+  add_option_value (options_list, "CHECK_MISSING_MENU_ENTRY", 1, 0);
+  add_option_value (options_list, "DUMP_TREE", -1, 0);
+  add_option_value (options_list, "DUMP_TEXI", -1, 0);
+  add_option_value (options_list, "SHOW_BUILTIN_CSS_RULES", 0, 0);
+  add_option_value (options_list, "SORT_ELEMENT_COUNT", -2, 0);
+  add_option_value (options_list, "SORT_ELEMENT_COUNT_WORDS", -1, 0);
+  add_option_value (options_list, "TEXI2DVI", -2, "texi2dvi");
+  add_option_value (options_list, "TREE_TRANSFORMATIONS", -2, 0);
 }
 
 
@@ -566,25 +582,25 @@ set_unique_at_command_options_defaults (OPTIONS *options)
 void
 add_unique_at_command_options_defaults (OPTIONS_LIST *options_list)
 {
-  add_new_option_value (options_list, GOT_char, "afivepaper", -2, 0);
-  add_new_option_value (options_list, GOT_char, "afourpaper", -2, 0);
-  add_new_option_value (options_list, GOT_char, "afourlatex", -2, 0);
-  add_new_option_value (options_list, GOT_char, "afourwide", -2, 0);
-  add_new_option_value (options_list, GOT_char, "bsixpaper", -2, 0);
-  add_new_option_value (options_list, GOT_char, "documentdescription", -2, 0);
-  add_new_option_value (options_list, GOT_char, "evenfootingmarks", -2, 0);
-  add_new_option_value (options_list, GOT_char, "evenheadingmarks", -2, 0);
-  add_new_option_value (options_list, GOT_char, "everyfootingmarks", -2, 
"bottom");
-  add_new_option_value (options_list, GOT_char, "everyheadingmarks", -2, 
"bottom");
-  add_new_option_value (options_list, GOT_integer, "fonttextsize", 11, 0);
-  add_new_option_value (options_list, GOT_char, "footnotestyle", -2, "end");
-  add_new_option_value (options_list, GOT_integer, "novalidate", 0, 0);
-  add_new_option_value (options_list, GOT_char, "oddfootingmarks", -2, 0);
-  add_new_option_value (options_list, GOT_char, "oddheadingmarks", -2, 0);
-  add_new_option_value (options_list, GOT_char, "pagesizes", -2, 0);
-  add_new_option_value (options_list, GOT_char, "setchapternewpage", -2, "on");
-  add_new_option_value (options_list, GOT_char, "setfilename", -2, 0);
-  add_new_option_value (options_list, GOT_char, "smallbook", -2, 0);
+  add_option_value (options_list, "afivepaper", -2, 0);
+  add_option_value (options_list, "afourpaper", -2, 0);
+  add_option_value (options_list, "afourlatex", -2, 0);
+  add_option_value (options_list, "afourwide", -2, 0);
+  add_option_value (options_list, "bsixpaper", -2, 0);
+  add_option_value (options_list, "documentdescription", -2, 0);
+  add_option_value (options_list, "evenfootingmarks", -2, 0);
+  add_option_value (options_list, "evenheadingmarks", -2, 0);
+  add_option_value (options_list, "everyfootingmarks", -2, "bottom");
+  add_option_value (options_list, "everyheadingmarks", -2, "bottom");
+  add_option_value (options_list, "fonttextsize", 11, 0);
+  add_option_value (options_list, "footnotestyle", -2, "end");
+  add_option_value (options_list, "novalidate", 0, 0);
+  add_option_value (options_list, "oddfootingmarks", -2, 0);
+  add_option_value (options_list, "oddheadingmarks", -2, 0);
+  add_option_value (options_list, "pagesizes", -2, 0);
+  add_option_value (options_list, "setchapternewpage", -2, "on");
+  add_option_value (options_list, "setfilename", -2, 0);
+  add_option_value (options_list, "smallbook", -2, 0);
 }
 
 void
diff --git a/tp/Texinfo/XS/teximakehtml.c b/tp/Texinfo/XS/teximakehtml.c
index 085b544569..4f91d9f5a3 100644
--- a/tp/Texinfo/XS/teximakehtml.c
+++ b/tp/Texinfo/XS/teximakehtml.c
@@ -42,39 +42,6 @@
 
 #define LOCALEDIR DATADIR "/locale"
 
-/* these functions are generic, could be added to customization_options.c */
-void
-add_button_option (OPTIONS_LIST *options_list, OPTION **sorted_options,
-                   const char *option_name,
-                   BUTTON_SPECIFICATION_LIST *buttons)
-{
-  OPTION *option;
-
-  const OPTION *ref_option = find_option_string (sorted_options, option_name);
-  if (!ref_option)
-    return;
-
-  option = new_option (ref_option->type, ref_option->name, ref_option->number);
-  option->o.buttons = buttons;
-
-  options_list_add_option (options_list, option);
-}
-
-/* this function or a variation could be added to customization_options.c */
-static OPTION *
-add_new_option_strlist_value (OPTIONS_LIST *options_list,
-                  enum global_option_type type, const char *name,
-                  const STRING_LIST *strlist)
-{
-  OPTION *option = new_option (type, name, 0);
-
-  copy_strings (option->o.strlist, strlist);
-
-  options_list_add_option (options_list, option);
-
-  return option;
-}
-
 static const char *expanded_formats[] = {"html", 0};
 static VALUE values_array[] = {
   {"txicommandconditionals", "1"}
@@ -242,13 +209,13 @@ main (int argc, char *argv[])
    */
   if (test)
     {
-      add_new_option_strlist_value (&parser_options, GOT_char_string_list,
-                        "EXPANDED_FORMATS", &test_parser_EXPANDED_FORMATS);
+      add_option_strlist_value (&parser_options, "EXPANDED_FORMATS",
+                                &test_parser_EXPANDED_FORMATS);
     }
   else
     {
-      add_new_option_strlist_value (&parser_options, GOT_char_string_list,
-                            "EXPANDED_FORMATS", &parser_EXPANDED_FORMATS);
+      add_option_strlist_value (&parser_options, "EXPANDED_FORMATS",
+                                &parser_EXPANDED_FORMATS);
     }
 
 
@@ -303,11 +270,9 @@ main (int argc, char *argv[])
       custom_node_footer_buttons = new_base_links_buttons (0);
       add_new_button_option (&convert_options,
                      "NODE_FOOTER_BUTTONS", custom_node_footer_buttons);
-      add_new_option_value (&convert_options, GOT_integer,
-                           "PROGRAM_NAME_IN_FOOTER", 1, 0);
+      add_option_value (&convert_options, "PROGRAM_NAME_IN_FOOTER", 1, 0);
       /* this is set to help with comparison with previous invokations */
-      add_new_option_value (&convert_options, GOT_integer,
-                            "TEST", 1, 0);
+      add_option_value (&convert_options, "TEST", 1, 0);
     }
   else
     {
@@ -321,14 +286,13 @@ main (int argc, char *argv[])
       free (program_file);
       program_file = strdup ("texi2any");
 
-      add_new_option_value (&convert_options, GOT_char,
-                            "PACKAGE_VERSION", 0, configured_version);
-      add_new_option_value (&convert_options, GOT_char,
-                            "PACKAGE_AND_VERSION", 0, configured_name_version);
+      add_option_value (&convert_options, "PACKAGE_VERSION", 0,
+                        configured_version);
+      add_option_value (&convert_options, "PACKAGE_AND_VERSION", 0,
+                        configured_name_version);
     }
   /*
-  add_new_option_value (&convert_options, GOT_integer,
-                        "CHECK_HTMLXREF", 1, 0);
+  add_option_value (&convert_options, "CHECK_HTMLXREF", 1, 0);
    */
 
   memset (&converter_texinfo_language_config_dirs, 0, sizeof (STRING_LIST));
diff --git a/tp/maintain/regenerate_C_options_info.pl 
b/tp/maintain/regenerate_C_options_info.pl
index 4872bf1c3c..a7aa567b4d 100755
--- a/tp/maintain/regenerate_C_options_info.pl
+++ b/tp/maintain/regenerate_C_options_info.pl
@@ -412,11 +412,15 @@ foreach my $category (sort(keys(%option_categories))) {
     my ($option, $value, $type) = @$option_info;
     if ($type eq 'char' or $type eq 'bytes' or $type eq 'integer') {
       my ($int_value, $char_value) = get_value($type, $value);
-      print ODCF "  add_new_option_value (options_list, GOT_$type, "
+      print ODCF "  add_option_value (options_list, "
                    ."\"$option\", $int_value, $char_value);\n";
     } else {
-      print ODCF "  option = new_option (GOT_$type, \"$option\", 0);\n";
-      print ODCF "  options_list_add_option (options_list, option);\n";
+      print ODCF
+        "  option = find_option_string (options_list->sorted_options, "
+                                                 ."\"$option\");\n";
+      print ODCF
+        "  options_list_add_option_number (options_list, option->number);\n";
+      print ODCF "  clear_option (option);\n";
     }
   }
   print ODCF "}\n\n";
@@ -498,7 +502,7 @@ foreach my $format (@sorted_formats) {
     my $option_info = $options{$option};
     my ($option_unused, $main_default, $type) = @$option_info;
     my ($int_value, $char_value) = get_value($type, $value);
-    print CDCF "  add_new_option_value (options_list, GOT_$type, "
+    print CDCF "  add_option_value (options_list, "
                  ."\"$option\", $int_value, $char_value);\n";
   }
   print CDCF "}\n\n";



reply via email to

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