texinfo-commits
[Top][All Lists]
Advanced

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

[no subject]


From: Patrice Dumas
Date: Fri, 4 Oct 2024 04:39:54 -0400 (EDT)

branch: master
commit e080c9333de2d009d35fe28fdac30e0c1ef8f0f2
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Fri Oct 4 10:39:54 2024 +0200

    Add generated code files to version control
---
 .gitignore                                         |   14 -
 ChangeLog                                          |    4 +
 tp/Texinfo/XS/convert/cmd_converter.c              |  394 ++
 tp/Texinfo/XS/main/accent_tables_8bit_codepoints.c |  438 ++
 tp/Texinfo/XS/main/cmd_normalization.c             |  394 ++
 tp/Texinfo/XS/main/cmd_structuring.c               |  788 ++++
 tp/Texinfo/XS/main/cmd_symbol.c                    |  394 ++
 tp/Texinfo/XS/main/cmd_text.c                      | 1184 +++++
 tp/Texinfo/XS/main/cmd_unicode.c                   |  788 ++++
 tp/Texinfo/XS/main/command_data.c                  |  395 ++
 tp/Texinfo/XS/main/global_commands_types.h         |   83 +
 tp/Texinfo/XS/main/global_multi_commands_case.c    |   36 +
 tp/Texinfo/XS/main/global_unique_commands_case.c   |   33 +
 tp/Texinfo/XS/main/options_get_perl.c              | 4866 ++++++++++++++++++++
 tp/Texinfo/XS/main/options_init_free.c             | 3143 +++++++++++++
 tp/Texinfo/XS/main/options_types.h                 |  276 ++
 16 files changed, 13216 insertions(+), 14 deletions(-)

diff --git a/.gitignore b/.gitignore
index 8660dc334b..3b0e132f04 100644
--- a/.gitignore
+++ b/.gitignore
@@ -349,19 +349,6 @@ tp/Texinfo/XS/gnulib/lib/sys/types.h
 
 tp/Texinfo/XS/main/DocumentXS.c
 tp/Texinfo/XS/main/IndicesXS.c
-tp/Texinfo/XS/main/accent_tables_8bit_codepoints.c
-tp/Texinfo/XS/main/command_data.c
-tp/Texinfo/XS/main/cmd_normalization.c
-tp/Texinfo/XS/main/cmd_unicode.c
-tp/Texinfo/XS/main/cmd_structuring.c
-tp/Texinfo/XS/main/cmd_symbol.c
-tp/Texinfo/XS/main/cmd_text.c
-tp/Texinfo/XS/main/global_commands_types.h
-tp/Texinfo/XS/main/global_multi_commands_case.c
-tp/Texinfo/XS/main/global_unique_commands_case.c
-tp/Texinfo/XS/main/options_get_perl.c
-tp/Texinfo/XS/main/options_init_free.c
-tp/Texinfo/XS/main/options_types.h
 
 tp/Texinfo/XS/main/*.lo
 
@@ -376,7 +363,6 @@ tp/Texinfo/XS/parsetexi/*.la
 tp/Texinfo/XS/parsetexi/*.lo
 
 tp/Texinfo/XS/convert/ConvertXS.c
-tp/Texinfo/XS/convert/cmd_converter.c
 
 tp/Texinfo/XS/convert/.libs
 tp/Texinfo/XS/convert/*.la
diff --git a/ChangeLog b/ChangeLog
index b19d4d0560..eb67e6d6bd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2024-10-04  Patrice Dumas  <pertusus@free.fr>
+
+       Add generated code files to version control
+
 2024-10-04  Patrice Dumas  <pertusus@free.fr>
 
        * tp/maintain/setup_converters_code_tables.pl: use the basename to
diff --git a/tp/Texinfo/XS/convert/cmd_converter.c 
b/tp/Texinfo/XS/convert/cmd_converter.c
new file mode 100644
index 0000000000..f62f725cb6
--- /dev/null
+++ b/tp/Texinfo/XS/convert/cmd_converter.c
@@ -0,0 +1,394 @@
+/* Automatically generated from setup_converters_code_tables.pl */
+
+const char *xml_text_entity_no_arg_commands[] = {
+0,
+0,
+0,
+0,
+0,
+0,
+"&amp;",  /* & */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"&Aring;",  /* AA */
+"&AElig;",  /* AE */
+"&ETH;",  /* DH */
+0,
+"&#321;",  /* L */
+0,
+"&Oslash;",  /* O */
+"&OElig;",  /* OE */
+"&THORN;",  /* TH */
+0,
+0,
+0,
+0,
+0,
+"&aring;",  /* aa */
+0,
+0,
+"&aelig;",  /* ae */
+0,
+0,
+0,
+0,
+0,
+0,
+"&amp;",  /* ampchar */
+0,
+0,
+0,
+0,
+0,
+0,
+"&rarr;",  /* arrow */
+0,
+0,
+0,
+0,
+0,
+0,
+"&bull;",  /* bullet */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"&rarr;",  /* click */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"&copy;",  /* copyright */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"&eth;",  /* dh */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"&hellip;",  /* dots */
+0,
+0,
+0,
+0,
+0,
+0,
+"&equiv;",  /* equiv */
+"error--&gt;",  /* error */
+0,
+"&euro;",  /* euro */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"&iexcl;",  /* exclamdown */
+0,
+"&rarr;",  /* expansion */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"&ge;",  /* geq */
+0,
+"&laquo;",  /* guillemetleft */
+"&raquo;",  /* guillemetright */
+"&laquo;",  /* guillemotleft */
+"&raquo;",  /* guillemotright */
+"&lsaquo;",  /* guilsinglleft */
+"&rsaquo;",  /* guilsinglright */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"&#322;",  /* l */
+0,
+0,
+"&le;",  /* leq */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"&minus;",  /* minus */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"&oslash;",  /* o */
+0,
+0,
+0,
+0,
+"&oelig;",  /* oe */
+0,
+0,
+"&ordf;",  /* ordf */
+"&ordm;",  /* ordm */
+0,
+0,
+0,
+0,
+0,
+0,
+"&lowast;",  /* point */
+"&pound;",  /* pounds */
+0,
+0,
+0,
+"&iquest;",  /* questiondown */
+0,
+"&bdquo;",  /* quotedblbase */
+"&ldquo;",  /* quotedblleft */
+"&rdquo;",  /* quotedblright */
+"&lsquo;",  /* quoteleft */
+"&rsquo;",  /* quoteright */
+"&sbquo;",  /* quotesinglbase */
+0,
+0,
+0,
+0,
+0,
+0,
+"&reg;",  /* registeredsymbol */
+"&rArr;",  /* result */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"&szlig;",  /* ss */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"&deg;",  /* textdegree */
+"&thorn;",  /* th */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"&nbsp;",  /* tie */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+};
+
diff --git a/tp/Texinfo/XS/main/accent_tables_8bit_codepoints.c 
b/tp/Texinfo/XS/main/accent_tables_8bit_codepoints.c
new file mode 100644
index 0000000000..14a8e82c6c
--- /dev/null
+++ b/tp/Texinfo/XS/main/accent_tables_8bit_codepoints.c
@@ -0,0 +1,438 @@
+/* Automatically generated from setup_accent_tables.pl */
+
+const struct ENCODING_CODEPOINTS unicode_to_eight_bit[] = {
+{"iso-8859-1", 96, {
+  "00A0",    /* A0 */ 
+  "00A1",    /* A1 */ 
+  "00A2",    /* A2 */ 
+  "00A3",    /* A3 */ 
+  "00A4",    /* A4 */ 
+  "00A5",    /* A5 */ 
+  "00A6",    /* A6 */ 
+  "00A7",    /* A7 */ 
+  "00A8",    /* A8 */ 
+  "00A9",    /* A9 */ 
+  "00AA",    /* AA */ 
+  "00AB",    /* AB */ 
+  "00AC",    /* AC */ 
+  "00AD",    /* AD */ 
+  "00AE",    /* AE */ 
+  "00AF",    /* AF */ 
+  "00B0",    /* B0 */ 
+  "00B1",    /* B1 */ 
+  "00B2",    /* B2 */ 
+  "00B3",    /* B3 */ 
+  "00B4",    /* B4 */ 
+  "00B5",    /* B5 */ 
+  "00B6",    /* B6 */ 
+  "00B7",    /* B7 */ 
+  "00B8",    /* B8 */ 
+  "00B9",    /* B9 */ 
+  "00BA",    /* BA */ 
+  "00BB",    /* BB */ 
+  "00BC",    /* BC */ 
+  "00BD",    /* BD */ 
+  "00BE",    /* BE */ 
+  "00BF",    /* BF */ 
+  "00C0",    /* C0 */ 
+  "00C1",    /* C1 */ 
+  "00C2",    /* C2 */ 
+  "00C3",    /* C3 */ 
+  "00C4",    /* C4 */ 
+  "00C5",    /* C5 */ 
+  "00C6",    /* C6 */ 
+  "00C7",    /* C7 */ 
+  "00C8",    /* C8 */ 
+  "00C9",    /* C9 */ 
+  "00CA",    /* CA */ 
+  "00CB",    /* CB */ 
+  "00CC",    /* CC */ 
+  "00CD",    /* CD */ 
+  "00CE",    /* CE */ 
+  "00CF",    /* CF */ 
+  "00D0",    /* D0 */ 
+  "00D1",    /* D1 */ 
+  "00D2",    /* D2 */ 
+  "00D3",    /* D3 */ 
+  "00D4",    /* D4 */ 
+  "00D5",    /* D5 */ 
+  "00D6",    /* D6 */ 
+  "00D7",    /* D7 */ 
+  "00D8",    /* D8 */ 
+  "00D9",    /* D9 */ 
+  "00DA",    /* DA */ 
+  "00DB",    /* DB */ 
+  "00DC",    /* DC */ 
+  "00DD",    /* DD */ 
+  "00DE",    /* DE */ 
+  "00DF",    /* DF */ 
+  "00E0",    /* E0 */ 
+  "00E1",    /* E1 */ 
+  "00E2",    /* E2 */ 
+  "00E3",    /* E3 */ 
+  "00E4",    /* E4 */ 
+  "00E5",    /* E5 */ 
+  "00E6",    /* E6 */ 
+  "00E7",    /* E7 */ 
+  "00E8",    /* E8 */ 
+  "00E9",    /* E9 */ 
+  "00EA",    /* EA */ 
+  "00EB",    /* EB */ 
+  "00EC",    /* EC */ 
+  "00ED",    /* ED */ 
+  "00EE",    /* EE */ 
+  "00EF",    /* EF */ 
+  "00F0",    /* F0 */ 
+  "00F1",    /* F1 */ 
+  "00F2",    /* F2 */ 
+  "00F3",    /* F3 */ 
+  "00F4",    /* F4 */ 
+  "00F5",    /* F5 */ 
+  "00F6",    /* F6 */ 
+  "00F7",    /* F7 */ 
+  "00F8",    /* F8 */ 
+  "00F9",    /* F9 */ 
+  "00FA",    /* FA */ 
+  "00FB",    /* FB */ 
+  "00FC",    /* FC */ 
+  "00FD",    /* FD */ 
+  "00FE",    /* FE */ 
+  "00FF",    /* FF */ 
+}},
+{"iso-8859-15", 96, {
+  "00A0",    /* A0 */ 
+  "00A1",    /* A1 */ 
+  "00A2",    /* A2 */ 
+  "00A3",    /* A3 */ 
+  "00A5",    /* A5 */ 
+  "00A7",    /* A7 */ 
+  "00A9",    /* A9 */ 
+  "00AA",    /* AA */ 
+  "00AB",    /* AB */ 
+  "00AC",    /* AC */ 
+  "00AD",    /* AD */ 
+  "00AE",    /* AE */ 
+  "00AF",    /* AF */ 
+  "00B0",    /* B0 */ 
+  "00B1",    /* B1 */ 
+  "00B2",    /* B2 */ 
+  "00B3",    /* B3 */ 
+  "00B5",    /* B5 */ 
+  "00B6",    /* B6 */ 
+  "00B7",    /* B7 */ 
+  "00B9",    /* B9 */ 
+  "00BA",    /* BA */ 
+  "00BB",    /* BB */ 
+  "00BF",    /* BF */ 
+  "00C0",    /* C0 */ 
+  "00C1",    /* C1 */ 
+  "00C2",    /* C2 */ 
+  "00C3",    /* C3 */ 
+  "00C4",    /* C4 */ 
+  "00C5",    /* C5 */ 
+  "00C6",    /* C6 */ 
+  "00C7",    /* C7 */ 
+  "00C8",    /* C8 */ 
+  "00C9",    /* C9 */ 
+  "00CA",    /* CA */ 
+  "00CB",    /* CB */ 
+  "00CC",    /* CC */ 
+  "00CD",    /* CD */ 
+  "00CE",    /* CE */ 
+  "00CF",    /* CF */ 
+  "00D0",    /* D0 */ 
+  "00D1",    /* D1 */ 
+  "00D2",    /* D2 */ 
+  "00D3",    /* D3 */ 
+  "00D4",    /* D4 */ 
+  "00D5",    /* D5 */ 
+  "00D6",    /* D6 */ 
+  "00D7",    /* D7 */ 
+  "00D8",    /* D8 */ 
+  "00D9",    /* D9 */ 
+  "00DA",    /* DA */ 
+  "00DB",    /* DB */ 
+  "00DC",    /* DC */ 
+  "00DD",    /* DD */ 
+  "00DE",    /* DE */ 
+  "00DF",    /* DF */ 
+  "00E0",    /* E0 */ 
+  "00E1",    /* E1 */ 
+  "00E2",    /* E2 */ 
+  "00E3",    /* E3 */ 
+  "00E4",    /* E4 */ 
+  "00E5",    /* E5 */ 
+  "00E6",    /* E6 */ 
+  "00E7",    /* E7 */ 
+  "00E8",    /* E8 */ 
+  "00E9",    /* E9 */ 
+  "00EA",    /* EA */ 
+  "00EB",    /* EB */ 
+  "00EC",    /* EC */ 
+  "00ED",    /* ED */ 
+  "00EE",    /* EE */ 
+  "00EF",    /* EF */ 
+  "00F0",    /* F0 */ 
+  "00F1",    /* F1 */ 
+  "00F2",    /* F2 */ 
+  "00F3",    /* F3 */ 
+  "00F4",    /* F4 */ 
+  "00F5",    /* F5 */ 
+  "00F6",    /* F6 */ 
+  "00F7",    /* F7 */ 
+  "00F8",    /* F8 */ 
+  "00F9",    /* F9 */ 
+  "00FA",    /* FA */ 
+  "00FB",    /* FB */ 
+  "00FC",    /* FC */ 
+  "00FD",    /* FD */ 
+  "00FE",    /* FE */ 
+  "00FF",    /* FF */ 
+  "0152",    /* BC */ 
+  "0153",    /* BD */ 
+  "0160",    /* A6 */ 
+  "0161",    /* A8 */ 
+  "0178",    /* BE */ 
+  "017D",    /* B4 */ 
+  "017E",    /* B8 */ 
+  "20AC",    /* A4 */ 
+}},
+{"iso-8859-2", 95, {
+  "00A0",    /* A0 */ 
+  "00A4",    /* A4 */ 
+  "00A7",    /* A7 */ 
+  "00A8",    /* A8 */ 
+  "00AD",    /* AD */ 
+  "00B0",    /* B0 */ 
+  "00B4",    /* B4 */ 
+  "00B8",    /* B8 */ 
+  "00C1",    /* C1 */ 
+  "00C2",    /* C2 */ 
+  "00C4",    /* C4 */ 
+  "00C7",    /* C7 */ 
+  "00C9",    /* C9 */ 
+  "00CB",    /* CB */ 
+  "00CD",    /* CD */ 
+  "00CE",    /* CE */ 
+  "00D3",    /* D3 */ 
+  "00D4",    /* D4 */ 
+  "00D6",    /* D6 */ 
+  "00D7",    /* D7 */ 
+  "00DA",    /* DA */ 
+  "00DC",    /* DC */ 
+  "00DD",    /* DD */ 
+  "00DF",    /* DF */ 
+  "00E1",    /* E1 */ 
+  "00E2",    /* E2 */ 
+  "00E4",    /* E4 */ 
+  "00E7",    /* E7 */ 
+  "00E9",    /* E9 */ 
+  "00EB",    /* EB */ 
+  "00ED",    /* ED */ 
+  "00EE",    /* EE */ 
+  "00F3",    /* F3 */ 
+  "00F4",    /* F4 */ 
+  "00F6",    /* F6 */ 
+  "00F7",    /* F7 */ 
+  "00FA",    /* FA */ 
+  "00FC",    /* FC */ 
+  "00FD",    /* FD */ 
+  "0102",    /* C3 */ 
+  "0103",    /* E3 */ 
+  "0104",    /* A1 */ 
+  "0105",    /* B1 */ 
+  "0106",    /* C6 */ 
+  "0107",    /* E6 */ 
+  "010C",    /* C8 */ 
+  "010D",    /* E8 */ 
+  "010E",    /* CF */ 
+  "010F",    /* EF */ 
+  "0110",    /* D0 */ 
+  "0111",    /* F0 */ 
+  "0118",    /* CA */ 
+  "0119",    /* EA */ 
+  "011A",    /* CC */ 
+  "011B",    /* EC */ 
+  "0139",    /* C5 */ 
+  "013A",    /* E5 */ 
+  "013D",    /* A5 */ 
+  "013E",    /* B5 */ 
+  "0141",    /* A3 */ 
+  "0142",    /* B3 */ 
+  "0143",    /* D1 */ 
+  "0144",    /* F1 */ 
+  "0147",    /* D2 */ 
+  "0148",    /* F2 */ 
+  "0150",    /* D5 */ 
+  "0151",    /* F5 */ 
+  "0154",    /* C0 */ 
+  "0155",    /* E0 */ 
+  "0158",    /* D8 */ 
+  "0159",    /* F8 */ 
+  "015A",    /* A6 */ 
+  "015B",    /* B6 */ 
+  "015E",    /* AA */ 
+  "015F",    /* BA */ 
+  "0161",    /* B9 */ 
+  "0162",    /* DE */ 
+  "0163",    /* FE */ 
+  "0164",    /* AB */ 
+  "0165",    /* BB */ 
+  "016E",    /* D9 */ 
+  "016F",    /* F9 */ 
+  "0170",    /* DB */ 
+  "0171",    /* FB */ 
+  "0179",    /* AC */ 
+  "017A",    /* BC */ 
+  "017B",    /* AF */ 
+  "017C",    /* BF */ 
+  "017D",    /* AE */ 
+  "017E",    /* BE */ 
+  "02C7",    /* B7 */ 
+  "02D8",    /* A2 */ 
+  "02D9",    /* FF */ 
+  "02DB",    /* B2 */ 
+  "02DD",    /* BD */ 
+}},
+{"koi8-r", 64, {
+  "0410",    /* E1 */ 
+  "0411",    /* E2 */ 
+  "0412",    /* F7 */ 
+  "0413",    /* E7 */ 
+  "0414",    /* E4 */ 
+  "0415",    /* E5 */ 
+  "0416",    /* F6 */ 
+  "0417",    /* FA */ 
+  "0418",    /* E9 */ 
+  "0419",    /* EA */ 
+  "041A",    /* EB */ 
+  "041B",    /* EC */ 
+  "041C",    /* ED */ 
+  "041D",    /* EE */ 
+  "041E",    /* EF */ 
+  "041F",    /* F0 */ 
+  "0420",    /* F2 */ 
+  "0421",    /* F3 */ 
+  "0422",    /* F4 */ 
+  "0423",    /* F5 */ 
+  "0424",    /* E6 */ 
+  "0425",    /* E8 */ 
+  "0426",    /* E3 */ 
+  "0427",    /* FE */ 
+  "0428",    /* FB */ 
+  "0429",    /* FD */ 
+  "042A",    /* FF */ 
+  "042B",    /* F9 */ 
+  "042C",    /* F8 */ 
+  "042D",    /* FC */ 
+  "042E",    /* C0 */ 
+  "042F",    /* F1 */ 
+  "0430",    /* C1 */ 
+  "0431",    /* C2 */ 
+  "0432",    /* D7 */ 
+  "0433",    /* C7 */ 
+  "0434",    /* C4 */ 
+  "0435",    /* C5 */ 
+  "0436",    /* D6 */ 
+  "0437",    /* DA */ 
+  "0438",    /* C9 */ 
+  "0439",    /* CA */ 
+  "043A",    /* CB */ 
+  "043B",    /* CC */ 
+  "043C",    /* CD */ 
+  "043D",    /* CE */ 
+  "043E",    /* CF */ 
+  "043F",    /* D0 */ 
+  "0440",    /* D2 */ 
+  "0441",    /* D3 */ 
+  "0442",    /* D4 */ 
+  "0443",    /* D5 */ 
+  "0444",    /* C6 */ 
+  "0445",    /* C8 */ 
+  "0446",    /* C3 */ 
+  "0447",    /* DE */ 
+  "0448",    /* DB */ 
+  "0449",    /* DD */ 
+  "044A",    /* DF */ 
+  "044B",    /* D9 */ 
+  "044C",    /* D8 */ 
+  "044D",    /* DC */ 
+  "044F",    /* D1 */ 
+  "04D7",    /* B3 */ 
+}},
+{"koi8-u", 72, {
+  "0404",    /* B4 */ 
+  "0406",    /* B6 */ 
+  "0407",    /* B7 */ 
+  "0410",    /* E1 */ 
+  "0411",    /* E2 */ 
+  "0412",    /* F7 */ 
+  "0413",    /* E7 */ 
+  "0414",    /* E4 */ 
+  "0415",    /* E5 */ 
+  "0416",    /* F6 */ 
+  "0417",    /* FA */ 
+  "0418",    /* E9 */ 
+  "0419",    /* EA */ 
+  "041A",    /* EB */ 
+  "041B",    /* EC */ 
+  "041C",    /* ED */ 
+  "041D",    /* EE */ 
+  "041E",    /* EF */ 
+  "041F",    /* F0 */ 
+  "0420",    /* F2 */ 
+  "0421",    /* F3 */ 
+  "0422",    /* F4 */ 
+  "0423",    /* F5 */ 
+  "0424",    /* E6 */ 
+  "0425",    /* E8 */ 
+  "0426",    /* E3 */ 
+  "0427",    /* FE */ 
+  "0428",    /* FB */ 
+  "0429",    /* FD */ 
+  "042A",    /* FF */ 
+  "042B",    /* F9 */ 
+  "042C",    /* F8 */ 
+  "042D",    /* FC */ 
+  "042E",    /* C0 */ 
+  "042F",    /* F1 */ 
+  "0430",    /* C1 */ 
+  "0431",    /* C2 */ 
+  "0432",    /* D7 */ 
+  "0433",    /* C7 */ 
+  "0434",    /* C4 */ 
+  "0435",    /* C5 */ 
+  "0436",    /* D6 */ 
+  "0437",    /* DA */ 
+  "0438",    /* C9 */ 
+  "0439",    /* CA */ 
+  "043A",    /* CB */ 
+  "043B",    /* CC */ 
+  "043C",    /* CD */ 
+  "043D",    /* CE */ 
+  "043E",    /* CF */ 
+  "043F",    /* D0 */ 
+  "0440",    /* D2 */ 
+  "0441",    /* D3 */ 
+  "0442",    /* D4 */ 
+  "0443",    /* D5 */ 
+  "0444",    /* C6 */ 
+  "0445",    /* C8 */ 
+  "0446",    /* C3 */ 
+  "0447",    /* DE */ 
+  "0448",    /* DB */ 
+  "0449",    /* DD */ 
+  "044A",    /* DF */ 
+  "044B",    /* D9 */ 
+  "044C",    /* D8 */ 
+  "044D",    /* DC */ 
+  "044F",    /* D1 */ 
+  "0454",    /* A4 */ 
+  "0456",    /* A6 */ 
+  "0457",    /* A7 */ 
+  "0490",    /* BD */ 
+  "0491",    /* AD */ 
+  "04D7",    /* B3 */ 
+}},
+};
+
diff --git a/tp/Texinfo/XS/main/cmd_normalization.c 
b/tp/Texinfo/XS/main/cmd_normalization.c
new file mode 100644
index 0000000000..2ed2aea307
--- /dev/null
+++ b/tp/Texinfo/XS/main/cmd_normalization.c
@@ -0,0 +1,394 @@
+/* Automatically generated from setup_converters_code_tables.pl */
+
+const char *command_normalization_text[] = {
+0,
+" ",  /* \t */
+" ",  /* \n */
+" ",  /* \x20 */
+"!",  /* ! */
+0,
+"&",  /* & */
+0,
+" ",  /* * */
+0,
+"",  /* - */
+".",  /* . */
+"",  /* / */
+"",  /* : */
+0,
+"?",  /* ? */
+"@",  /* @ */
+"\xc3\x85",  /* AA */
+"\xc3\x86",  /* AE */
+"\xc3\x90",  /* DH */
+0,
+"\xc5\x81",  /* L */
+"LaTeX",  /* LaTeX */
+"\xc3\x98",  /* O */
+"\xc5\x92",  /* OE */
+"\xc3\x9e",  /* TH */
+"TeX",  /* TeX */
+0,
+"\x5c",  /* \\ */
+0,
+0,
+"\xc3\xa5",  /* aa */
+0,
+0,
+"\xc3\xa6",  /* ae */
+0,
+0,
+0,
+0,
+0,
+0,
+"&",  /* ampchar */
+0,
+0,
+0,
+0,
+0,
+0,
+"\xe2\x86\x92",  /* arrow */
+0,
+"@",  /* atchar */
+0,
+0,
+"\x5c",  /* backslashchar */
+0,
+"\xe2\x80\xa2",  /* bullet */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+",",  /* comma */
+0,
+0,
+0,
+0,
+"\xc2\xa9",  /* copyright */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"\xc3\xb0",  /* dh */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"\xe2\x80\xa6",  /* dots */
+0,
+0,
+0,
+"...",  /* enddots */
+0,
+0,
+"\xe2\x89\xa1",  /* equiv */
+"error-->",  /* error */
+0,
+"\xe2\x82\xac",  /* euro */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"\xc2\xa1",  /* exclamdown */
+0,
+"\xe2\x86\xa6",  /* expansion */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"\xe2\x89\xa5",  /* geq */
+0,
+"\xc2\xab",  /* guillemetleft */
+"\xc2\xbb",  /* guillemetright */
+"\xc2\xab",  /* guillemotleft */
+"\xc2\xbb",  /* guillemotright */
+"\xe2\x80\xb9",  /* guilsinglleft */
+"\xe2\x80\xba",  /* guilsinglright */
+"#",  /* hashchar */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"\xc5\x82",  /* l */
+0,
+"{",  /* lbracechar */
+"\xe2\x89\xa4",  /* leq */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"\xe2\x88\x92",  /* minus */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"\xc3\xb8",  /* o */
+0,
+0,
+0,
+0,
+"\xc5\x93",  /* oe */
+0,
+0,
+"\xc2\xaa",  /* ordf */
+"\xc2\xba",  /* ordm */
+0,
+0,
+0,
+0,
+0,
+0,
+"\xe2\x8b\x86",  /* point */
+"\xc2\xa3",  /* pounds */
+"\xe2\x8a\xa3",  /* print */
+0,
+0,
+"\xc2\xbf",  /* questiondown */
+0,
+"\xe2\x80\x9e",  /* quotedblbase */
+"\xe2\x80\x9c",  /* quotedblleft */
+"\xe2\x80\x9d",  /* quotedblright */
+"\xe2\x80\x98",  /* quoteleft */
+"\xe2\x80\x99",  /* quoteright */
+"\xe2\x80\x9a",  /* quotesinglbase */
+0,
+0,
+0,
+"}",  /* rbracechar */
+0,
+0,
+"\xc2\xae",  /* registeredsymbol */
+"\xe2\x87\x92",  /* result */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"\xc3\x9f",  /* ss */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"\xc2\xb0",  /* textdegree */
+"\xc3\xbe",  /* th */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+" ",  /* tie */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"{",  /* { */
+"",  /* | */
+"}",  /* } */
+0,
+};
+
diff --git a/tp/Texinfo/XS/main/cmd_structuring.c 
b/tp/Texinfo/XS/main/cmd_structuring.c
new file mode 100644
index 0000000000..f08fb02bbd
--- /dev/null
+++ b/tp/Texinfo/XS/main/cmd_structuring.c
@@ -0,0 +1,788 @@
+/* Automatically generated from setup_converters_code_tables.pl */
+
+#include "command_ids.h"
+
+int const command_structuring_level[] = {
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+1,  /* appendix */
+2,  /* appendixsec */
+2,  /* appendixsection */
+3,  /* appendixsubsec */
+4,  /* appendixsubsubsec */
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+1,  /* centerchap */
+1,  /* chapheading */
+1,  /* chapter */
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+2,  /* heading */
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+1,  /* majorheading */
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+0,  /* part */
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+2,  /* section */
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+3,  /* subheading */
+3,  /* subsection */
+4,  /* subsubheading */
+4,  /* subsubsection */
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+0,  /* top */
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+1,  /* unnumbered */
+2,  /* unnumberedsec */
+3,  /* unnumberedsubsec */
+4,  /* unnumberedsubsubsec */
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+};
+
+enum command_id const level_to_structuring_command[][5] = {
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{CM_NONE, CM_appendix, CM_appendixsec, CM_appendixsubsec, 
CM_appendixsubsubsec, },  /* appendix */
+{CM_NONE, CM_appendix, CM_appendixsec, CM_appendixsubsec, 
CM_appendixsubsubsec, },  /* appendixsec */
+{CM_NONE, CM_appendix, CM_appendixsec, CM_appendixsubsec, 
CM_appendixsubsubsec, },  /* appendixsection */
+{CM_NONE, CM_appendix, CM_appendixsec, CM_appendixsubsec, 
CM_appendixsubsubsec, },  /* appendixsubsec */
+{CM_NONE, CM_appendix, CM_appendixsec, CM_appendixsubsec, 
CM_appendixsubsubsec, },  /* appendixsubsubsec */
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{CM_top, CM_unnumbered, CM_unnumberedsec, CM_unnumberedsubsec, 
CM_unnumberedsubsubsec, },  /* centerchap */
+{CM_NONE, CM_chapheading, CM_heading, CM_subheading, CM_subsubheading, },  /* 
chapheading */
+{CM_NONE, CM_chapter, CM_section, CM_subsection, CM_subsubsection, },  /* 
chapter */
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{CM_NONE, CM_chapheading, CM_heading, CM_subheading, CM_subsubheading, },  /* 
heading */
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{CM_NONE, CM_chapheading, CM_heading, CM_subheading, CM_subsubheading, },  /* 
majorheading */
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{CM_NONE, CM_chapter, CM_section, CM_subsection, CM_subsubsection, },  /* 
section */
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{CM_NONE, CM_chapheading, CM_heading, CM_subheading, CM_subsubheading, },  /* 
subheading */
+{CM_NONE, CM_chapter, CM_section, CM_subsection, CM_subsubsection, },  /* 
subsection */
+{CM_NONE, CM_chapheading, CM_heading, CM_subheading, CM_subsubheading, },  /* 
subsubheading */
+{CM_NONE, CM_chapter, CM_section, CM_subsection, CM_subsubsection, },  /* 
subsubsection */
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{CM_top, CM_unnumbered, CM_unnumberedsec, CM_unnumberedsubsec, 
CM_unnumberedsubsubsec, },  /* top */
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{CM_top, CM_unnumbered, CM_unnumberedsec, CM_unnumberedsubsec, 
CM_unnumberedsubsubsec, },  /* unnumbered */
+{CM_top, CM_unnumbered, CM_unnumberedsec, CM_unnumberedsubsec, 
CM_unnumberedsubsubsec, },  /* unnumberedsec */
+{CM_top, CM_unnumbered, CM_unnumberedsec, CM_unnumberedsubsec, 
CM_unnumberedsubsubsec, },  /* unnumberedsubsec */
+{CM_top, CM_unnumbered, CM_unnumberedsec, CM_unnumberedsubsec, 
CM_unnumberedsubsubsec, },  /* unnumberedsubsubsec */
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+{0, 0, 0, 0, 0},
+};
+
diff --git a/tp/Texinfo/XS/main/cmd_symbol.c b/tp/Texinfo/XS/main/cmd_symbol.c
new file mode 100644
index 0000000000..0233a5fd6e
--- /dev/null
+++ b/tp/Texinfo/XS/main/cmd_symbol.c
@@ -0,0 +1,394 @@
+/* Automatically generated from setup_converters_code_tables.pl */
+
+const char *nobrace_symbol_text[] = {
+0,
+" ",   /* \t */
+" ",   /* \n */
+" ",   /* \x20 */
+"!",   /* ! */
+0,
+"&",   /* & */
+0,
+"\n",   /* * */
+0,
+"",   /* - */
+".",   /* . */
+"",   /* / */
+"",   /* : */
+0,
+"?",   /* ? */
+"@",   /* @ */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"\x5c",   /* \\ */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"{",   /* { */
+"",   /* | */
+"}",   /* } */
+0,
+};
+
diff --git a/tp/Texinfo/XS/main/cmd_text.c b/tp/Texinfo/XS/main/cmd_text.c
new file mode 100644
index 0000000000..ac62d03620
--- /dev/null
+++ b/tp/Texinfo/XS/main/cmd_text.c
@@ -0,0 +1,1184 @@
+/* Automatically generated from setup_converters_code_tables.pl */
+
+#include <config.h>
+
+#include "convert_to_text.h"
+
+const char *nobrace_symbol_text[] = {
+0,
+" ",   /* \t */
+" ",   /* \n */
+" ",   /* \x20 */
+"!",   /* ! */
+0,
+"&",   /* & */
+0,
+"\n",   /* * */
+0,
+"",   /* - */
+".",   /* . */
+"",   /* / */
+"",   /* : */
+0,
+"?",   /* ? */
+"@",   /* @ */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"\x5c",   /* \\ */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"{",   /* { */
+"",   /* | */
+"}",   /* } */
+0,
+};
+
+/* Automatically generated from setup_converters_code_tables.pl */
+
+const char *text_brace_no_arg_commands[] = {
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"AA",   /* AA */
+"AE",   /* AE */
+"D",   /* DH */
+0,
+"/L",   /* L */
+"LaTeX",   /* LaTeX */
+"/O",   /* O */
+"OE",   /* OE */
+"TH",   /* TH */
+"TeX",   /* TeX */
+0,
+0,
+0,
+0,
+"aa",   /* aa */
+0,
+0,
+"ae",   /* ae */
+0,
+0,
+0,
+0,
+0,
+0,
+"&",   /* ampchar */
+0,
+0,
+0,
+0,
+0,
+0,
+"->",   /* arrow */
+0,
+"@",   /* atchar */
+0,
+0,
+"\x5c",   /* backslashchar */
+0,
+"*",   /* bullet */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"",   /* click */
+0,
+0,
+0,
+0,
+0,
+0,
+",",   /* comma */
+0,
+0,
+0,
+0,
+"(C)",   /* copyright */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"d",   /* dh */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"...",   /* dots */
+0,
+0,
+0,
+"...",   /* enddots */
+0,
+0,
+"==",   /* equiv */
+"error-->",   /* error */
+0,
+"Euro",   /* euro */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"!",   /* exclamdown */
+0,
+"==>",   /* expansion */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+">=",   /* geq */
+0,
+"<<",   /* guillemetleft */
+">>",   /* guillemetright */
+"<<",   /* guillemotleft */
+">>",   /* guillemotright */
+"<",   /* guilsinglleft */
+">",   /* guilsinglright */
+"#",   /* hashchar */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"/l",   /* l */
+0,
+"{",   /* lbracechar */
+"<=",   /* leq */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"-",   /* minus */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"/o",   /* o */
+0,
+0,
+0,
+0,
+"oe",   /* oe */
+0,
+0,
+"a",   /* ordf */
+"o",   /* ordm */
+0,
+0,
+0,
+0,
+0,
+0,
+"-!-",   /* point */
+"#",   /* pounds */
+"-|",   /* print */
+0,
+0,
+"?",   /* questiondown */
+0,
+",,",   /* quotedblbase */
+"\x22",   /* quotedblleft */
+"\x22",   /* quotedblright */
+"`",   /* quoteleft */
+"'",   /* quoteright */
+",",   /* quotesinglbase */
+0,
+0,
+0,
+"}",   /* rbracechar */
+0,
+0,
+"(R)",   /* registeredsymbol */
+"=>",   /* result */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"ss",   /* ss */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"o",   /* textdegree */
+"th",   /* th */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+" ",   /* tie */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+};
+
+const char *sort_brace_no_arg_commands[] = {
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"L",   /* L */
+0,
+"O",   /* O */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"C",   /* copyright */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"l",   /* l */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"o",   /* o */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"R",   /* registeredsymbol */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+"t",   /* today */
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+};
+
diff --git a/tp/Texinfo/XS/main/cmd_unicode.c b/tp/Texinfo/XS/main/cmd_unicode.c
new file mode 100644
index 0000000000..16636f6809
--- /dev/null
+++ b/tp/Texinfo/XS/main/cmd_unicode.c
@@ -0,0 +1,788 @@
+/* Automatically generated from setup_converters_code_tables.pl */
+
+#include "unicode.h"
+
+const DIACRITIC_UNICODE unicode_diacritics[] = {
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{"\xcc\x88", "776", "0308"},  /* \" */
+{0, 0, 0},
+{"\xcc\x81", "769", "0301"},  /* ' */
+{0, 0, 0},
+{"\xcc\xa7", "807", "0327"},  /* , */
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{"\xcc\x84", "772", "0304"},  /* = */
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{"\xcc\x8b", "779", "030B"},  /* H */
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{"\xcc\x82", "770", "0302"},  /* ^ */
+{"\xcc\x80", "768", "0300"},  /* ` */
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{"\xcc\x87", "775", "0307"},  /* dotaccent */
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{"\xcc\xa8", "808", "0328"},  /* ogonek */
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{"\xcc\x8a", "778", "030A"},  /* ringaccent */
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{"\xcd\xa1", "865", "0361"},  /* tieaccent */
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{"\xcc\x86", "774", "0306"},  /* u */
+{"\xcc\xb2", "818", "0332"},  /* ubaraccent */
+{"\xcc\xa3", "803", "0323"},  /* udotaccent */
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{"\xcc\x8c", "780", "030C"},  /* v */
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{0, 0, 0},
+{"\xcc\x83", "771", "0303"},  /* ~ */
+};
+
+const COMMAND_UNICODE unicode_character_brace_no_arg_commands[] = {
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"00C5", "\xc3\x85", "\\00C5 ", 0},   /* AA */
+{"00C6", "\xc3\x86", "\\00C6 ", 0},   /* AE */
+{"00D0", "\xc3\x90", "\\00D0 ", 0},   /* DH */
+{0, 0, 0, -1},
+{"0141", "\xc5\x81", "\\0141 ", 0},   /* L */
+{0, 0, 0, -1},
+{"00D8", "\xc3\x98", "\\00D8 ", 0},   /* O */
+{"0152", "\xc5\x92", "\\0152 ", 0},   /* OE */
+{"00DE", "\xc3\x9e", "\\00DE ", 0},   /* TH */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"00E5", "\xc3\xa5", "\\00E5 ", 0},   /* aa */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"00E6", "\xc3\xa6", "\\00E6 ", 0},   /* ae */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"0026", "&", "\\0026 ", 0},   /* ampchar */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"2192", "\xe2\x86\x92", "\\2192 ", 1},   /* arrow */
+{0, 0, 0, -1},
+{"0040", "@", "\\0040 ", 0},   /* atchar */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"005C", "\x5c", "\\005C ", 0},   /* backslashchar */
+{0, 0, 0, -1},
+{"2022", "\xe2\x80\xa2", "\\2022 ", 1},   /* bullet */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"2192", "\xe2\x86\x92", "\\2192 ", 1},   /* click */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"002C", ",", "\\002C ", 0},   /* comma */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"00A9", "\xc2\xa9", "\\00A9 ", 1},   /* copyright */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"00F0", "\xc3\xb0", "\\00F0 ", 0},   /* dh */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"2026", "\xe2\x80\xa6", "\\2026 ", 1},   /* dots */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"2261", "\xe2\x89\xa1", "\\2261 ", 1},   /* equiv */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"20AC", "\xe2\x82\xac", "\\20AC ", 0},   /* euro */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"00A1", "\xc2\xa1", "\\00A1 ", 0},   /* exclamdown */
+{0, 0, 0, -1},
+{"21A6", "\xe2\x86\xa6", "\\21A6 ", 1},   /* expansion */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"2265", "\xe2\x89\xa5", "\\2265 ", 0},   /* geq */
+{0, 0, 0, -1},
+{"00AB", "\xc2\xab", "\\00AB ", 0},   /* guillemetleft */
+{"00BB", "\xc2\xbb", "\\00BB ", 0},   /* guillemetright */
+{"00AB", "\xc2\xab", "\\00AB ", 0},   /* guillemotleft */
+{"00BB", "\xc2\xbb", "\\00BB ", 0},   /* guillemotright */
+{"2039", "\xe2\x80\xb9", "\\2039 ", 0},   /* guilsinglleft */
+{"203A", "\xe2\x80\xba", "\\203A ", 0},   /* guilsinglright */
+{"0023", "#", "\\0023 ", 0},   /* hashchar */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"0142", "\xc5\x82", "\\0142 ", 0},   /* l */
+{0, 0, 0, -1},
+{"007B", "{", "\\007B ", 0},   /* lbracechar */
+{"2264", "\xe2\x89\xa4", "\\2264 ", 0},   /* leq */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"2212", "\xe2\x88\x92", "\\2212 ", 1},   /* minus */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"00F8", "\xc3\xb8", "\\00F8 ", 0},   /* o */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"0153", "\xc5\x93", "\\0153 ", 0},   /* oe */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"00AA", "\xc2\xaa", "\\00AA ", 0},   /* ordf */
+{"00BA", "\xc2\xba", "\\00BA ", 0},   /* ordm */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"22C6", "\xe2\x8b\x86", "\\22C6 ", 1},   /* point */
+{"00A3", "\xc2\xa3", "\\00A3 ", 0},   /* pounds */
+{"22A3", "\xe2\x8a\xa3", "\\22A3 ", 1},   /* print */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"00BF", "\xc2\xbf", "\\00BF ", 0},   /* questiondown */
+{0, 0, 0, -1},
+{"201E", "\xe2\x80\x9e", "\\201E ", 0},   /* quotedblbase */
+{"201C", "\xe2\x80\x9c", "\\201C ", 1},   /* quotedblleft */
+{"201D", "\xe2\x80\x9d", "\\201D ", 1},   /* quotedblright */
+{"2018", "\xe2\x80\x98", "\\2018 ", 1},   /* quoteleft */
+{"2019", "\xe2\x80\x99", "\\2019 ", 1},   /* quoteright */
+{"201A", "\xe2\x80\x9a", "\\201A ", 0},   /* quotesinglbase */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"007D", "}", "\\007D ", 0},   /* rbracechar */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"00AE", "\xc2\xae", "\\00AE ", 1},   /* registeredsymbol */
+{"21D2", "\xe2\x87\x92", "\\21D2 ", 1},   /* result */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"00DF", "\xc3\x9f", "\\00DF ", 0},   /* ss */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{"00B0", "\xc2\xb0", "\\00B0 ", 0},   /* textdegree */
+{"00FE", "\xc3\xbe", "\\00FE ", 0},   /* th */
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+{0, 0, 0, -1},
+};
+
diff --git a/tp/Texinfo/XS/main/command_data.c 
b/tp/Texinfo/XS/main/command_data.c
new file mode 100644
index 0000000000..7e2b2647db
--- /dev/null
+++ b/tp/Texinfo/XS/main/command_data.c
@@ -0,0 +1,395 @@
+/* This file automatically generated by command_data.awk */
+
+#include "builtin_commands.h"
+
+COMMAND builtin_command_data[] = {
+0, 0, 0, 0, 0,
+"\t", CF_nobrace, CF_formatted_nobrace, NOBRACE_symbol, 0,
+"\n", CF_nobrace, CF_formatted_nobrace, NOBRACE_symbol, 0,
+"\x20", CF_nobrace, CF_formatted_nobrace, NOBRACE_symbol, 0,
+"!", CF_nobrace, CF_formatted_nobrace, NOBRACE_symbol, 0,
+"\"", CF_brace | CF_accent | CF_contain_plain_text, 0, BRACE_accent, 1,
+"&", CF_nobrace, CF_formatted_nobrace, NOBRACE_symbol, 0,
+"'", CF_brace | CF_accent | CF_contain_plain_text, 0, BRACE_accent, 1,
+"*", CF_nobrace | CF_preamble | CF_no_paragraph, CF_formatted_nobrace, 
NOBRACE_symbol, 0,
+",", CF_brace | CF_accent | CF_contain_plain_text, 0, BRACE_accent, 1,
+"-", CF_nobrace, CF_formatted_nobrace, NOBRACE_symbol, 0,
+".", CF_nobrace, CF_formatted_nobrace, NOBRACE_symbol, 0,
+"/", CF_nobrace, CF_formatted_nobrace, NOBRACE_symbol, 0,
+":", CF_nobrace, CF_formatted_nobrace, NOBRACE_symbol, 0,
+"=", CF_brace | CF_accent | CF_contain_plain_text, 0, BRACE_accent, 1,
+"?", CF_nobrace, CF_formatted_nobrace, NOBRACE_symbol, 0,
+"@", CF_nobrace, CF_formatted_nobrace, NOBRACE_symbol, 0,
+"AA", CF_brace, CF_letter_no_arg, BRACE_noarg, 0,
+"AE", CF_brace, CF_letter_no_arg, BRACE_noarg, 0,
+"DH", CF_brace, CF_letter_no_arg, BRACE_noarg, 0,
+"H", CF_brace | CF_accent | CF_contain_plain_text, 0, BRACE_accent, 1,
+"L", CF_brace, CF_letter_no_arg, BRACE_noarg, 0,
+"LaTeX", CF_brace, 0, BRACE_noarg, 0,
+"O", CF_brace, CF_letter_no_arg, BRACE_noarg, 0,
+"OE", CF_brace, CF_letter_no_arg, BRACE_noarg, 0,
+"TH", CF_brace, CF_letter_no_arg, BRACE_noarg, 0,
+"TeX", CF_brace, 0, BRACE_noarg, 0,
+"U", CF_brace, 0, BRACE_arguments, 1,
+"\\", CF_nobrace, CF_formatted_nobrace, NOBRACE_symbol, 0,
+"^", CF_brace | CF_accent | CF_contain_plain_text, 0, BRACE_accent, 1,
+"`", CF_brace | CF_accent | CF_contain_plain_text, 0, BRACE_accent, 1,
+"aa", CF_brace, CF_letter_no_arg, BRACE_noarg, 0,
+"abbr", CF_brace | CF_contain_basic_inline, CF_explained, BRACE_arguments, 2,
+"acronym", CF_brace | CF_contain_basic_inline, CF_explained, BRACE_arguments, 
2,
+"ae", CF_brace, CF_letter_no_arg, BRACE_noarg, 0,
+"afivepaper", CF_line | CF_no_paragraph | CF_global_unique | CF_preamble, 0, 
LINE_lineraw, 0,
+"afourlatex", CF_line | CF_no_paragraph | CF_global_unique | CF_preamble, 0, 
LINE_lineraw, 0,
+"afourpaper", CF_line | CF_no_paragraph | CF_global_unique | CF_preamble, 0, 
LINE_lineraw, 0,
+"afourwide", CF_line | CF_no_paragraph | CF_global_unique | CF_preamble, 0, 
LINE_lineraw, 0,
+"alias", CF_line | CF_no_paragraph | CF_preamble | CF_contain_plain_text, 0, 
LINE_specific, 2,
+"allowcodebreaks", CF_line | CF_no_paragraph | CF_global | CF_preamble | 
CF_contain_plain_text, 0, LINE_specific, 1,
+"ampchar", CF_brace, 0, BRACE_noarg, 0,
+"anchor", CF_brace | CF_contain_basic_inline | CF_no_paragraph, 
CF_non_formatted_brace, BRACE_arguments, 1,
+"appendix", CF_line | CF_no_paragraph | CF_root | CF_contain_basic_inline | 
CF_sectioning_heading, CF_formatted_line | CF_appendix, LINE_line, 1,
+"appendixsec", CF_line | CF_no_paragraph | CF_root | CF_contain_basic_inline | 
CF_sectioning_heading, CF_formatted_line | CF_appendix, LINE_line, 1,
+"appendixsection", CF_line | CF_no_paragraph | CF_root | 
CF_contain_basic_inline | CF_sectioning_heading, CF_formatted_line | 
CF_appendix, LINE_line, 1,
+"appendixsubsec", CF_line | CF_no_paragraph | CF_root | 
CF_contain_basic_inline | CF_sectioning_heading, CF_formatted_line | 
CF_appendix, LINE_line, 1,
+"appendixsubsubsec", CF_line | CF_no_paragraph | CF_root | 
CF_contain_basic_inline | CF_sectioning_heading, CF_formatted_line | 
CF_appendix, LINE_line, 1,
+"arrow", CF_brace, 0, BRACE_noarg, 0,
+"asis", CF_brace, 0, BRACE_style_other, 1,
+"atchar", CF_brace, 0, BRACE_noarg, 0,
+"author", CF_line | CF_no_paragraph | CF_global | CF_contain_basic_inline, 
CF_formatted_line, LINE_line, 1,
+"b", CF_brace, 0, BRACE_style_other, 1,
+"backslashchar", CF_brace, 0, BRACE_noarg, 0,
+"bsixpaper", CF_line | CF_no_paragraph | CF_global_unique | CF_preamble, 0, 
LINE_lineraw, 0,
+"bullet", CF_brace, 0, BRACE_noarg, 0,
+"bye", CF_line | CF_no_paragraph | CF_preamble, 0, LINE_lineraw, 0,
+"c", CF_line | CF_no_paragraph | CF_preamble, 0, LINE_lineraw, 1,
+"caption", CF_brace | CF_close_paragraph | CF_no_paragraph, 
CF_non_formatted_brace, BRACE_context, 1,
+"cartouche", CF_block | CF_no_paragraph | CF_close_paragraph, 0, BLOCK_other, 
1,
+"center", CF_line | CF_no_paragraph | CF_close_paragraph, CF_formatted_line, 
LINE_line, 1,
+"centerchap", CF_line | CF_no_paragraph | CF_root | CF_contain_basic_inline | 
CF_sectioning_heading | CF_deprecated, CF_formatted_line | CF_unnumbered, 
LINE_line, 1,
+"chapheading", CF_line | CF_no_paragraph | CF_contain_basic_inline | 
CF_sectioning_heading | CF_close_paragraph | CF_global, CF_formatted_line, 
LINE_line, 1,
+"chapter", CF_line | CF_no_paragraph | CF_root | CF_contain_basic_inline | 
CF_sectioning_heading, CF_formatted_line, LINE_line, 1,
+"cindex", CF_line | CF_no_paragraph | CF_index_entry_command | 
CF_contain_basic_inline, 0, LINE_line, 1,
+"cite", CF_brace, 0, BRACE_style_other, 1,
+"clear", CF_line | CF_no_paragraph | CF_preamble, 0, LINE_lineraw, 1,
+"click", CF_brace, 0, BRACE_noarg, 0,
+"clicksequence", CF_brace, 0, BRACE_style_other, 1,
+"clickstyle", CF_line | CF_no_paragraph | CF_global | CF_preamble, 0, 
LINE_lineraw, 1,
+"code", CF_brace, CF_brace_code, BRACE_style_code, 1,
+"codequotebacktick", CF_line | CF_no_paragraph | CF_global | CF_preamble | 
CF_contain_plain_text, 0, LINE_specific, 1,
+"codequoteundirected", CF_line | CF_no_paragraph | CF_global | CF_preamble | 
CF_contain_plain_text, 0, LINE_specific, 1,
+"columnfractions", CF_line | CF_no_paragraph | CF_preamble | 
CF_contain_plain_text, 0, LINE_specific, 1,
+"comma", CF_brace, 0, BRACE_noarg, 0,
+"command", CF_brace, CF_brace_code, BRACE_style_code, 1,
+"comment", CF_line | CF_no_paragraph | CF_preamble, 0, LINE_lineraw, 1,
+"contents", CF_line | CF_no_paragraph | CF_close_paragraph | CF_global | 
CF_preamble, 0, LINE_lineraw, 0,
+"copying", CF_block | CF_no_paragraph | CF_close_paragraph | CF_global_unique 
| CF_preamble, 0, BLOCK_region, 0,
+"copyright", CF_brace, 0, BRACE_noarg, 0,
+"cpindex", CF_line | CF_no_paragraph | CF_index_entry_command | 
CF_contain_basic_inline, 0, LINE_line, 1,
+"defblock", CF_block | CF_no_paragraph | CF_close_paragraph, 0, BLOCK_def, 0,
+"defcodeindex", CF_line | CF_no_paragraph | CF_preamble | 
CF_contain_plain_text, 0, LINE_specific, 1,
+"defcv", CF_block | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_close_paragraph, 0, BLOCK_def, 0,
+"defcvx", CF_line | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_close_paragraph, 0, LINE_line, 1,
+"deffn", CF_block | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_close_paragraph, 0, BLOCK_def, 0,
+"deffnx", CF_line | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_close_paragraph, 0, LINE_line, 1,
+"defindex", CF_line | CF_no_paragraph | CF_preamble | CF_contain_plain_text, 
0, LINE_specific, 1,
+"definfoenclose", CF_line | CF_no_paragraph | CF_preamble | 
CF_contain_plain_text | CF_deprecated, 0, LINE_specific, 3,
+"definfoenclose_command", CF_internal | CF_brace, 0, BRACE_style_other, 1,
+"defivar", CF_block | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_def_alias | CF_close_paragraph, 0, BLOCK_def, 0,
+"defivarx", CF_line | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_def_alias | CF_close_paragraph, 0, LINE_line, 1,
+"defline", CF_line | CF_no_paragraph | CF_def | CF_close_paragraph, 0, 
LINE_line, 1,
+"defmac", CF_block | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_def_alias | CF_close_paragraph, 0, BLOCK_def, 0,
+"defmacx", CF_line | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_def_alias | CF_close_paragraph, 0, LINE_line, 1,
+"defmethod", CF_block | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_def_alias | CF_close_paragraph, 0, BLOCK_def, 0,
+"defmethodx", CF_line | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_def_alias | CF_close_paragraph, 0, LINE_line, 1,
+"defop", CF_block | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_close_paragraph, 0, BLOCK_def, 0,
+"defopt", CF_block | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_def_alias | CF_close_paragraph, 0, BLOCK_def, 0,
+"defoptx", CF_line | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_def_alias | CF_close_paragraph, 0, LINE_line, 1,
+"defopx", CF_line | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_close_paragraph, 0, LINE_line, 1,
+"defspec", CF_block | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_def_alias | CF_close_paragraph, 0, BLOCK_def, 0,
+"defspecx", CF_line | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_def_alias | CF_close_paragraph, 0, LINE_line, 1,
+"deftp", CF_block | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_close_paragraph, 0, BLOCK_def, 0,
+"deftpx", CF_line | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_close_paragraph, 0, LINE_line, 1,
+"deftypecv", CF_block | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_close_paragraph, 0, BLOCK_def, 0,
+"deftypecvx", CF_line | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_close_paragraph, 0, LINE_line, 1,
+"deftypefn", CF_block | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_close_paragraph, 0, BLOCK_def, 0,
+"deftypefnnewline", CF_line | CF_no_paragraph | CF_global | CF_preamble | 
CF_contain_plain_text, 0, LINE_specific, 1,
+"deftypefnx", CF_line | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_close_paragraph, 0, LINE_line, 1,
+"deftypefun", CF_block | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_def_alias | CF_close_paragraph, 0, BLOCK_def, 0,
+"deftypefunx", CF_line | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_def_alias | CF_close_paragraph, 0, LINE_line, 1,
+"deftypeivar", CF_block | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_def_alias | CF_close_paragraph, 0, BLOCK_def, 0,
+"deftypeivarx", CF_line | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_def_alias | CF_close_paragraph, 0, LINE_line, 1,
+"deftypeline", CF_line | CF_no_paragraph | CF_def | CF_close_paragraph, 0, 
LINE_line, 1,
+"deftypemethod", CF_block | CF_no_paragraph | CF_def | CF_contain_basic_inline 
| CF_def_alias | CF_close_paragraph, 0, BLOCK_def, 0,
+"deftypemethodx", CF_line | CF_no_paragraph | CF_def | CF_contain_basic_inline 
| CF_def_alias | CF_close_paragraph, 0, LINE_line, 1,
+"deftypeop", CF_block | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_close_paragraph, 0, BLOCK_def, 0,
+"deftypeopx", CF_line | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_close_paragraph, 0, LINE_line, 1,
+"deftypevar", CF_block | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_def_alias | CF_close_paragraph, 0, BLOCK_def, 0,
+"deftypevarx", CF_line | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_def_alias | CF_close_paragraph, 0, LINE_line, 1,
+"deftypevr", CF_block | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_close_paragraph, 0, BLOCK_def, 0,
+"deftypevrx", CF_line | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_close_paragraph, 0, LINE_line, 1,
+"defun", CF_block | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_def_alias | CF_close_paragraph, 0, BLOCK_def, 0,
+"defunx", CF_line | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_def_alias | CF_close_paragraph, 0, LINE_line, 1,
+"defvar", CF_block | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_def_alias | CF_close_paragraph, 0, BLOCK_def, 0,
+"defvarx", CF_line | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_def_alias | CF_close_paragraph, 0, LINE_line, 1,
+"defvr", CF_block | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_close_paragraph, 0, BLOCK_def, 0,
+"defvrx", CF_line | CF_no_paragraph | CF_def | CF_contain_basic_inline | 
CF_close_paragraph, 0, LINE_line, 1,
+"detailmenu", CF_block | CF_no_paragraph | CF_close_paragraph | CF_global, 0, 
BLOCK_menu, 0,
+"dfn", CF_brace, 0, BRACE_style_other, 1,
+"dh", CF_brace, CF_letter_no_arg, BRACE_noarg, 0,
+"dircategory", CF_line | CF_no_paragraph | CF_close_paragraph | CF_preamble | 
CF_contain_basic_inline, 0, LINE_line, 1,
+"direntry", CF_block | CF_no_paragraph | CF_close_paragraph | CF_preamble, 0, 
BLOCK_menu, 0,
+"display", CF_block | CF_no_paragraph | CF_close_paragraph | CF_preformatted, 
0, BLOCK_preformatted, 0,
+"displaymath", CF_block | CF_no_paragraph | CF_close_paragraph | CF_math, 0, 
BLOCK_math, 0,
+"dmn", CF_brace | CF_contain_plain_text, 0, BRACE_other, 1,
+"docbook", CF_block | CF_no_paragraph | CF_preamble, 0, BLOCK_format_raw, 0,
+"documentdescription", CF_block | CF_no_paragraph | CF_close_paragraph | 
CF_global_unique | CF_preamble, 0, BLOCK_region, 0,
+"documentencoding", CF_line | CF_no_paragraph | CF_global | CF_preamble | 
CF_contain_plain_text, 0, LINE_text, 1,
+"documentlanguage", CF_line | CF_no_paragraph | CF_global | CF_preamble | 
CF_contain_plain_text, 0, LINE_text, 1,
+"dotaccent", CF_brace | CF_accent | CF_contain_plain_text, 0, BRACE_accent, 1,
+"dotless", CF_brace | CF_accent | CF_contain_plain_text, 0, BRACE_accent, 1,
+"dots", CF_brace, 0, BRACE_noarg, 0,
+"email", CF_brace | CF_contain_basic_inline, 0, BRACE_arguments, 2,
+"emph", CF_brace, 0, BRACE_style_other, 1,
+"end", CF_line | CF_no_paragraph | CF_preamble | CF_contain_plain_text, 0, 
LINE_text, 1,
+"enddots", CF_brace, 0, BRACE_noarg, 0,
+"enumerate", CF_block | CF_no_paragraph | CF_close_paragraph | CF_blockitem | 
CF_contain_basic_inline, 0, BLOCK_item_container, 1,
+"env", CF_brace, CF_brace_code, BRACE_style_code, 1,
+"equiv", CF_brace, 0, BRACE_noarg, 0,
+"error", CF_brace, 0, BRACE_noarg, 0,
+"errormsg", CF_brace | CF_preamble | CF_contain_basic_inline | 
CF_no_paragraph, CF_non_formatted_brace, BRACE_arguments, 1,
+"euro", CF_brace, 0, BRACE_noarg, 0,
+"evenfooting", CF_line | CF_no_paragraph | CF_global_unique | CF_heading_spec 
| CF_preamble | CF_contain_basic_inline, 0, LINE_line, 1,
+"evenfootingmarks", CF_line | CF_no_paragraph | CF_global_unique | CF_preamble 
| CF_contain_plain_text, 0, LINE_specific, 1,
+"evenheading", CF_line | CF_no_paragraph | CF_global_unique | CF_heading_spec 
| CF_preamble | CF_contain_basic_inline, 0, LINE_line, 1,
+"evenheadingmarks", CF_line | CF_no_paragraph | CF_global_unique | CF_preamble 
| CF_contain_plain_text, 0, LINE_specific, 1,
+"everyfooting", CF_line | CF_no_paragraph | CF_global_unique | CF_heading_spec 
| CF_preamble | CF_contain_basic_inline, 0, LINE_line, 1,
+"everyfootingmarks", CF_line | CF_no_paragraph | CF_global_unique | 
CF_preamble | CF_contain_plain_text, 0, LINE_specific, 1,
+"everyheading", CF_line | CF_no_paragraph | CF_global_unique | CF_heading_spec 
| CF_preamble | CF_contain_basic_inline, 0, LINE_line, 1,
+"everyheadingmarks", CF_line | CF_no_paragraph | CF_global_unique | 
CF_preamble | CF_contain_plain_text, 0, LINE_specific, 1,
+"example", CF_block | CF_no_paragraph | CF_close_paragraph | CF_preformatted | 
CF_preformatted_code | CF_variadic | CF_contain_basic_inline, 0, 
BLOCK_preformatted, 0,
+"exampleindent", CF_line | CF_no_paragraph | CF_global | CF_preamble | 
CF_contain_plain_text, 0, LINE_specific, 1,
+"exclamdown", CF_brace, 0, BRACE_noarg, 0,
+"exdent", CF_line | CF_no_paragraph | CF_close_paragraph, CF_formatted_line, 
LINE_line, 1,
+"expansion", CF_brace, 0, BRACE_noarg, 0,
+"file", CF_brace, CF_brace_code, BRACE_style_code, 1,
+"finalout", CF_line | CF_no_paragraph | CF_preamble, 0, LINE_lineraw, 0,
+"findex", CF_line | CF_no_paragraph | CF_index_entry_command | 
CF_contain_basic_inline, 0, LINE_line, 1,
+"firstparagraphindent", CF_line | CF_no_paragraph | CF_global | CF_preamble | 
CF_contain_plain_text, 0, LINE_specific, 1,
+"float", CF_block | CF_no_paragraph | CF_close_paragraph | CF_global | 
CF_contain_basic_inline, 0, BLOCK_float, 2,
+"flushleft", CF_block | CF_no_paragraph | CF_close_paragraph, 0, 0, 0,
+"flushright", CF_block | CF_no_paragraph | CF_close_paragraph, 0, 0, 0,
+"fnindex", CF_line | CF_no_paragraph | CF_index_entry_command | 
CF_contain_basic_inline, 0, LINE_line, 1,
+"fonttextsize", CF_line | CF_no_paragraph | CF_global_unique | CF_preamble | 
CF_contain_plain_text, 0, LINE_specific, 1,
+"footnote", CF_brace | CF_global, 0, BRACE_context, 1,
+"footnotestyle", CF_line | CF_no_paragraph | CF_global_unique | CF_preamble | 
CF_contain_plain_text, 0, LINE_specific, 1,
+"format", CF_block | CF_no_paragraph | CF_close_paragraph | CF_preformatted, 
0, BLOCK_preformatted, 0,
+"frenchspacing", CF_line | CF_no_paragraph | CF_global | CF_preamble | 
CF_contain_plain_text, 0, LINE_specific, 1,
+"ftable", CF_block | CF_no_paragraph | CF_close_paragraph | CF_blockitem | 
CF_contain_basic_inline, 0, BLOCK_item_line, 1,
+"geq", CF_brace, 0, BRACE_noarg, 0,
+"group", CF_block | CF_no_paragraph | CF_close_paragraph, 0, 0, 0,
+"guillemetleft", CF_brace, 0, BRACE_noarg, 0,
+"guillemetright", CF_brace, 0, BRACE_noarg, 0,
+"guillemotleft", CF_brace, 0, BRACE_noarg, 0,
+"guillemotright", CF_brace, 0, BRACE_noarg, 0,
+"guilsinglleft", CF_brace, 0, BRACE_noarg, 0,
+"guilsinglright", CF_brace, 0, BRACE_noarg, 0,
+"hashchar", CF_brace, 0, BRACE_noarg, 0,
+"heading", CF_line | CF_no_paragraph | CF_contain_basic_inline | 
CF_sectioning_heading | CF_close_paragraph | CF_global, CF_formatted_line, 
LINE_line, 1,
+"headings", CF_line | CF_no_paragraph | CF_global | CF_preamble | 
CF_contain_plain_text, 0, LINE_specific, 1,
+"headitem", CF_nobrace | CF_close_paragraph | CF_no_paragraph, 
CF_formatted_nobrace, NOBRACE_skipspace, 0,
+"headitemfont", CF_brace, 0, BRACE_style_other, 1,
+"html", CF_block | CF_no_paragraph | CF_preamble, 0, BLOCK_format_raw, 0,
+"hyphenation", CF_brace | CF_global | CF_preamble | CF_contain_plain_text | 
CF_no_paragraph, CF_non_formatted_brace, BRACE_arguments, 1,
+"i", CF_brace, 0, BRACE_style_other, 1,
+"ifclear", CF_block | CF_no_paragraph, 0, BLOCK_conditional, 1,
+"ifcommanddefined", CF_block | CF_no_paragraph, 0, BLOCK_conditional, 1,
+"ifcommandnotdefined", CF_block | CF_no_paragraph, 0, BLOCK_conditional, 1,
+"ifdocbook", CF_block | CF_no_paragraph, 0, BLOCK_conditional, 0,
+"ifhtml", CF_block | CF_no_paragraph, 0, BLOCK_conditional, 0,
+"ifinfo", CF_block | CF_no_paragraph, 0, BLOCK_conditional, 0,
+"iflatex", CF_block | CF_no_paragraph, 0, BLOCK_conditional, 0,
+"ifnotdocbook", CF_block | CF_no_paragraph, 0, BLOCK_conditional, 0,
+"ifnothtml", CF_block | CF_no_paragraph, 0, BLOCK_conditional, 0,
+"ifnotinfo", CF_block | CF_no_paragraph, 0, BLOCK_conditional, 0,
+"ifnotlatex", CF_block | CF_no_paragraph, 0, BLOCK_conditional, 0,
+"ifnotplaintext", CF_block | CF_no_paragraph, 0, BLOCK_conditional, 0,
+"ifnottex", CF_block | CF_no_paragraph, 0, BLOCK_conditional, 0,
+"ifnotxml", CF_block | CF_no_paragraph, 0, BLOCK_conditional, 0,
+"ifplaintext", CF_block | CF_no_paragraph, 0, BLOCK_conditional, 0,
+"ifset", CF_block | CF_no_paragraph, 0, BLOCK_conditional, 1,
+"iftex", CF_block | CF_no_paragraph, 0, BLOCK_conditional, 0,
+"ifxml", CF_block | CF_no_paragraph, 0, BLOCK_conditional, 0,
+"ignore", CF_block | CF_no_paragraph | CF_preamble, CF_non_formatted_block, 
BLOCK_raw, 0,
+"image", CF_brace | CF_contain_basic_inline | CF_no_paragraph, 0, 
BRACE_arguments, 5,
+"include", CF_line | CF_no_paragraph | CF_preamble | CF_contain_plain_text, 0, 
LINE_text, 1,
+"indent", CF_nobrace | CF_preamble | CF_no_paragraph, 0, NOBRACE_skipspace, 0,
+"indentedblock", CF_block | CF_no_paragraph | CF_close_paragraph, 0, 0, 0,
+"index_entry_command", CF_internal | CF_line | CF_index_entry_command | 
CF_contain_basic_inline | CF_no_paragraph, 0, LINE_line, 1,
+"indicateurl", CF_brace, CF_brace_code, BRACE_style_code, 1,
+"inforef", CF_brace | CF_ref | CF_contain_basic_inline | CF_deprecated, 0, 
BRACE_arguments, 3,
+"inlinefmt", CF_brace | CF_preamble, CF_inline_format, BRACE_inline, 2,
+"inlinefmtifelse", CF_brace | CF_preamble, CF_inline_format, BRACE_inline, 3,
+"inlineifclear", CF_brace | CF_preamble, CF_inline_conditional, BRACE_inline, 
2,
+"inlineifset", CF_brace | CF_preamble, CF_inline_conditional, BRACE_inline, 2,
+"inlineraw", CF_brace | CF_preamble, CF_inline_format, BRACE_inline, 2,
+"insertcopying", CF_line | CF_no_paragraph | CF_close_paragraph | CF_global, 
CF_formattable_line, LINE_lineraw, 0,
+"item", CF_nobrace | CF_close_paragraph | CF_no_paragraph, 
CF_formatted_nobrace, NOBRACE_skipspace, 0,
+"item_LINE", CF_line | CF_no_paragraph | CF_close_paragraph, 
CF_formatted_line, LINE_line, 1,
+"itemize", CF_block | CF_no_paragraph | CF_close_paragraph | CF_blockitem | 
CF_contain_basic_inline, 0, BLOCK_item_container, 1,
+"itemx", CF_line | CF_no_paragraph | CF_close_paragraph, CF_formatted_line, 
LINE_line, 1,
+"kbd", CF_brace, CF_brace_code, BRACE_style_code, 1,
+"kbdinputstyle", CF_line | CF_no_paragraph | CF_global | CF_preamble | 
CF_contain_plain_text, 0, LINE_specific, 1,
+"key", CF_brace | CF_contain_plain_text, CF_brace_code, BRACE_style_code, 1,
+"kindex", CF_line | CF_no_paragraph | CF_index_entry_command | 
CF_contain_basic_inline, 0, LINE_line, 1,
+"kyindex", CF_line | CF_no_paragraph | CF_index_entry_command | 
CF_contain_basic_inline, 0, LINE_line, 1,
+"l", CF_brace, CF_letter_no_arg, BRACE_noarg, 0,
+"latex", CF_block | CF_no_paragraph | CF_preamble, 0, BLOCK_format_raw, 0,
+"lbracechar", CF_brace, 0, BRACE_noarg, 0,
+"leq", CF_brace, 0, BRACE_noarg, 0,
+"linemacro", CF_block | CF_no_paragraph | CF_preamble, CF_non_formatted_block, 
BLOCK_raw, 0,
+"link", CF_brace | CF_ref | CF_contain_basic_inline, 0, BRACE_arguments, 3,
+"lisp", CF_block | CF_no_paragraph | CF_close_paragraph | CF_preformatted | 
CF_preformatted_code, 0, BLOCK_preformatted, 0,
+"listoffloats", CF_line | CF_no_paragraph | CF_close_paragraph | CF_global | 
CF_contain_basic_inline, CF_formattable_line, LINE_line, 1,
+"lowersections", CF_line | CF_no_paragraph | CF_preamble, 0, LINE_lineraw, 0,
+"macro", CF_block | CF_no_paragraph | CF_preamble, CF_non_formatted_block, 
BLOCK_raw, 0,
+"majorheading", CF_line | CF_no_paragraph | CF_contain_basic_inline | 
CF_sectioning_heading | CF_close_paragraph | CF_global, CF_formatted_line, 
LINE_line, 1,
+"math", CF_brace | CF_math | CF_contain_basic_inline, 0, BRACE_context, 1,
+"menu", CF_block | CF_no_paragraph | CF_close_paragraph, 0, BLOCK_menu, 0,
+"microtype", CF_line | CF_no_paragraph | CF_global | CF_preamble | 
CF_contain_plain_text, 0, LINE_specific, 1,
+"minus", CF_brace, 0, BRACE_noarg, 0,
+"multitable", CF_block | CF_no_paragraph | CF_close_paragraph | CF_blockitem | 
CF_contain_basic_inline, 0, BLOCK_multitable, 0,
+"need", CF_line | CF_no_paragraph | CF_close_paragraph | 
CF_contain_plain_text, CF_formattable_line, LINE_specific, 1,
+"node", CF_line | CF_no_paragraph | CF_root | CF_contain_basic_inline, 
CF_formatted_line, LINE_line, 4,
+"nodedescription", CF_line | CF_no_paragraph | CF_close_paragraph | 
CF_contain_basic_inline, 0, LINE_line, 1,
+"nodedescriptionblock", CF_block | CF_no_paragraph | CF_close_paragraph, 
CF_non_formatted_block, 0, 0,
+"noindent", CF_nobrace | CF_preamble | CF_no_paragraph, 0, NOBRACE_skipspace, 
0,
+"novalidate", CF_line | CF_no_paragraph | CF_global_unique | CF_preamble, 0, 
LINE_lineraw, 0,
+"o", CF_brace, CF_letter_no_arg, BRACE_noarg, 0,
+"oddfooting", CF_line | CF_no_paragraph | CF_global_unique | CF_heading_spec | 
CF_preamble | CF_contain_basic_inline, 0, LINE_line, 1,
+"oddfootingmarks", CF_line | CF_no_paragraph | CF_global_unique | CF_preamble 
| CF_contain_plain_text, 0, LINE_specific, 1,
+"oddheading", CF_line | CF_no_paragraph | CF_global_unique | CF_heading_spec | 
CF_preamble | CF_contain_basic_inline, 0, LINE_line, 1,
+"oddheadingmarks", CF_line | CF_no_paragraph | CF_global_unique | CF_preamble 
| CF_contain_plain_text, 0, LINE_specific, 1,
+"oe", CF_brace, CF_letter_no_arg, BRACE_noarg, 0,
+"ogonek", CF_brace | CF_accent | CF_contain_plain_text, 0, BRACE_accent, 1,
+"option", CF_brace, CF_brace_code, BRACE_style_code, 1,
+"ordf", CF_brace, 0, BRACE_noarg, 0,
+"ordm", CF_brace, 0, BRACE_noarg, 0,
+"page", CF_line | CF_no_paragraph | CF_close_paragraph, CF_formatted_line, 
LINE_lineraw, 0,
+"pagesizes", CF_line | CF_no_paragraph | CF_global_unique | CF_preamble | 
CF_contain_plain_text, 0, LINE_line, 1,
+"paragraphindent", CF_line | CF_no_paragraph | CF_global | CF_preamble | 
CF_contain_plain_text, 0, LINE_specific, 1,
+"part", CF_line | CF_no_paragraph | CF_root | CF_contain_basic_inline | 
CF_sectioning_heading | CF_global, CF_formatted_line | CF_unnumbered, 
LINE_line, 1,
+"pgindex", CF_line | CF_no_paragraph | CF_index_entry_command | 
CF_contain_basic_inline, 0, LINE_line, 1,
+"pindex", CF_line | CF_no_paragraph | CF_index_entry_command | 
CF_contain_basic_inline, 0, LINE_line, 1,
+"point", CF_brace, 0, BRACE_noarg, 0,
+"pounds", CF_brace, 0, BRACE_noarg, 0,
+"print", CF_brace, 0, BRACE_noarg, 0,
+"printindex", CF_line | CF_no_paragraph | CF_close_paragraph | CF_global | 
CF_contain_plain_text, CF_formattable_line, LINE_specific, 1,
+"pxref", CF_brace | CF_ref | CF_contain_basic_inline, 0, BRACE_arguments, 5,
+"questiondown", CF_brace, 0, BRACE_noarg, 0,
+"quotation", CF_block | CF_no_paragraph | CF_close_paragraph | 
CF_contain_basic_inline, 0, BLOCK_quotation, 1,
+"quotedblbase", CF_brace, 0, BRACE_noarg, 0,
+"quotedblleft", CF_brace, 0, BRACE_noarg, 0,
+"quotedblright", CF_brace, 0, BRACE_noarg, 0,
+"quoteleft", CF_brace, 0, BRACE_noarg, 0,
+"quoteright", CF_brace, 0, BRACE_noarg, 0,
+"quotesinglbase", CF_brace, 0, BRACE_noarg, 0,
+"r", CF_brace, 0, BRACE_style_no_code, 1,
+"raggedright", CF_block | CF_no_paragraph | CF_close_paragraph, 0, 0, 0,
+"raisesections", CF_line | CF_no_paragraph | CF_preamble, 0, LINE_lineraw, 0,
+"rbracechar", CF_brace, 0, BRACE_noarg, 0,
+"ref", CF_brace | CF_ref | CF_contain_basic_inline, 0, BRACE_arguments, 5,
+"refill", CF_nobrace | CF_preamble | CF_deprecated | CF_no_paragraph, 0, 
NOBRACE_other, 0,
+"registeredsymbol", CF_brace, 0, BRACE_noarg, 0,
+"result", CF_brace, 0, BRACE_noarg, 0,
+"ringaccent", CF_brace | CF_accent | CF_contain_plain_text, 0, BRACE_accent, 1,
+"rmacro", CF_block | CF_no_paragraph | CF_preamble, CF_non_formatted_block, 
BLOCK_raw, 0,
+"samp", CF_brace, CF_brace_code, BRACE_style_code, 1,
+"sansserif", CF_brace, 0, BRACE_style_other, 1,
+"sc", CF_brace, 0, BRACE_style_other, 1,
+"section", CF_line | CF_no_paragraph | CF_root | CF_contain_basic_inline | 
CF_sectioning_heading, CF_formatted_line, LINE_line, 1,
+"seealso", CF_brace | CF_contain_basic_inline, CF_in_index, BRACE_arguments, 1,
+"seeentry", CF_brace | CF_contain_basic_inline, CF_in_index, BRACE_arguments, 
1,
+"set", CF_line | CF_no_paragraph | CF_preamble, 0, LINE_lineraw, 2,
+"setchapternewpage", CF_line | CF_no_paragraph | CF_global_unique | 
CF_preamble | CF_contain_plain_text, 0, LINE_specific, 1,
+"setfilename", CF_line | CF_no_paragraph | CF_close_paragraph | 
CF_global_unique | CF_preamble | CF_contain_plain_text, 0, LINE_text, 1,
+"settitle", CF_line | CF_no_paragraph | CF_global_unique | CF_preamble | 
CF_contain_basic_inline, 0, LINE_line, 1,
+"shortcaption", CF_brace | CF_close_paragraph | CF_contain_basic_inline | 
CF_no_paragraph, CF_non_formatted_brace, BRACE_context, 1,
+"shortcontents", CF_line | CF_no_paragraph | CF_close_paragraph | CF_global | 
CF_preamble, 0, LINE_lineraw, 0,
+"shorttitlepage", CF_line | CF_no_paragraph | CF_global_unique | CF_preamble | 
CF_contain_basic_inline, 0, LINE_line, 1,
+"slanted", CF_brace, 0, BRACE_style_other, 1,
+"smallbook", CF_line | CF_no_paragraph | CF_global_unique | CF_preamble, 0, 
LINE_lineraw, 0,
+"smalldisplay", CF_block | CF_no_paragraph | CF_close_paragraph | 
CF_preformatted, 0, BLOCK_preformatted, 0,
+"smallexample", CF_block | CF_no_paragraph | CF_close_paragraph | 
CF_preformatted | CF_preformatted_code, 0, BLOCK_preformatted, 0,
+"smallformat", CF_block | CF_no_paragraph | CF_close_paragraph | 
CF_preformatted, 0, BLOCK_preformatted, 0,
+"smallindentedblock", CF_block | CF_no_paragraph | CF_close_paragraph, 0, 0, 0,
+"smalllisp", CF_block | CF_no_paragraph | CF_close_paragraph | CF_preformatted 
| CF_preformatted_code, 0, BLOCK_preformatted, 0,
+"smallquotation", CF_block | CF_no_paragraph | CF_close_paragraph | 
CF_contain_basic_inline, 0, BLOCK_quotation, 1,
+"sortas", CF_brace | CF_contain_plain_text, CF_in_index | 
CF_non_formatted_brace, BRACE_arguments, 1,
+"sp", CF_line | CF_no_paragraph | CF_close_paragraph | CF_contain_plain_text, 
CF_formattable_line, LINE_specific, 1,
+"ss", CF_brace, CF_letter_no_arg, BRACE_noarg, 0,
+"strong", CF_brace, 0, BRACE_style_other, 1,
+"sub", CF_brace, 0, BRACE_style_other, 1,
+"subentry", CF_line | CF_no_paragraph | CF_contain_basic_inline, CF_in_index, 
LINE_line, 1,
+"subheading", CF_line | CF_no_paragraph | CF_contain_basic_inline | 
CF_sectioning_heading | CF_close_paragraph | CF_global, CF_formatted_line, 
LINE_line, 1,
+"subsection", CF_line | CF_no_paragraph | CF_root | CF_contain_basic_inline | 
CF_sectioning_heading, CF_formatted_line, LINE_line, 1,
+"subsubheading", CF_line | CF_no_paragraph | CF_contain_basic_inline | 
CF_sectioning_heading | CF_close_paragraph | CF_global, CF_formatted_line, 
LINE_line, 1,
+"subsubsection", CF_line | CF_no_paragraph | CF_root | CF_contain_basic_inline 
| CF_sectioning_heading, CF_formatted_line, LINE_line, 1,
+"subtitle", CF_line | CF_no_paragraph | CF_global | CF_contain_basic_inline, 
CF_formatted_line, LINE_line, 1,
+"summarycontents", CF_line | CF_no_paragraph | CF_close_paragraph | CF_global 
| CF_preamble, 0, LINE_lineraw, 0,
+"sup", CF_brace, 0, BRACE_style_other, 1,
+"syncodeindex", CF_line | CF_no_paragraph | CF_preamble | 
CF_contain_plain_text, 0, LINE_specific, 2,
+"synindex", CF_line | CF_no_paragraph | CF_preamble | CF_contain_plain_text, 
0, LINE_specific, 2,
+"t", CF_brace, CF_brace_code, BRACE_style_code, 1,
+"tab", CF_nobrace | CF_close_paragraph | CF_no_paragraph, 
CF_formatted_nobrace, NOBRACE_skipspace, 0,
+"table", CF_block | CF_no_paragraph | CF_close_paragraph | CF_blockitem | 
CF_contain_basic_inline, 0, BLOCK_item_line, 1,
+"tex", CF_block | CF_no_paragraph | CF_preamble, 0, BLOCK_format_raw, 0,
+"textdegree", CF_brace, 0, BRACE_noarg, 0,
+"th", CF_brace, CF_letter_no_arg, BRACE_noarg, 0,
+"thischapter", CF_nobrace | CF_in_heading_spec, 0, NOBRACE_other, 0,
+"thischaptername", CF_nobrace | CF_in_heading_spec, 0, NOBRACE_other, 0,
+"thischapternum", CF_nobrace | CF_in_heading_spec, 0, NOBRACE_other, 0,
+"thisfile", CF_nobrace | CF_in_heading_spec, 0, NOBRACE_other, 0,
+"thispage", CF_nobrace | CF_in_heading_spec, 0, NOBRACE_other, 0,
+"thissection", CF_nobrace | CF_in_heading_spec, 0, NOBRACE_other, 0,
+"thissectionname", CF_nobrace | CF_in_heading_spec, 0, NOBRACE_other, 0,
+"thissectionnum", CF_nobrace | CF_in_heading_spec, 0, NOBRACE_other, 0,
+"thistitle", CF_nobrace | CF_in_heading_spec, 0, NOBRACE_other, 0,
+"tie", CF_brace, 0, BRACE_noarg, 0,
+"tieaccent", CF_brace | CF_accent | CF_contain_plain_text, 0, BRACE_accent, 1,
+"tindex", CF_line | CF_no_paragraph | CF_index_entry_command | 
CF_contain_basic_inline, 0, LINE_line, 1,
+"title", CF_line | CF_no_paragraph | CF_global_unique | 
CF_contain_basic_inline, CF_formatted_line, LINE_line, 1,
+"titlefont", CF_brace | CF_close_paragraph | CF_global | 
CF_contain_basic_inline | CF_no_paragraph, 0, BRACE_other, 1,
+"titlepage", CF_block | CF_no_paragraph | CF_close_paragraph | 
CF_global_unique | CF_preamble, 0, BLOCK_region, 0,
+"today", CF_brace, 0, BRACE_noarg, 0,
+"top", CF_line | CF_no_paragraph | CF_root | CF_contain_basic_inline | 
CF_sectioning_heading | CF_global_unique, CF_formatted_line | CF_unnumbered, 
LINE_line, 1,
+"tpindex", CF_line | CF_no_paragraph | CF_index_entry_command | 
CF_contain_basic_inline, 0, LINE_line, 1,
+"txiinternalvalue", CF_internal | CF_brace, 0, BRACE_special, 1,
+"u", CF_brace | CF_accent | CF_contain_plain_text, 0, BRACE_accent, 1,
+"ubaraccent", CF_brace | CF_accent | CF_contain_plain_text, 0, BRACE_accent, 1,
+"udotaccent", CF_brace | CF_accent | CF_contain_plain_text, 0, BRACE_accent, 1,
+"unmacro", CF_line | CF_no_paragraph | CF_preamble, 0, LINE_lineraw, 1,
+"unnumbered", CF_line | CF_no_paragraph | CF_root | CF_contain_basic_inline | 
CF_sectioning_heading, CF_formatted_line | CF_unnumbered, LINE_line, 1,
+"unnumberedsec", CF_line | CF_no_paragraph | CF_root | CF_contain_basic_inline 
| CF_sectioning_heading, CF_formatted_line | CF_unnumbered, LINE_line, 1,
+"unnumberedsubsec", CF_line | CF_no_paragraph | CF_root | 
CF_contain_basic_inline | CF_sectioning_heading, CF_formatted_line | 
CF_unnumbered, LINE_line, 1,
+"unnumberedsubsubsec", CF_line | CF_no_paragraph | CF_root | 
CF_contain_basic_inline | CF_sectioning_heading, CF_formatted_line | 
CF_unnumbered, LINE_line, 1,
+"uref", CF_brace | CF_contain_basic_inline, 0, BRACE_arguments, 3,
+"urefbreakstyle", CF_line | CF_no_paragraph | CF_global | CF_preamble | 
CF_contain_plain_text, 0, LINE_specific, 1,
+"url", CF_brace | CF_contain_basic_inline, 0, BRACE_arguments, 3,
+"v", CF_brace | CF_accent | CF_contain_plain_text, 0, BRACE_accent, 1,
+"value", CF_brace, 0, BRACE_special, 1,
+"var", CF_brace, 0, BRACE_style_other, 1,
+"verb", CF_brace, CF_brace_code, BRACE_special, 1,
+"verbatim", CF_block | CF_no_paragraph | CF_close_paragraph, 0, BLOCK_raw, 0,
+"verbatiminclude", CF_line | CF_no_paragraph | CF_close_paragraph | 
CF_contain_plain_text, CF_formattable_line, LINE_text, 1,
+"vindex", CF_line | CF_no_paragraph | CF_index_entry_command | 
CF_contain_basic_inline, 0, LINE_line, 1,
+"vrindex", CF_line | CF_no_paragraph | CF_index_entry_command | 
CF_contain_basic_inline, 0, LINE_line, 1,
+"vskip", CF_line | CF_no_paragraph, CF_formattable_line, LINE_lineraw, 1,
+"vtable", CF_block | CF_no_paragraph | CF_close_paragraph | CF_blockitem | 
CF_contain_basic_inline, 0, BLOCK_item_line, 1,
+"w", CF_brace | CF_contain_basic_inline, 0, BRACE_special, 1,
+"xml", CF_block | CF_no_paragraph | CF_preamble, 0, BLOCK_format_raw, 0,
+"xref", CF_brace | CF_ref | CF_contain_basic_inline, 0, BRACE_arguments, 5,
+"xrefautomaticsectiontitle", CF_line | CF_no_paragraph | CF_global | 
CF_preamble | CF_contain_plain_text, 0, LINE_specific, 1,
+"{", CF_nobrace, CF_formatted_nobrace, NOBRACE_symbol, 0,
+"|", CF_nobrace | CF_in_heading_spec, 0, NOBRACE_symbol, 0,
+"}", CF_nobrace, CF_formatted_nobrace, NOBRACE_symbol, 0,
+"~", CF_brace | CF_accent | CF_contain_plain_text, 0, BRACE_accent, 1,
+};
diff --git a/tp/Texinfo/XS/main/global_commands_types.h 
b/tp/Texinfo/XS/main/global_commands_types.h
new file mode 100644
index 0000000000..4319ed2da7
--- /dev/null
+++ b/tp/Texinfo/XS/main/global_commands_types.h
@@ -0,0 +1,83 @@
+/* This file automatically generated by command_data.awk */
+#ifndef GLOBAL_COMMANDS_TYPES_H
+#define GLOBAL_COMMANDS_TYPES_H
+
+#include "tree_types.h"
+
+typedef struct GLOBAL_COMMANDS {
+    /* Elements that should be unique. */
+   ELEMENT *afivepaper;
+   ELEMENT *afourlatex;
+   ELEMENT *afourpaper;
+   ELEMENT *afourwide;
+   ELEMENT *bsixpaper;
+   ELEMENT *copying;
+   ELEMENT *documentdescription;
+   ELEMENT *evenfooting;
+   ELEMENT *evenfootingmarks;
+   ELEMENT *evenheading;
+   ELEMENT *evenheadingmarks;
+   ELEMENT *everyfooting;
+   ELEMENT *everyfootingmarks;
+   ELEMENT *everyheading;
+   ELEMENT *everyheadingmarks;
+   ELEMENT *fonttextsize;
+   ELEMENT *footnotestyle;
+   ELEMENT *novalidate;
+   ELEMENT *oddfooting;
+   ELEMENT *oddfootingmarks;
+   ELEMENT *oddheading;
+   ELEMENT *oddheadingmarks;
+   ELEMENT *pagesizes;
+   ELEMENT *setchapternewpage;
+   ELEMENT *setfilename;
+   ELEMENT *settitle;
+   ELEMENT *shorttitlepage;
+   ELEMENT *smallbook;
+   ELEMENT *title;
+   ELEMENT *titlepage;
+   ELEMENT *top;
+
+   /* Arrays of elements */
+   ELEMENT_LIST dircategory_direntry;
+
+   ELEMENT_LIST floats;
+   ELEMENT_LIST footnotes;
+
+   ELEMENT_LIST allowcodebreaks;
+   ELEMENT_LIST author;
+   ELEMENT_LIST chapheading;
+   ELEMENT_LIST clickstyle;
+   ELEMENT_LIST codequotebacktick;
+   ELEMENT_LIST codequoteundirected;
+   ELEMENT_LIST contents;
+   ELEMENT_LIST deftypefnnewline;
+   ELEMENT_LIST detailmenu;
+   ELEMENT_LIST documentencoding;
+   ELEMENT_LIST documentlanguage;
+   ELEMENT_LIST exampleindent;
+   ELEMENT_LIST firstparagraphindent;
+   ELEMENT_LIST frenchspacing;
+   ELEMENT_LIST heading;
+   ELEMENT_LIST headings;
+   ELEMENT_LIST hyphenation;
+   ELEMENT_LIST insertcopying;
+   ELEMENT_LIST kbdinputstyle;
+   ELEMENT_LIST listoffloats;
+   ELEMENT_LIST majorheading;
+   ELEMENT_LIST microtype;
+   ELEMENT_LIST paragraphindent;
+   ELEMENT_LIST part;
+   ELEMENT_LIST printindex;
+   ELEMENT_LIST shortcontents;
+   ELEMENT_LIST subheading;
+   ELEMENT_LIST subsubheading;
+   ELEMENT_LIST subtitle;
+   ELEMENT_LIST summarycontents;
+   ELEMENT_LIST titlefont;
+   ELEMENT_LIST urefbreakstyle;
+   ELEMENT_LIST xrefautomaticsectiontitle;
+
+} GLOBAL_COMMANDS;
+
+#endif
diff --git a/tp/Texinfo/XS/main/global_multi_commands_case.c 
b/tp/Texinfo/XS/main/global_multi_commands_case.c
new file mode 100644
index 0000000000..165bd4fa6d
--- /dev/null
+++ b/tp/Texinfo/XS/main/global_multi_commands_case.c
@@ -0,0 +1,36 @@
+/* This file automatically generated by command_data.awk */
+/* global in command_data.txt */
+
+GLOBAL_CASE(allowcodebreaks);
+GLOBAL_CASE(author);
+GLOBAL_CASE(chapheading);
+GLOBAL_CASE(clickstyle);
+GLOBAL_CASE(codequotebacktick);
+GLOBAL_CASE(codequoteundirected);
+GLOBAL_CASE(contents);
+GLOBAL_CASE(deftypefnnewline);
+GLOBAL_CASE(detailmenu);
+GLOBAL_CASE(documentencoding);
+GLOBAL_CASE(documentlanguage);
+GLOBAL_CASE(exampleindent);
+GLOBAL_CASE(firstparagraphindent);
+GLOBAL_CASE(frenchspacing);
+GLOBAL_CASE(heading);
+GLOBAL_CASE(headings);
+GLOBAL_CASE(hyphenation);
+GLOBAL_CASE(insertcopying);
+GLOBAL_CASE(kbdinputstyle);
+GLOBAL_CASE(listoffloats);
+GLOBAL_CASE(majorheading);
+GLOBAL_CASE(microtype);
+GLOBAL_CASE(paragraphindent);
+GLOBAL_CASE(part);
+GLOBAL_CASE(printindex);
+GLOBAL_CASE(shortcontents);
+GLOBAL_CASE(subheading);
+GLOBAL_CASE(subsubheading);
+GLOBAL_CASE(subtitle);
+GLOBAL_CASE(summarycontents);
+GLOBAL_CASE(titlefont);
+GLOBAL_CASE(urefbreakstyle);
+GLOBAL_CASE(xrefautomaticsectiontitle);
diff --git a/tp/Texinfo/XS/main/global_unique_commands_case.c 
b/tp/Texinfo/XS/main/global_unique_commands_case.c
new file mode 100644
index 0000000000..ee85a707b9
--- /dev/null
+++ b/tp/Texinfo/XS/main/global_unique_commands_case.c
@@ -0,0 +1,33 @@
+/* This file automatically generated by command_data.awk */
+/* global_unique in command_data.txt */
+
+GLOBAL_UNIQUE_CASE(afivepaper);
+GLOBAL_UNIQUE_CASE(afourlatex);
+GLOBAL_UNIQUE_CASE(afourpaper);
+GLOBAL_UNIQUE_CASE(afourwide);
+GLOBAL_UNIQUE_CASE(bsixpaper);
+GLOBAL_UNIQUE_CASE(copying);
+GLOBAL_UNIQUE_CASE(documentdescription);
+GLOBAL_UNIQUE_CASE(evenfooting);
+GLOBAL_UNIQUE_CASE(evenfootingmarks);
+GLOBAL_UNIQUE_CASE(evenheading);
+GLOBAL_UNIQUE_CASE(evenheadingmarks);
+GLOBAL_UNIQUE_CASE(everyfooting);
+GLOBAL_UNIQUE_CASE(everyfootingmarks);
+GLOBAL_UNIQUE_CASE(everyheading);
+GLOBAL_UNIQUE_CASE(everyheadingmarks);
+GLOBAL_UNIQUE_CASE(fonttextsize);
+GLOBAL_UNIQUE_CASE(footnotestyle);
+GLOBAL_UNIQUE_CASE(novalidate);
+GLOBAL_UNIQUE_CASE(oddfooting);
+GLOBAL_UNIQUE_CASE(oddfootingmarks);
+GLOBAL_UNIQUE_CASE(oddheading);
+GLOBAL_UNIQUE_CASE(oddheadingmarks);
+GLOBAL_UNIQUE_CASE(pagesizes);
+GLOBAL_UNIQUE_CASE(setchapternewpage);
+GLOBAL_UNIQUE_CASE(settitle);
+GLOBAL_UNIQUE_CASE(shorttitlepage);
+GLOBAL_UNIQUE_CASE(smallbook);
+GLOBAL_UNIQUE_CASE(title);
+GLOBAL_UNIQUE_CASE(titlepage);
+GLOBAL_UNIQUE_CASE(top);
diff --git a/tp/Texinfo/XS/main/options_get_perl.c 
b/tp/Texinfo/XS/main/options_get_perl.c
new file mode 100644
index 0000000000..f1e440208a
--- /dev/null
+++ b/tp/Texinfo/XS/main/options_get_perl.c
@@ -0,0 +1,4866 @@
+/* Automatically generated from regenerate_C_options_info.pl */
+
+
+/* Avoid namespace conflicts. */
+#define context perl_context
+
+#define PERL_NO_GET_CONTEXT
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+#undef context
+
+ /* See the NOTE in build_perl_info.c on use of functions related to
+    memory allocation */
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "options_types.h"
+#include "converter_types.h"
+#include "utils.h"
+#include "get_perl_info.h"
+#include "build_perl_info.h"
+
+int
+get_options_key_sv_option (OPTIONS *options, const char *key, SV *value, int 
force, const CONVERTER *converter)
+{
+  dTHX;
+
+  if (0) {}
+
+/* array_cmdline */
+
+  else if (!strcmp (key, "CSS_FILES"))
+    {
+      if (force <= 0 && options->CSS_FILES.configured > 0)
+        return -1;
+
+      clear_strings_list (options->CSS_FILES.o.strlist);
+      add_svav_to_string_list (value, options->CSS_FILES.o.strlist, svt_byte);
+    }
+  else if (!strcmp (key, "CSS_REFS"))
+    {
+      if (force <= 0 && options->CSS_REFS.configured > 0)
+        return -1;
+
+      clear_strings_list (options->CSS_REFS.o.strlist);
+      add_svav_to_string_list (value, options->CSS_REFS.o.strlist, svt_char);
+    }
+  else if (!strcmp (key, "EXPANDED_FORMATS"))
+    {
+      if (force <= 0 && options->EXPANDED_FORMATS.configured > 0)
+        return -1;
+
+      clear_strings_list (options->EXPANDED_FORMATS.o.strlist);
+      add_svav_to_string_list (value, options->EXPANDED_FORMATS.o.strlist, 
svt_byte);
+    }
+  else if (!strcmp (key, "INCLUDE_DIRECTORIES"))
+    {
+      if (force <= 0 && options->INCLUDE_DIRECTORIES.configured > 0)
+        return -1;
+
+      clear_strings_list (options->INCLUDE_DIRECTORIES.o.strlist);
+      add_svav_to_string_list (value, options->INCLUDE_DIRECTORIES.o.strlist, 
svt_dir);
+    }
+  else if (!strcmp (key, "TEXINFO_LANGUAGE_DIRECTORIES"))
+    {
+      if (force <= 0 && options->TEXINFO_LANGUAGE_DIRECTORIES.configured > 0)
+        return -1;
+
+      clear_strings_list (options->TEXINFO_LANGUAGE_DIRECTORIES.o.strlist);
+      add_svav_to_string_list (value, 
options->TEXINFO_LANGUAGE_DIRECTORIES.o.strlist, svt_dir);
+    }
+
+/* converter_cmdline */
+
+  else if (!strcmp (key, "SPLIT_SIZE"))
+    {
+      if (force <= 0 && options->SPLIT_SIZE.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->SPLIT_SIZE.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "SPLIT_SIZE", SvPVutf8_nolen (value));
+              options->SPLIT_SIZE.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->SPLIT_SIZE.o.integer = -1;
+    }
+  else if (!strcmp (key, "FILLCOLUMN"))
+    {
+      if (force <= 0 && options->FILLCOLUMN.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->FILLCOLUMN.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "FILLCOLUMN", SvPVutf8_nolen (value));
+              options->FILLCOLUMN.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->FILLCOLUMN.o.integer = -1;
+    }
+  else if (!strcmp (key, "NUMBER_SECTIONS"))
+    {
+      if (force <= 0 && options->NUMBER_SECTIONS.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->NUMBER_SECTIONS.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "NUMBER_SECTIONS", SvPVutf8_nolen (value));
+              options->NUMBER_SECTIONS.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->NUMBER_SECTIONS.o.integer = -1;
+    }
+  else if (!strcmp (key, "NUMBER_FOOTNOTES"))
+    {
+      if (force <= 0 && options->NUMBER_FOOTNOTES.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->NUMBER_FOOTNOTES.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "NUMBER_FOOTNOTES", SvPVutf8_nolen (value));
+              options->NUMBER_FOOTNOTES.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->NUMBER_FOOTNOTES.o.integer = -1;
+    }
+  else if (!strcmp (key, "TRANSLITERATE_FILE_NAMES"))
+    {
+      if (force <= 0 && options->TRANSLITERATE_FILE_NAMES.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->TRANSLITERATE_FILE_NAMES.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "TRANSLITERATE_FILE_NAMES", SvPVutf8_nolen (value));
+              options->TRANSLITERATE_FILE_NAMES.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->TRANSLITERATE_FILE_NAMES.o.integer = -1;
+    }
+  else if (!strcmp (key, "SPLIT"))
+    {
+      if (force <= 0 && options->SPLIT.configured > 0)
+        return -1;
+
+      non_perl_free (options->SPLIT.o.string);
+      if (SvOK (value))
+        options->SPLIT.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->SPLIT.o.string = 0;
+    }
+  else if (!strcmp (key, "HEADERS"))
+    {
+      if (force <= 0 && options->HEADERS.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->HEADERS.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "HEADERS", SvPVutf8_nolen (value));
+              options->HEADERS.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->HEADERS.o.integer = -1;
+    }
+  else if (!strcmp (key, "NODE_FILES"))
+    {
+      if (force <= 0 && options->NODE_FILES.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->NODE_FILES.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "NODE_FILES", SvPVutf8_nolen (value));
+              options->NODE_FILES.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->NODE_FILES.o.integer = -1;
+    }
+  else if (!strcmp (key, "VERBOSE"))
+    {
+      if (force <= 0 && options->VERBOSE.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->VERBOSE.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "VERBOSE", SvPVutf8_nolen (value));
+              options->VERBOSE.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->VERBOSE.o.integer = -1;
+    }
+  else if (!strcmp (key, "OUTFILE"))
+    {
+      if (force <= 0 && options->OUTFILE.configured > 0)
+        return -1;
+
+      non_perl_free (options->OUTFILE.o.string);
+      if (SvOK (value))
+        options->OUTFILE.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->OUTFILE.o.string = 0;
+    }
+  else if (!strcmp (key, "SUBDIR"))
+    {
+      if (force <= 0 && options->SUBDIR.configured > 0)
+        return -1;
+
+      non_perl_free (options->SUBDIR.o.string);
+      if (SvOK (value))
+        options->SUBDIR.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->SUBDIR.o.string = 0;
+    }
+  else if (!strcmp (key, "ENABLE_ENCODING"))
+    {
+      if (force <= 0 && options->ENABLE_ENCODING.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->ENABLE_ENCODING.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "ENABLE_ENCODING", SvPVutf8_nolen (value));
+              options->ENABLE_ENCODING.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->ENABLE_ENCODING.o.integer = -1;
+    }
+
+/* converter_customization */
+
+  else if (!strcmp (key, "TOP_NODE_UP"))
+    {
+      if (force <= 0 && options->TOP_NODE_UP.configured > 0)
+        return -1;
+
+      non_perl_free (options->TOP_NODE_UP.o.string);
+      if (SvOK (value))
+        options->TOP_NODE_UP.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->TOP_NODE_UP.o.string = 0;
+    }
+  else if (!strcmp (key, "BASEFILENAME_LENGTH"))
+    {
+      if (force <= 0 && options->BASEFILENAME_LENGTH.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->BASEFILENAME_LENGTH.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "BASEFILENAME_LENGTH", SvPVutf8_nolen (value));
+              options->BASEFILENAME_LENGTH.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->BASEFILENAME_LENGTH.o.integer = -1;
+    }
+  else if (!strcmp (key, "DOC_ENCODING_FOR_INPUT_FILE_NAME"))
+    {
+      if (force <= 0 && options->DOC_ENCODING_FOR_INPUT_FILE_NAME.configured > 
0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->DOC_ENCODING_FOR_INPUT_FILE_NAME.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "DOC_ENCODING_FOR_INPUT_FILE_NAME", SvPVutf8_nolen 
(value));
+              options->DOC_ENCODING_FOR_INPUT_FILE_NAME.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->DOC_ENCODING_FOR_INPUT_FILE_NAME.o.integer = -1;
+    }
+  else if (!strcmp (key, "DOC_ENCODING_FOR_OUTPUT_FILE_NAME"))
+    {
+      if (force <= 0 && options->DOC_ENCODING_FOR_OUTPUT_FILE_NAME.configured 
> 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->DOC_ENCODING_FOR_OUTPUT_FILE_NAME.o.integer = SvIV 
(value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "DOC_ENCODING_FOR_OUTPUT_FILE_NAME", SvPVutf8_nolen 
(value));
+              options->DOC_ENCODING_FOR_OUTPUT_FILE_NAME.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->DOC_ENCODING_FOR_OUTPUT_FILE_NAME.o.integer = -1;
+    }
+  else if (!strcmp (key, "IMAGE_LINK_PREFIX"))
+    {
+      if (force <= 0 && options->IMAGE_LINK_PREFIX.configured > 0)
+        return -1;
+
+      non_perl_free (options->IMAGE_LINK_PREFIX.o.string);
+      if (SvOK (value))
+        options->IMAGE_LINK_PREFIX.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->IMAGE_LINK_PREFIX.o.string = 0;
+    }
+  else if (!strcmp (key, "CASE_INSENSITIVE_FILENAMES"))
+    {
+      if (force <= 0 && options->CASE_INSENSITIVE_FILENAMES.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->CASE_INSENSITIVE_FILENAMES.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "CASE_INSENSITIVE_FILENAMES", SvPVutf8_nolen (value));
+              options->CASE_INSENSITIVE_FILENAMES.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->CASE_INSENSITIVE_FILENAMES.o.integer = -1;
+    }
+  else if (!strcmp (key, "DEBUG"))
+    {
+      if (force <= 0 && options->DEBUG.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->DEBUG.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "DEBUG", SvPVutf8_nolen (value));
+              options->DEBUG.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->DEBUG.o.integer = -1;
+    }
+  else if (!strcmp (key, "HANDLER_FATAL_ERROR_LEVEL"))
+    {
+      if (force <= 0 && options->HANDLER_FATAL_ERROR_LEVEL.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->HANDLER_FATAL_ERROR_LEVEL.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "HANDLER_FATAL_ERROR_LEVEL", SvPVutf8_nolen (value));
+              options->HANDLER_FATAL_ERROR_LEVEL.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->HANDLER_FATAL_ERROR_LEVEL.o.integer = -1;
+    }
+  else if (!strcmp (key, "TEST"))
+    {
+      if (force <= 0 && options->TEST.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->TEST.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "TEST", SvPVutf8_nolen (value));
+              options->TEST.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->TEST.o.integer = -1;
+    }
+  else if (!strcmp (key, "TEXTCONTENT_COMMENT"))
+    {
+      if (force <= 0 && options->TEXTCONTENT_COMMENT.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->TEXTCONTENT_COMMENT.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "TEXTCONTENT_COMMENT", SvPVutf8_nolen (value));
+              options->TEXTCONTENT_COMMENT.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->TEXTCONTENT_COMMENT.o.integer = -1;
+    }
+  else if (!strcmp (key, "TEXINFO_DTD_VERSION"))
+    {
+      if (force <= 0 && options->TEXINFO_DTD_VERSION.configured > 0)
+        return -1;
+
+      non_perl_free (options->TEXINFO_DTD_VERSION.o.string);
+      if (SvOK (value))
+        options->TEXINFO_DTD_VERSION.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->TEXINFO_DTD_VERSION.o.string = 0;
+    }
+  else if (!strcmp (key, "USE_UNICODE_COLLATION"))
+    {
+      if (force <= 0 && options->USE_UNICODE_COLLATION.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->USE_UNICODE_COLLATION.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "USE_UNICODE_COLLATION", SvPVutf8_nolen (value));
+              options->USE_UNICODE_COLLATION.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->USE_UNICODE_COLLATION.o.integer = -1;
+    }
+  else if (!strcmp (key, "AFTER_BODY_OPEN"))
+    {
+      if (force <= 0 && options->AFTER_BODY_OPEN.configured > 0)
+        return -1;
+
+      non_perl_free (options->AFTER_BODY_OPEN.o.string);
+      if (SvOK (value))
+        options->AFTER_BODY_OPEN.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->AFTER_BODY_OPEN.o.string = 0;
+    }
+  else if (!strcmp (key, "AFTER_SHORT_TOC_LINES"))
+    {
+      if (force <= 0 && options->AFTER_SHORT_TOC_LINES.configured > 0)
+        return -1;
+
+      non_perl_free (options->AFTER_SHORT_TOC_LINES.o.string);
+      if (SvOK (value))
+        options->AFTER_SHORT_TOC_LINES.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->AFTER_SHORT_TOC_LINES.o.string = 0;
+    }
+  else if (!strcmp (key, "AFTER_TOC_LINES"))
+    {
+      if (force <= 0 && options->AFTER_TOC_LINES.configured > 0)
+        return -1;
+
+      non_perl_free (options->AFTER_TOC_LINES.o.string);
+      if (SvOK (value))
+        options->AFTER_TOC_LINES.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->AFTER_TOC_LINES.o.string = 0;
+    }
+  else if (!strcmp (key, "ASCII_DASHES_AND_QUOTES"))
+    {
+      if (force <= 0 && options->ASCII_DASHES_AND_QUOTES.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->ASCII_DASHES_AND_QUOTES.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "ASCII_DASHES_AND_QUOTES", SvPVutf8_nolen (value));
+              options->ASCII_DASHES_AND_QUOTES.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->ASCII_DASHES_AND_QUOTES.o.integer = -1;
+    }
+  else if (!strcmp (key, "ASCII_GLYPH"))
+    {
+      if (force <= 0 && options->ASCII_GLYPH.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->ASCII_GLYPH.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "ASCII_GLYPH", SvPVutf8_nolen (value));
+              options->ASCII_GLYPH.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->ASCII_GLYPH.o.integer = -1;
+    }
+  else if (!strcmp (key, "ASCII_PUNCTUATION"))
+    {
+      if (force <= 0 && options->ASCII_PUNCTUATION.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->ASCII_PUNCTUATION.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "ASCII_PUNCTUATION", SvPVutf8_nolen (value));
+              options->ASCII_PUNCTUATION.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->ASCII_PUNCTUATION.o.integer = -1;
+    }
+  else if (!strcmp (key, "AUTO_MENU_DESCRIPTION_ALIGN_COLUMN"))
+    {
+      if (force <= 0 && options->AUTO_MENU_DESCRIPTION_ALIGN_COLUMN.configured 
> 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->AUTO_MENU_DESCRIPTION_ALIGN_COLUMN.o.integer = SvIV 
(value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "AUTO_MENU_DESCRIPTION_ALIGN_COLUMN", SvPVutf8_nolen 
(value));
+              options->AUTO_MENU_DESCRIPTION_ALIGN_COLUMN.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->AUTO_MENU_DESCRIPTION_ALIGN_COLUMN.o.integer = -1;
+    }
+  else if (!strcmp (key, "AUTO_MENU_MAX_WIDTH"))
+    {
+      if (force <= 0 && options->AUTO_MENU_MAX_WIDTH.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->AUTO_MENU_MAX_WIDTH.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "AUTO_MENU_MAX_WIDTH", SvPVutf8_nolen (value));
+              options->AUTO_MENU_MAX_WIDTH.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->AUTO_MENU_MAX_WIDTH.o.integer = -1;
+    }
+  else if (!strcmp (key, "BEFORE_SHORT_TOC_LINES"))
+    {
+      if (force <= 0 && options->BEFORE_SHORT_TOC_LINES.configured > 0)
+        return -1;
+
+      non_perl_free (options->BEFORE_SHORT_TOC_LINES.o.string);
+      if (SvOK (value))
+        options->BEFORE_SHORT_TOC_LINES.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->BEFORE_SHORT_TOC_LINES.o.string = 0;
+    }
+  else if (!strcmp (key, "BEFORE_TOC_LINES"))
+    {
+      if (force <= 0 && options->BEFORE_TOC_LINES.configured > 0)
+        return -1;
+
+      non_perl_free (options->BEFORE_TOC_LINES.o.string);
+      if (SvOK (value))
+        options->BEFORE_TOC_LINES.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->BEFORE_TOC_LINES.o.string = 0;
+    }
+  else if (!strcmp (key, "BIG_RULE"))
+    {
+      if (force <= 0 && options->BIG_RULE.configured > 0)
+        return -1;
+
+      non_perl_free (options->BIG_RULE.o.string);
+      if (SvOK (value))
+        options->BIG_RULE.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->BIG_RULE.o.string = 0;
+    }
+  else if (!strcmp (key, "BODY_ELEMENT_ATTRIBUTES"))
+    {
+      if (force <= 0 && options->BODY_ELEMENT_ATTRIBUTES.configured > 0)
+        return -1;
+
+      non_perl_free (options->BODY_ELEMENT_ATTRIBUTES.o.string);
+      if (SvOK (value))
+        options->BODY_ELEMENT_ATTRIBUTES.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->BODY_ELEMENT_ATTRIBUTES.o.string = 0;
+    }
+  else if (!strcmp (key, "CLASS_BEGIN_USEPACKAGE"))
+    {
+      if (force <= 0 && options->CLASS_BEGIN_USEPACKAGE.configured > 0)
+        return -1;
+
+      non_perl_free (options->CLASS_BEGIN_USEPACKAGE.o.string);
+      if (SvOK (value))
+        options->CLASS_BEGIN_USEPACKAGE.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->CLASS_BEGIN_USEPACKAGE.o.string = 0;
+    }
+  else if (!strcmp (key, "COPIABLE_LINKS"))
+    {
+      if (force <= 0 && options->COPIABLE_LINKS.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->COPIABLE_LINKS.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "COPIABLE_LINKS", SvPVutf8_nolen (value));
+              options->COPIABLE_LINKS.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->COPIABLE_LINKS.o.integer = -1;
+    }
+  else if (!strcmp (key, "CHAPTER_HEADER_LEVEL"))
+    {
+      if (force <= 0 && options->CHAPTER_HEADER_LEVEL.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->CHAPTER_HEADER_LEVEL.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "CHAPTER_HEADER_LEVEL", SvPVutf8_nolen (value));
+              options->CHAPTER_HEADER_LEVEL.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->CHAPTER_HEADER_LEVEL.o.integer = -1;
+    }
+  else if (!strcmp (key, "CHECK_HTMLXREF"))
+    {
+      if (force <= 0 && options->CHECK_HTMLXREF.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->CHECK_HTMLXREF.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "CHECK_HTMLXREF", SvPVutf8_nolen (value));
+              options->CHECK_HTMLXREF.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->CHECK_HTMLXREF.o.integer = -1;
+    }
+  else if (!strcmp (key, "CLOSE_DOUBLE_QUOTE_SYMBOL"))
+    {
+      if (force <= 0 && options->CLOSE_DOUBLE_QUOTE_SYMBOL.configured > 0)
+        return -1;
+
+      non_perl_free (options->CLOSE_DOUBLE_QUOTE_SYMBOL.o.string);
+      if (SvOK (value))
+        options->CLOSE_DOUBLE_QUOTE_SYMBOL.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->CLOSE_DOUBLE_QUOTE_SYMBOL.o.string = 0;
+    }
+  else if (!strcmp (key, "CLOSE_QUOTE_SYMBOL"))
+    {
+      if (force <= 0 && options->CLOSE_QUOTE_SYMBOL.configured > 0)
+        return -1;
+
+      non_perl_free (options->CLOSE_QUOTE_SYMBOL.o.string);
+      if (SvOK (value))
+        options->CLOSE_QUOTE_SYMBOL.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->CLOSE_QUOTE_SYMBOL.o.string = 0;
+    }
+  else if (!strcmp (key, "COLLATION_LANGUAGE"))
+    {
+      if (force <= 0 && options->COLLATION_LANGUAGE.configured > 0)
+        return -1;
+
+      non_perl_free (options->COLLATION_LANGUAGE.o.string);
+      if (SvOK (value))
+        options->COLLATION_LANGUAGE.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->COLLATION_LANGUAGE.o.string = 0;
+    }
+  else if (!strcmp (key, "COMMAND_LINE_ENCODING"))
+    {
+      if (force <= 0 && options->COMMAND_LINE_ENCODING.configured > 0)
+        return -1;
+
+      non_perl_free (options->COMMAND_LINE_ENCODING.o.string);
+      if (SvOK (value))
+        options->COMMAND_LINE_ENCODING.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->COMMAND_LINE_ENCODING.o.string = 0;
+    }
+  else if (!strcmp (key, "INDENTED_BLOCK_COMMANDS_IN_TABLE"))
+    {
+      if (force <= 0 && options->INDENTED_BLOCK_COMMANDS_IN_TABLE.configured > 
0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->INDENTED_BLOCK_COMMANDS_IN_TABLE.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "INDENTED_BLOCK_COMMANDS_IN_TABLE", SvPVutf8_nolen 
(value));
+              options->INDENTED_BLOCK_COMMANDS_IN_TABLE.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->INDENTED_BLOCK_COMMANDS_IN_TABLE.o.integer = -1;
+    }
+  else if (!strcmp (key, "CONTENTS_OUTPUT_LOCATION"))
+    {
+      if (force <= 0 && options->CONTENTS_OUTPUT_LOCATION.configured > 0)
+        return -1;
+
+      non_perl_free (options->CONTENTS_OUTPUT_LOCATION.o.string);
+      if (SvOK (value))
+        options->CONTENTS_OUTPUT_LOCATION.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->CONTENTS_OUTPUT_LOCATION.o.string = 0;
+    }
+  else if (!strcmp (key, "CONVERT_TO_LATEX_IN_MATH"))
+    {
+      if (force <= 0 && options->CONVERT_TO_LATEX_IN_MATH.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->CONVERT_TO_LATEX_IN_MATH.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "CONVERT_TO_LATEX_IN_MATH", SvPVutf8_nolen (value));
+              options->CONVERT_TO_LATEX_IN_MATH.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->CONVERT_TO_LATEX_IN_MATH.o.integer = -1;
+    }
+  else if (!strcmp (key, "DATE_IN_HEADER"))
+    {
+      if (force <= 0 && options->DATE_IN_HEADER.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->DATE_IN_HEADER.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "DATE_IN_HEADER", SvPVutf8_nolen (value));
+              options->DATE_IN_HEADER.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->DATE_IN_HEADER.o.integer = -1;
+    }
+  else if (!strcmp (key, "DEFAULT_RULE"))
+    {
+      if (force <= 0 && options->DEFAULT_RULE.configured > 0)
+        return -1;
+
+      non_perl_free (options->DEFAULT_RULE.o.string);
+      if (SvOK (value))
+        options->DEFAULT_RULE.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->DEFAULT_RULE.o.string = 0;
+    }
+  else if (!strcmp (key, "DEF_TABLE"))
+    {
+      if (force <= 0 && options->DEF_TABLE.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->DEF_TABLE.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "DEF_TABLE", SvPVutf8_nolen (value));
+              options->DEF_TABLE.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->DEF_TABLE.o.integer = -1;
+    }
+  else if (!strcmp (key, "DO_ABOUT"))
+    {
+      if (force <= 0 && options->DO_ABOUT.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->DO_ABOUT.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "DO_ABOUT", SvPVutf8_nolen (value));
+              options->DO_ABOUT.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->DO_ABOUT.o.integer = -1;
+    }
+  else if (!strcmp (key, "DOCTYPE"))
+    {
+      if (force <= 0 && options->DOCTYPE.configured > 0)
+        return -1;
+
+      non_perl_free (options->DOCTYPE.o.string);
+      if (SvOK (value))
+        options->DOCTYPE.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->DOCTYPE.o.string = 0;
+    }
+  else if (!strcmp (key, "DOCUMENTLANGUAGE_COLLATION"))
+    {
+      if (force <= 0 && options->DOCUMENTLANGUAGE_COLLATION.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->DOCUMENTLANGUAGE_COLLATION.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "DOCUMENTLANGUAGE_COLLATION", SvPVutf8_nolen (value));
+              options->DOCUMENTLANGUAGE_COLLATION.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->DOCUMENTLANGUAGE_COLLATION.o.integer = -1;
+    }
+  else if (!strcmp (key, "END_USEPACKAGE"))
+    {
+      if (force <= 0 && options->END_USEPACKAGE.configured > 0)
+        return -1;
+
+      non_perl_free (options->END_USEPACKAGE.o.string);
+      if (SvOK (value))
+        options->END_USEPACKAGE.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->END_USEPACKAGE.o.string = 0;
+    }
+  else if (!strcmp (key, "EPUB_CREATE_CONTAINER_FILE"))
+    {
+      if (force <= 0 && options->EPUB_CREATE_CONTAINER_FILE.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->EPUB_CREATE_CONTAINER_FILE.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "EPUB_CREATE_CONTAINER_FILE", SvPVutf8_nolen (value));
+              options->EPUB_CREATE_CONTAINER_FILE.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->EPUB_CREATE_CONTAINER_FILE.o.integer = -1;
+    }
+  else if (!strcmp (key, "EPUB_KEEP_CONTAINER_FOLDER"))
+    {
+      if (force <= 0 && options->EPUB_KEEP_CONTAINER_FOLDER.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->EPUB_KEEP_CONTAINER_FOLDER.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "EPUB_KEEP_CONTAINER_FOLDER", SvPVutf8_nolen (value));
+              options->EPUB_KEEP_CONTAINER_FOLDER.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->EPUB_KEEP_CONTAINER_FOLDER.o.integer = -1;
+    }
+  else if (!strcmp (key, "EXTENSION"))
+    {
+      if (force <= 0 && options->EXTENSION.configured > 0)
+        return -1;
+
+      non_perl_free (options->EXTENSION.o.string);
+      if (SvOK (value))
+        options->EXTENSION.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->EXTENSION.o.string = 0;
+    }
+  else if (!strcmp (key, "EXTERNAL_CROSSREF_EXTENSION"))
+    {
+      if (force <= 0 && options->EXTERNAL_CROSSREF_EXTENSION.configured > 0)
+        return -1;
+
+      non_perl_free (options->EXTERNAL_CROSSREF_EXTENSION.o.string);
+      if (SvOK (value))
+        options->EXTERNAL_CROSSREF_EXTENSION.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->EXTERNAL_CROSSREF_EXTENSION.o.string = 0;
+    }
+  else if (!strcmp (key, "EXTERNAL_CROSSREF_SPLIT"))
+    {
+      if (force <= 0 && options->EXTERNAL_CROSSREF_SPLIT.configured > 0)
+        return -1;
+
+      non_perl_free (options->EXTERNAL_CROSSREF_SPLIT.o.string);
+      if (SvOK (value))
+        options->EXTERNAL_CROSSREF_SPLIT.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->EXTERNAL_CROSSREF_SPLIT.o.string = 0;
+    }
+  else if (!strcmp (key, "EXTERNAL_DIR"))
+    {
+      if (force <= 0 && options->EXTERNAL_DIR.configured > 0)
+        return -1;
+
+      non_perl_free (options->EXTERNAL_DIR.o.string);
+      if (SvOK (value))
+        options->EXTERNAL_DIR.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->EXTERNAL_DIR.o.string = 0;
+    }
+  else if (!strcmp (key, "EXTRA_HEAD"))
+    {
+      if (force <= 0 && options->EXTRA_HEAD.configured > 0)
+        return -1;
+
+      non_perl_free (options->EXTRA_HEAD.o.string);
+      if (SvOK (value))
+        options->EXTRA_HEAD.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->EXTRA_HEAD.o.string = 0;
+    }
+  else if (!strcmp (key, "FOOTNOTE_END_HEADER_LEVEL"))
+    {
+      if (force <= 0 && options->FOOTNOTE_END_HEADER_LEVEL.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->FOOTNOTE_END_HEADER_LEVEL.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "FOOTNOTE_END_HEADER_LEVEL", SvPVutf8_nolen (value));
+              options->FOOTNOTE_END_HEADER_LEVEL.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->FOOTNOTE_END_HEADER_LEVEL.o.integer = -1;
+    }
+  else if (!strcmp (key, "FOOTNOTE_SEPARATE_HEADER_LEVEL"))
+    {
+      if (force <= 0 && options->FOOTNOTE_SEPARATE_HEADER_LEVEL.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->FOOTNOTE_SEPARATE_HEADER_LEVEL.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "FOOTNOTE_SEPARATE_HEADER_LEVEL", SvPVutf8_nolen 
(value));
+              options->FOOTNOTE_SEPARATE_HEADER_LEVEL.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->FOOTNOTE_SEPARATE_HEADER_LEVEL.o.integer = -1;
+    }
+  else if (!strcmp (key, "HEADER_IN_TABLE"))
+    {
+      if (force <= 0 && options->HEADER_IN_TABLE.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->HEADER_IN_TABLE.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "HEADER_IN_TABLE", SvPVutf8_nolen (value));
+              options->HEADER_IN_TABLE.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->HEADER_IN_TABLE.o.integer = -1;
+    }
+  else if (!strcmp (key, "HIGHLIGHT_SYNTAX"))
+    {
+      if (force <= 0 && options->HIGHLIGHT_SYNTAX.configured > 0)
+        return -1;
+
+      non_perl_free (options->HIGHLIGHT_SYNTAX.o.string);
+      if (SvOK (value))
+        options->HIGHLIGHT_SYNTAX.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->HIGHLIGHT_SYNTAX.o.string = 0;
+    }
+  else if (!strcmp (key, "HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE"))
+    {
+      if (force <= 0 && options->HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE.configured 
> 0)
+        return -1;
+
+      non_perl_free (options->HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE.o.string);
+      if (SvOK (value))
+        options->HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE.o.string = 0;
+    }
+  else if (!strcmp (key, "HTML_MATH"))
+    {
+      if (force <= 0 && options->HTML_MATH.configured > 0)
+        return -1;
+
+      non_perl_free (options->HTML_MATH.o.string);
+      if (SvOK (value))
+        options->HTML_MATH.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->HTML_MATH.o.string = 0;
+    }
+  else if (!strcmp (key, "HTML_ROOT_ELEMENT_ATTRIBUTES"))
+    {
+      if (force <= 0 && options->HTML_ROOT_ELEMENT_ATTRIBUTES.configured > 0)
+        return -1;
+
+      non_perl_free (options->HTML_ROOT_ELEMENT_ATTRIBUTES.o.string);
+      if (SvOK (value))
+        options->HTML_ROOT_ELEMENT_ATTRIBUTES.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->HTML_ROOT_ELEMENT_ATTRIBUTES.o.string = 0;
+    }
+  else if (!strcmp (key, "HTMLXREF_FILE"))
+    {
+      if (force <= 0 && options->HTMLXREF_FILE.configured > 0)
+        return -1;
+
+      non_perl_free (options->HTMLXREF_FILE.o.string);
+      if (SvOK (value))
+        options->HTMLXREF_FILE.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->HTMLXREF_FILE.o.string = 0;
+    }
+  else if (!strcmp (key, "HTMLXREF_MODE"))
+    {
+      if (force <= 0 && options->HTMLXREF_MODE.configured > 0)
+        return -1;
+
+      non_perl_free (options->HTMLXREF_MODE.o.string);
+      if (SvOK (value))
+        options->HTMLXREF_MODE.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->HTMLXREF_MODE.o.string = 0;
+    }
+  else if (!strcmp (key, "ICONS"))
+    {
+      if (force <= 0 && options->ICONS.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->ICONS.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "ICONS", SvPVutf8_nolen (value));
+              options->ICONS.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->ICONS.o.integer = -1;
+    }
+  else if (!strcmp (key, "INDEX_ENTRY_COLON"))
+    {
+      if (force <= 0 && options->INDEX_ENTRY_COLON.configured > 0)
+        return -1;
+
+      non_perl_free (options->INDEX_ENTRY_COLON.o.string);
+      if (SvOK (value))
+        options->INDEX_ENTRY_COLON.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->INDEX_ENTRY_COLON.o.string = 0;
+    }
+  else if (!strcmp (key, "INDEX_SPECIAL_CHARS_WARNING"))
+    {
+      if (force <= 0 && options->INDEX_SPECIAL_CHARS_WARNING.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->INDEX_SPECIAL_CHARS_WARNING.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "INDEX_SPECIAL_CHARS_WARNING", SvPVutf8_nolen (value));
+              options->INDEX_SPECIAL_CHARS_WARNING.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->INDEX_SPECIAL_CHARS_WARNING.o.integer = -1;
+    }
+  else if (!strcmp (key, "INFO_JS_DIR"))
+    {
+      if (force <= 0 && options->INFO_JS_DIR.configured > 0)
+        return -1;
+
+      non_perl_free (options->INFO_JS_DIR.o.string);
+      if (SvOK (value))
+        options->INFO_JS_DIR.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->INFO_JS_DIR.o.string = 0;
+    }
+  else if (!strcmp (key, "INFO_SPECIAL_CHARS_QUOTE"))
+    {
+      if (force <= 0 && options->INFO_SPECIAL_CHARS_QUOTE.configured > 0)
+        return -1;
+
+      non_perl_free (options->INFO_SPECIAL_CHARS_QUOTE.o.string);
+      if (SvOK (value))
+        options->INFO_SPECIAL_CHARS_QUOTE.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->INFO_SPECIAL_CHARS_QUOTE.o.string = 0;
+    }
+  else if (!strcmp (key, "INFO_SPECIAL_CHARS_WARNING"))
+    {
+      if (force <= 0 && options->INFO_SPECIAL_CHARS_WARNING.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->INFO_SPECIAL_CHARS_WARNING.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "INFO_SPECIAL_CHARS_WARNING", SvPVutf8_nolen (value));
+              options->INFO_SPECIAL_CHARS_WARNING.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->INFO_SPECIAL_CHARS_WARNING.o.integer = -1;
+    }
+  else if (!strcmp (key, "IGNORE_REF_TO_TOP_NODE_UP"))
+    {
+      if (force <= 0 && options->IGNORE_REF_TO_TOP_NODE_UP.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->IGNORE_REF_TO_TOP_NODE_UP.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "IGNORE_REF_TO_TOP_NODE_UP", SvPVutf8_nolen (value));
+              options->IGNORE_REF_TO_TOP_NODE_UP.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->IGNORE_REF_TO_TOP_NODE_UP.o.integer = -1;
+    }
+  else if (!strcmp (key, "INLINE_CSS_STYLE"))
+    {
+      if (force <= 0 && options->INLINE_CSS_STYLE.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->INLINE_CSS_STYLE.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "INLINE_CSS_STYLE", SvPVutf8_nolen (value));
+              options->INLINE_CSS_STYLE.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->INLINE_CSS_STYLE.o.integer = -1;
+    }
+  else if (!strcmp (key, "INPUT_FILE_NAME_ENCODING"))
+    {
+      if (force <= 0 && options->INPUT_FILE_NAME_ENCODING.configured > 0)
+        return -1;
+
+      non_perl_free (options->INPUT_FILE_NAME_ENCODING.o.string);
+      if (SvOK (value))
+        options->INPUT_FILE_NAME_ENCODING.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->INPUT_FILE_NAME_ENCODING.o.string = 0;
+    }
+  else if (!strcmp (key, "JS_WEBLABELS"))
+    {
+      if (force <= 0 && options->JS_WEBLABELS.configured > 0)
+        return -1;
+
+      non_perl_free (options->JS_WEBLABELS.o.string);
+      if (SvOK (value))
+        options->JS_WEBLABELS.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->JS_WEBLABELS.o.string = 0;
+    }
+  else if (!strcmp (key, "JS_WEBLABELS_FILE"))
+    {
+      if (force <= 0 && options->JS_WEBLABELS_FILE.configured > 0)
+        return -1;
+
+      non_perl_free (options->JS_WEBLABELS_FILE.o.string);
+      if (SvOK (value))
+        options->JS_WEBLABELS_FILE.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->JS_WEBLABELS_FILE.o.string = 0;
+    }
+  else if (!strcmp (key, "LATEX_FLOATS_FILE_EXTENSION"))
+    {
+      if (force <= 0 && options->LATEX_FLOATS_FILE_EXTENSION.configured > 0)
+        return -1;
+
+      non_perl_free (options->LATEX_FLOATS_FILE_EXTENSION.o.string);
+      if (SvOK (value))
+        options->LATEX_FLOATS_FILE_EXTENSION.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->LATEX_FLOATS_FILE_EXTENSION.o.string = 0;
+    }
+  else if (!strcmp (key, "LOCALE_ENCODING"))
+    {
+      if (force <= 0 && options->LOCALE_ENCODING.configured > 0)
+        return -1;
+
+      non_perl_free (options->LOCALE_ENCODING.o.string);
+      if (SvOK (value))
+        options->LOCALE_ENCODING.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->LOCALE_ENCODING.o.string = 0;
+    }
+  else if (!strcmp (key, "L2H_CLEAN"))
+    {
+      if (force <= 0 && options->L2H_CLEAN.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->L2H_CLEAN.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "L2H_CLEAN", SvPVutf8_nolen (value));
+              options->L2H_CLEAN.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->L2H_CLEAN.o.integer = -1;
+    }
+  else if (!strcmp (key, "L2H_FILE"))
+    {
+      if (force <= 0 && options->L2H_FILE.configured > 0)
+        return -1;
+
+      non_perl_free (options->L2H_FILE.o.string);
+      if (SvOK (value))
+        options->L2H_FILE.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->L2H_FILE.o.string = 0;
+    }
+  else if (!strcmp (key, "L2H_HTML_VERSION"))
+    {
+      if (force <= 0 && options->L2H_HTML_VERSION.configured > 0)
+        return -1;
+
+      non_perl_free (options->L2H_HTML_VERSION.o.string);
+      if (SvOK (value))
+        options->L2H_HTML_VERSION.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->L2H_HTML_VERSION.o.string = 0;
+    }
+  else if (!strcmp (key, "L2H_L2H"))
+    {
+      if (force <= 0 && options->L2H_L2H.configured > 0)
+        return -1;
+
+      non_perl_free (options->L2H_L2H.o.string);
+      if (SvOK (value))
+        options->L2H_L2H.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->L2H_L2H.o.string = 0;
+    }
+  else if (!strcmp (key, "L2H_SKIP"))
+    {
+      if (force <= 0 && options->L2H_SKIP.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->L2H_SKIP.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "L2H_SKIP", SvPVutf8_nolen (value));
+              options->L2H_SKIP.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->L2H_SKIP.o.integer = -1;
+    }
+  else if (!strcmp (key, "L2H_TMP"))
+    {
+      if (force <= 0 && options->L2H_TMP.configured > 0)
+        return -1;
+
+      non_perl_free (options->L2H_TMP.o.string);
+      if (SvOK (value))
+        options->L2H_TMP.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->L2H_TMP.o.string = 0;
+    }
+  else if (!strcmp (key, "MATHJAX_CONFIGURATION"))
+    {
+      if (force <= 0 && options->MATHJAX_CONFIGURATION.configured > 0)
+        return -1;
+
+      non_perl_free (options->MATHJAX_CONFIGURATION.o.string);
+      if (SvOK (value))
+        options->MATHJAX_CONFIGURATION.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->MATHJAX_CONFIGURATION.o.string = 0;
+    }
+  else if (!strcmp (key, "MATHJAX_SCRIPT"))
+    {
+      if (force <= 0 && options->MATHJAX_SCRIPT.configured > 0)
+        return -1;
+
+      non_perl_free (options->MATHJAX_SCRIPT.o.string);
+      if (SvOK (value))
+        options->MATHJAX_SCRIPT.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->MATHJAX_SCRIPT.o.string = 0;
+    }
+  else if (!strcmp (key, "MATHJAX_SOURCE"))
+    {
+      if (force <= 0 && options->MATHJAX_SOURCE.configured > 0)
+        return -1;
+
+      non_perl_free (options->MATHJAX_SOURCE.o.string);
+      if (SvOK (value))
+        options->MATHJAX_SOURCE.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->MATHJAX_SOURCE.o.string = 0;
+    }
+  else if (!strcmp (key, "MAX_HEADER_LEVEL"))
+    {
+      if (force <= 0 && options->MAX_HEADER_LEVEL.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->MAX_HEADER_LEVEL.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "MAX_HEADER_LEVEL", SvPVutf8_nolen (value));
+              options->MAX_HEADER_LEVEL.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->MAX_HEADER_LEVEL.o.integer = -1;
+    }
+  else if (!strcmp (key, "MENU_ENTRY_COLON"))
+    {
+      if (force <= 0 && options->MENU_ENTRY_COLON.configured > 0)
+        return -1;
+
+      non_perl_free (options->MENU_ENTRY_COLON.o.string);
+      if (SvOK (value))
+        options->MENU_ENTRY_COLON.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->MENU_ENTRY_COLON.o.string = 0;
+    }
+  else if (!strcmp (key, "MENU_SYMBOL"))
+    {
+      if (force <= 0 && options->MENU_SYMBOL.configured > 0)
+        return -1;
+
+      non_perl_free (options->MENU_SYMBOL.o.string);
+      if (SvOK (value))
+        options->MENU_SYMBOL.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->MENU_SYMBOL.o.string = 0;
+    }
+  else if (!strcmp (key, "MESSAGE_ENCODING"))
+    {
+      if (force <= 0 && options->MESSAGE_ENCODING.configured > 0)
+        return -1;
+
+      non_perl_free (options->MESSAGE_ENCODING.o.string);
+      if (SvOK (value))
+        options->MESSAGE_ENCODING.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->MESSAGE_ENCODING.o.string = 0;
+    }
+  else if (!strcmp (key, "MONOLITHIC"))
+    {
+      if (force <= 0 && options->MONOLITHIC.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->MONOLITHIC.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "MONOLITHIC", SvPVutf8_nolen (value));
+              options->MONOLITHIC.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->MONOLITHIC.o.integer = -1;
+    }
+  else if (!strcmp (key, "NO_CSS"))
+    {
+      if (force <= 0 && options->NO_CSS.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->NO_CSS.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "NO_CSS", SvPVutf8_nolen (value));
+              options->NO_CSS.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->NO_CSS.o.integer = -1;
+    }
+  else if (!strcmp (key, "NO_NUMBER_FOOTNOTE_SYMBOL"))
+    {
+      if (force <= 0 && options->NO_NUMBER_FOOTNOTE_SYMBOL.configured > 0)
+        return -1;
+
+      non_perl_free (options->NO_NUMBER_FOOTNOTE_SYMBOL.o.string);
+      if (SvOK (value))
+        options->NO_NUMBER_FOOTNOTE_SYMBOL.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->NO_NUMBER_FOOTNOTE_SYMBOL.o.string = 0;
+    }
+  else if (!strcmp (key, "NO_CUSTOM_HTML_ATTRIBUTE"))
+    {
+      if (force <= 0 && options->NO_CUSTOM_HTML_ATTRIBUTE.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->NO_CUSTOM_HTML_ATTRIBUTE.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "NO_CUSTOM_HTML_ATTRIBUTE", SvPVutf8_nolen (value));
+              options->NO_CUSTOM_HTML_ATTRIBUTE.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->NO_CUSTOM_HTML_ATTRIBUTE.o.integer = -1;
+    }
+  else if (!strcmp (key, "NODE_NAME_IN_INDEX"))
+    {
+      if (force <= 0 && options->NODE_NAME_IN_INDEX.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->NODE_NAME_IN_INDEX.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "NODE_NAME_IN_INDEX", SvPVutf8_nolen (value));
+              options->NODE_NAME_IN_INDEX.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->NODE_NAME_IN_INDEX.o.integer = -1;
+    }
+  else if (!strcmp (key, "NODE_NAME_IN_MENU"))
+    {
+      if (force <= 0 && options->NODE_NAME_IN_MENU.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->NODE_NAME_IN_MENU.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "NODE_NAME_IN_MENU", SvPVutf8_nolen (value));
+              options->NODE_NAME_IN_MENU.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->NODE_NAME_IN_MENU.o.integer = -1;
+    }
+  else if (!strcmp (key, "NO_TOP_NODE_OUTPUT"))
+    {
+      if (force <= 0 && options->NO_TOP_NODE_OUTPUT.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->NO_TOP_NODE_OUTPUT.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "NO_TOP_NODE_OUTPUT", SvPVutf8_nolen (value));
+              options->NO_TOP_NODE_OUTPUT.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->NO_TOP_NODE_OUTPUT.o.integer = -1;
+    }
+  else if (!strcmp (key, "OPEN_DOUBLE_QUOTE_SYMBOL"))
+    {
+      if (force <= 0 && options->OPEN_DOUBLE_QUOTE_SYMBOL.configured > 0)
+        return -1;
+
+      non_perl_free (options->OPEN_DOUBLE_QUOTE_SYMBOL.o.string);
+      if (SvOK (value))
+        options->OPEN_DOUBLE_QUOTE_SYMBOL.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->OPEN_DOUBLE_QUOTE_SYMBOL.o.string = 0;
+    }
+  else if (!strcmp (key, "OPEN_QUOTE_SYMBOL"))
+    {
+      if (force <= 0 && options->OPEN_QUOTE_SYMBOL.configured > 0)
+        return -1;
+
+      non_perl_free (options->OPEN_QUOTE_SYMBOL.o.string);
+      if (SvOK (value))
+        options->OPEN_QUOTE_SYMBOL.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->OPEN_QUOTE_SYMBOL.o.string = 0;
+    }
+  else if (!strcmp (key, "OUTPUT_CHARACTERS"))
+    {
+      if (force <= 0 && options->OUTPUT_CHARACTERS.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->OUTPUT_CHARACTERS.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "OUTPUT_CHARACTERS", SvPVutf8_nolen (value));
+              options->OUTPUT_CHARACTERS.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->OUTPUT_CHARACTERS.o.integer = -1;
+    }
+  else if (!strcmp (key, "OUTPUT_ENCODING_NAME"))
+    {
+      if (force <= 0 && options->OUTPUT_ENCODING_NAME.configured > 0)
+        return -1;
+
+      non_perl_free (options->OUTPUT_ENCODING_NAME.o.string);
+      if (SvOK (value))
+        options->OUTPUT_ENCODING_NAME.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->OUTPUT_ENCODING_NAME.o.string = 0;
+    }
+  else if (!strcmp (key, "OUTPUT_FILE_NAME_ENCODING"))
+    {
+      if (force <= 0 && options->OUTPUT_FILE_NAME_ENCODING.configured > 0)
+        return -1;
+
+      non_perl_free (options->OUTPUT_FILE_NAME_ENCODING.o.string);
+      if (SvOK (value))
+        options->OUTPUT_FILE_NAME_ENCODING.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->OUTPUT_FILE_NAME_ENCODING.o.string = 0;
+    }
+  else if (!strcmp (key, "OUTPUT_PERL_ENCODING"))
+    {
+      if (force <= 0 && options->OUTPUT_PERL_ENCODING.configured > 0)
+        return -1;
+
+      non_perl_free (options->OUTPUT_PERL_ENCODING.o.string);
+      if (SvOK (value))
+        options->OUTPUT_PERL_ENCODING.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->OUTPUT_PERL_ENCODING.o.string = 0;
+    }
+  else if (!strcmp (key, "PACKAGE"))
+    {
+      if (force <= 0 && options->PACKAGE.configured > 0)
+        return -1;
+
+      non_perl_free (options->PACKAGE.o.string);
+      if (SvOK (value))
+        options->PACKAGE.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->PACKAGE.o.string = 0;
+    }
+  else if (!strcmp (key, "PACKAGE_AND_VERSION"))
+    {
+      if (force <= 0 && options->PACKAGE_AND_VERSION.configured > 0)
+        return -1;
+
+      non_perl_free (options->PACKAGE_AND_VERSION.o.string);
+      if (SvOK (value))
+        options->PACKAGE_AND_VERSION.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->PACKAGE_AND_VERSION.o.string = 0;
+    }
+  else if (!strcmp (key, "PACKAGE_NAME"))
+    {
+      if (force <= 0 && options->PACKAGE_NAME.configured > 0)
+        return -1;
+
+      non_perl_free (options->PACKAGE_NAME.o.string);
+      if (SvOK (value))
+        options->PACKAGE_NAME.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->PACKAGE_NAME.o.string = 0;
+    }
+  else if (!strcmp (key, "PACKAGE_URL"))
+    {
+      if (force <= 0 && options->PACKAGE_URL.configured > 0)
+        return -1;
+
+      non_perl_free (options->PACKAGE_URL.o.string);
+      if (SvOK (value))
+        options->PACKAGE_URL.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->PACKAGE_URL.o.string = 0;
+    }
+  else if (!strcmp (key, "PACKAGE_VERSION"))
+    {
+      if (force <= 0 && options->PACKAGE_VERSION.configured > 0)
+        return -1;
+
+      non_perl_free (options->PACKAGE_VERSION.o.string);
+      if (SvOK (value))
+        options->PACKAGE_VERSION.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->PACKAGE_VERSION.o.string = 0;
+    }
+  else if (!strcmp (key, "PRE_BODY_CLOSE"))
+    {
+      if (force <= 0 && options->PRE_BODY_CLOSE.configured > 0)
+        return -1;
+
+      non_perl_free (options->PRE_BODY_CLOSE.o.string);
+      if (SvOK (value))
+        options->PRE_BODY_CLOSE.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->PRE_BODY_CLOSE.o.string = 0;
+    }
+  else if (!strcmp (key, "PREFIX"))
+    {
+      if (force <= 0 && options->PREFIX.configured > 0)
+        return -1;
+
+      non_perl_free (options->PREFIX.o.string);
+      if (SvOK (value))
+        options->PREFIX.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->PREFIX.o.string = 0;
+    }
+  else if (!strcmp (key, "PROGRAM"))
+    {
+      if (force <= 0 && options->PROGRAM.configured > 0)
+        return -1;
+
+      non_perl_free (options->PROGRAM.o.string);
+      if (SvOK (value))
+        options->PROGRAM.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->PROGRAM.o.string = 0;
+    }
+  else if (!strcmp (key, "PROGRAM_NAME_IN_ABOUT"))
+    {
+      if (force <= 0 && options->PROGRAM_NAME_IN_ABOUT.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->PROGRAM_NAME_IN_ABOUT.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "PROGRAM_NAME_IN_ABOUT", SvPVutf8_nolen (value));
+              options->PROGRAM_NAME_IN_ABOUT.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->PROGRAM_NAME_IN_ABOUT.o.integer = -1;
+    }
+  else if (!strcmp (key, "PROGRAM_NAME_IN_FOOTER"))
+    {
+      if (force <= 0 && options->PROGRAM_NAME_IN_FOOTER.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->PROGRAM_NAME_IN_FOOTER.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "PROGRAM_NAME_IN_FOOTER", SvPVutf8_nolen (value));
+              options->PROGRAM_NAME_IN_FOOTER.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->PROGRAM_NAME_IN_FOOTER.o.integer = -1;
+    }
+  else if (!strcmp (key, "SECTION_NAME_IN_TITLE"))
+    {
+      if (force <= 0 && options->SECTION_NAME_IN_TITLE.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->SECTION_NAME_IN_TITLE.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "SECTION_NAME_IN_TITLE", SvPVutf8_nolen (value));
+              options->SECTION_NAME_IN_TITLE.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->SECTION_NAME_IN_TITLE.o.integer = -1;
+    }
+  else if (!strcmp (key, "SHORT_TOC_LINK_TO_TOC"))
+    {
+      if (force <= 0 && options->SHORT_TOC_LINK_TO_TOC.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->SHORT_TOC_LINK_TO_TOC.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "SHORT_TOC_LINK_TO_TOC", SvPVutf8_nolen (value));
+              options->SHORT_TOC_LINK_TO_TOC.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->SHORT_TOC_LINK_TO_TOC.o.integer = -1;
+    }
+  else if (!strcmp (key, "SHOW_TITLE"))
+    {
+      if (force <= 0 && options->SHOW_TITLE.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->SHOW_TITLE.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "SHOW_TITLE", SvPVutf8_nolen (value));
+              options->SHOW_TITLE.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->SHOW_TITLE.o.integer = -1;
+    }
+  else if (!strcmp (key, "T4H_LATEX_CONVERSION"))
+    {
+      if (force <= 0 && options->T4H_LATEX_CONVERSION.configured > 0)
+        return -1;
+
+      non_perl_free (options->T4H_LATEX_CONVERSION.o.string);
+      if (SvOK (value))
+        options->T4H_LATEX_CONVERSION.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->T4H_LATEX_CONVERSION.o.string = 0;
+    }
+  else if (!strcmp (key, "T4H_MATH_CONVERSION"))
+    {
+      if (force <= 0 && options->T4H_MATH_CONVERSION.configured > 0)
+        return -1;
+
+      non_perl_free (options->T4H_MATH_CONVERSION.o.string);
+      if (SvOK (value))
+        options->T4H_MATH_CONVERSION.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->T4H_MATH_CONVERSION.o.string = 0;
+    }
+  else if (!strcmp (key, "T4H_TEX_CONVERSION"))
+    {
+      if (force <= 0 && options->T4H_TEX_CONVERSION.configured > 0)
+        return -1;
+
+      non_perl_free (options->T4H_TEX_CONVERSION.o.string);
+      if (SvOK (value))
+        options->T4H_TEX_CONVERSION.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->T4H_TEX_CONVERSION.o.string = 0;
+    }
+  else if (!strcmp (key, "TEXI2HTML"))
+    {
+      if (force <= 0 && options->TEXI2HTML.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->TEXI2HTML.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "TEXI2HTML", SvPVutf8_nolen (value));
+              options->TEXI2HTML.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->TEXI2HTML.o.integer = -1;
+    }
+  else if (!strcmp (key, "TEXINFO_OUTPUT_FORMAT"))
+    {
+      if (force <= 0 && options->TEXINFO_OUTPUT_FORMAT.configured > 0)
+        return -1;
+
+      non_perl_free (options->TEXINFO_OUTPUT_FORMAT.o.string);
+      if (SvOK (value))
+        options->TEXINFO_OUTPUT_FORMAT.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->TEXINFO_OUTPUT_FORMAT.o.string = 0;
+    }
+  else if (!strcmp (key, "TXI_MARKUP_NO_SECTION_EXTENT"))
+    {
+      if (force <= 0 && options->TXI_MARKUP_NO_SECTION_EXTENT.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->TXI_MARKUP_NO_SECTION_EXTENT.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "TXI_MARKUP_NO_SECTION_EXTENT", SvPVutf8_nolen (value));
+              options->TXI_MARKUP_NO_SECTION_EXTENT.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->TXI_MARKUP_NO_SECTION_EXTENT.o.integer = -1;
+    }
+  else if (!strcmp (key, "TOC_LINKS"))
+    {
+      if (force <= 0 && options->TOC_LINKS.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->TOC_LINKS.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "TOC_LINKS", SvPVutf8_nolen (value));
+              options->TOC_LINKS.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->TOC_LINKS.o.integer = -1;
+    }
+  else if (!strcmp (key, "TOP_FILE"))
+    {
+      if (force <= 0 && options->TOP_FILE.configured > 0)
+        return -1;
+
+      non_perl_free (options->TOP_FILE.o.string);
+      if (SvOK (value))
+        options->TOP_FILE.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->TOP_FILE.o.string = 0;
+    }
+  else if (!strcmp (key, "TOP_NODE_FILE_TARGET"))
+    {
+      if (force <= 0 && options->TOP_NODE_FILE_TARGET.configured > 0)
+        return -1;
+
+      non_perl_free (options->TOP_NODE_FILE_TARGET.o.string);
+      if (SvOK (value))
+        options->TOP_NODE_FILE_TARGET.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->TOP_NODE_FILE_TARGET.o.string = 0;
+    }
+  else if (!strcmp (key, "TOP_NODE_UP_URL"))
+    {
+      if (force <= 0 && options->TOP_NODE_UP_URL.configured > 0)
+        return -1;
+
+      non_perl_free (options->TOP_NODE_UP_URL.o.string);
+      if (SvOK (value))
+        options->TOP_NODE_UP_URL.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->TOP_NODE_UP_URL.o.string = 0;
+    }
+  else if (!strcmp (key, "USE_ACCESSKEY"))
+    {
+      if (force <= 0 && options->USE_ACCESSKEY.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->USE_ACCESSKEY.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "USE_ACCESSKEY", SvPVutf8_nolen (value));
+              options->USE_ACCESSKEY.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->USE_ACCESSKEY.o.integer = -1;
+    }
+  else if (!strcmp (key, "USE_ISO"))
+    {
+      if (force <= 0 && options->USE_ISO.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->USE_ISO.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "USE_ISO", SvPVutf8_nolen (value));
+              options->USE_ISO.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->USE_ISO.o.integer = -1;
+    }
+  else if (!strcmp (key, "USE_LINKS"))
+    {
+      if (force <= 0 && options->USE_LINKS.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->USE_LINKS.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "USE_LINKS", SvPVutf8_nolen (value));
+              options->USE_LINKS.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->USE_LINKS.o.integer = -1;
+    }
+  else if (!strcmp (key, "USE_NEXT_HEADING_FOR_LONE_NODE"))
+    {
+      if (force <= 0 && options->USE_NEXT_HEADING_FOR_LONE_NODE.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->USE_NEXT_HEADING_FOR_LONE_NODE.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "USE_NEXT_HEADING_FOR_LONE_NODE", SvPVutf8_nolen 
(value));
+              options->USE_NEXT_HEADING_FOR_LONE_NODE.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->USE_NEXT_HEADING_FOR_LONE_NODE.o.integer = -1;
+    }
+  else if (!strcmp (key, "USE_NODES"))
+    {
+      if (force <= 0 && options->USE_NODES.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->USE_NODES.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "USE_NODES", SvPVutf8_nolen (value));
+              options->USE_NODES.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->USE_NODES.o.integer = -1;
+    }
+  else if (!strcmp (key, "USE_NODE_DIRECTIONS"))
+    {
+      if (force <= 0 && options->USE_NODE_DIRECTIONS.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->USE_NODE_DIRECTIONS.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "USE_NODE_DIRECTIONS", SvPVutf8_nolen (value));
+              options->USE_NODE_DIRECTIONS.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->USE_NODE_DIRECTIONS.o.integer = -1;
+    }
+  else if (!strcmp (key, "USE_NUMERIC_ENTITY"))
+    {
+      if (force <= 0 && options->USE_NUMERIC_ENTITY.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->USE_NUMERIC_ENTITY.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "USE_NUMERIC_ENTITY", SvPVutf8_nolen (value));
+              options->USE_NUMERIC_ENTITY.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->USE_NUMERIC_ENTITY.o.integer = -1;
+    }
+  else if (!strcmp (key, "USE_REL_REV"))
+    {
+      if (force <= 0 && options->USE_REL_REV.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->USE_REL_REV.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "USE_REL_REV", SvPVutf8_nolen (value));
+              options->USE_REL_REV.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->USE_REL_REV.o.integer = -1;
+    }
+  else if (!strcmp (key, "USE_SETFILENAME_EXTENSION"))
+    {
+      if (force <= 0 && options->USE_SETFILENAME_EXTENSION.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->USE_SETFILENAME_EXTENSION.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "USE_SETFILENAME_EXTENSION", SvPVutf8_nolen (value));
+              options->USE_SETFILENAME_EXTENSION.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->USE_SETFILENAME_EXTENSION.o.integer = -1;
+    }
+  else if (!strcmp (key, "USE_TITLEPAGE_FOR_TITLE"))
+    {
+      if (force <= 0 && options->USE_TITLEPAGE_FOR_TITLE.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->USE_TITLEPAGE_FOR_TITLE.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "USE_TITLEPAGE_FOR_TITLE", SvPVutf8_nolen (value));
+              options->USE_TITLEPAGE_FOR_TITLE.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->USE_TITLEPAGE_FOR_TITLE.o.integer = -1;
+    }
+  else if (!strcmp (key, "USE_UNIDECODE"))
+    {
+      if (force <= 0 && options->USE_UNIDECODE.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->USE_UNIDECODE.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "USE_UNIDECODE", SvPVutf8_nolen (value));
+              options->USE_UNIDECODE.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->USE_UNIDECODE.o.integer = -1;
+    }
+  else if (!strcmp (key, "USE_XML_SYNTAX"))
+    {
+      if (force <= 0 && options->USE_XML_SYNTAX.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->USE_XML_SYNTAX.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "USE_XML_SYNTAX", SvPVutf8_nolen (value));
+              options->USE_XML_SYNTAX.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->USE_XML_SYNTAX.o.integer = -1;
+    }
+  else if (!strcmp (key, "VERTICAL_HEAD_NAVIGATION"))
+    {
+      if (force <= 0 && options->VERTICAL_HEAD_NAVIGATION.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->VERTICAL_HEAD_NAVIGATION.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "VERTICAL_HEAD_NAVIGATION", SvPVutf8_nolen (value));
+              options->VERTICAL_HEAD_NAVIGATION.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->VERTICAL_HEAD_NAVIGATION.o.integer = -1;
+    }
+  else if (!strcmp (key, "WORDS_IN_PAGE"))
+    {
+      if (force <= 0 && options->WORDS_IN_PAGE.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->WORDS_IN_PAGE.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "WORDS_IN_PAGE", SvPVutf8_nolen (value));
+              options->WORDS_IN_PAGE.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->WORDS_IN_PAGE.o.integer = -1;
+    }
+  else if (!strcmp (key, "XREF_USE_FLOAT_LABEL"))
+    {
+      if (force <= 0 && options->XREF_USE_FLOAT_LABEL.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->XREF_USE_FLOAT_LABEL.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "XREF_USE_FLOAT_LABEL", SvPVutf8_nolen (value));
+              options->XREF_USE_FLOAT_LABEL.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->XREF_USE_FLOAT_LABEL.o.integer = -1;
+    }
+  else if (!strcmp (key, "XREF_USE_NODE_NAME_ARG"))
+    {
+      if (force <= 0 && options->XREF_USE_NODE_NAME_ARG.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->XREF_USE_NODE_NAME_ARG.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "XREF_USE_NODE_NAME_ARG", SvPVutf8_nolen (value));
+              options->XREF_USE_NODE_NAME_ARG.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->XREF_USE_NODE_NAME_ARG.o.integer = -1;
+    }
+  else if (!strcmp (key, "XS_EXTERNAL_CONVERSION"))
+    {
+      if (force <= 0 && options->XS_EXTERNAL_CONVERSION.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->XS_EXTERNAL_CONVERSION.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "XS_EXTERNAL_CONVERSION", SvPVutf8_nolen (value));
+              options->XS_EXTERNAL_CONVERSION.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->XS_EXTERNAL_CONVERSION.o.integer = -1;
+    }
+  else if (!strcmp (key, "XS_EXTERNAL_FORMATTING"))
+    {
+      if (force <= 0 && options->XS_EXTERNAL_FORMATTING.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->XS_EXTERNAL_FORMATTING.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "XS_EXTERNAL_FORMATTING", SvPVutf8_nolen (value));
+              options->XS_EXTERNAL_FORMATTING.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->XS_EXTERNAL_FORMATTING.o.integer = -1;
+    }
+  else if (!strcmp (key, "XS_STRXFRM_COLLATION_LOCALE"))
+    {
+      if (force <= 0 && options->XS_STRXFRM_COLLATION_LOCALE.configured > 0)
+        return -1;
+
+      non_perl_free (options->XS_STRXFRM_COLLATION_LOCALE.o.string);
+      if (SvOK (value))
+        options->XS_STRXFRM_COLLATION_LOCALE.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->XS_STRXFRM_COLLATION_LOCALE.o.string = 0;
+    }
+  else if (!strcmp (key, "_INLINE_STYLE_WIDTH"))
+    {
+      if (force <= 0 && options->_INLINE_STYLE_WIDTH.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->_INLINE_STYLE_WIDTH.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "_INLINE_STYLE_WIDTH", SvPVutf8_nolen (value));
+              options->_INLINE_STYLE_WIDTH.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->_INLINE_STYLE_WIDTH.o.integer = -1;
+    }
+
+/* converter_other */
+
+  else if (!strcmp (key, "LINKS_BUTTONS"))
+    {
+      if (force <= 0 && options->LINKS_BUTTONS.configured > 0)
+        return -1;
+
+      if (options->LINKS_BUTTONS.o.buttons)
+        {
+          options->BIT_user_function_number -= 
options->LINKS_BUTTONS.o.buttons->BIT_user_function_number;
+          html_free_button_specification_list 
(options->LINKS_BUTTONS.o.buttons);
+        }
+
+      options->LINKS_BUTTONS.o.buttons = html_get_button_specification_list 
(converter, value);
+      if (options->LINKS_BUTTONS.o.buttons)
+        options->BIT_user_function_number += 
options->LINKS_BUTTONS.o.buttons->BIT_user_function_number;
+    }
+  else if (!strcmp (key, "TOP_BUTTONS"))
+    {
+      if (force <= 0 && options->TOP_BUTTONS.configured > 0)
+        return -1;
+
+      if (options->TOP_BUTTONS.o.buttons)
+        {
+          options->BIT_user_function_number -= 
options->TOP_BUTTONS.o.buttons->BIT_user_function_number;
+          html_free_button_specification_list (options->TOP_BUTTONS.o.buttons);
+        }
+
+      options->TOP_BUTTONS.o.buttons = html_get_button_specification_list 
(converter, value);
+      if (options->TOP_BUTTONS.o.buttons)
+        options->BIT_user_function_number += 
options->TOP_BUTTONS.o.buttons->BIT_user_function_number;
+    }
+  else if (!strcmp (key, "TOP_FOOTER_BUTTONS"))
+    {
+      if (force <= 0 && options->TOP_FOOTER_BUTTONS.configured > 0)
+        return -1;
+
+      if (options->TOP_FOOTER_BUTTONS.o.buttons)
+        {
+          options->BIT_user_function_number -= 
options->TOP_FOOTER_BUTTONS.o.buttons->BIT_user_function_number;
+          html_free_button_specification_list 
(options->TOP_FOOTER_BUTTONS.o.buttons);
+        }
+
+      options->TOP_FOOTER_BUTTONS.o.buttons = 
html_get_button_specification_list (converter, value);
+      if (options->TOP_FOOTER_BUTTONS.o.buttons)
+        options->BIT_user_function_number += 
options->TOP_FOOTER_BUTTONS.o.buttons->BIT_user_function_number;
+    }
+  else if (!strcmp (key, "SECTION_BUTTONS"))
+    {
+      if (force <= 0 && options->SECTION_BUTTONS.configured > 0)
+        return -1;
+
+      if (options->SECTION_BUTTONS.o.buttons)
+        {
+          options->BIT_user_function_number -= 
options->SECTION_BUTTONS.o.buttons->BIT_user_function_number;
+          html_free_button_specification_list 
(options->SECTION_BUTTONS.o.buttons);
+        }
+
+      options->SECTION_BUTTONS.o.buttons = html_get_button_specification_list 
(converter, value);
+      if (options->SECTION_BUTTONS.o.buttons)
+        options->BIT_user_function_number += 
options->SECTION_BUTTONS.o.buttons->BIT_user_function_number;
+    }
+  else if (!strcmp (key, "CHAPTER_FOOTER_BUTTONS"))
+    {
+      if (force <= 0 && options->CHAPTER_FOOTER_BUTTONS.configured > 0)
+        return -1;
+
+      if (options->CHAPTER_FOOTER_BUTTONS.o.buttons)
+        {
+          options->BIT_user_function_number -= 
options->CHAPTER_FOOTER_BUTTONS.o.buttons->BIT_user_function_number;
+          html_free_button_specification_list 
(options->CHAPTER_FOOTER_BUTTONS.o.buttons);
+        }
+
+      options->CHAPTER_FOOTER_BUTTONS.o.buttons = 
html_get_button_specification_list (converter, value);
+      if (options->CHAPTER_FOOTER_BUTTONS.o.buttons)
+        options->BIT_user_function_number += 
options->CHAPTER_FOOTER_BUTTONS.o.buttons->BIT_user_function_number;
+    }
+  else if (!strcmp (key, "SECTION_FOOTER_BUTTONS"))
+    {
+      if (force <= 0 && options->SECTION_FOOTER_BUTTONS.configured > 0)
+        return -1;
+
+      if (options->SECTION_FOOTER_BUTTONS.o.buttons)
+        {
+          options->BIT_user_function_number -= 
options->SECTION_FOOTER_BUTTONS.o.buttons->BIT_user_function_number;
+          html_free_button_specification_list 
(options->SECTION_FOOTER_BUTTONS.o.buttons);
+        }
+
+      options->SECTION_FOOTER_BUTTONS.o.buttons = 
html_get_button_specification_list (converter, value);
+      if (options->SECTION_FOOTER_BUTTONS.o.buttons)
+        options->BIT_user_function_number += 
options->SECTION_FOOTER_BUTTONS.o.buttons->BIT_user_function_number;
+    }
+  else if (!strcmp (key, "NODE_FOOTER_BUTTONS"))
+    {
+      if (force <= 0 && options->NODE_FOOTER_BUTTONS.configured > 0)
+        return -1;
+
+      if (options->NODE_FOOTER_BUTTONS.o.buttons)
+        {
+          options->BIT_user_function_number -= 
options->NODE_FOOTER_BUTTONS.o.buttons->BIT_user_function_number;
+          html_free_button_specification_list 
(options->NODE_FOOTER_BUTTONS.o.buttons);
+        }
+
+      options->NODE_FOOTER_BUTTONS.o.buttons = 
html_get_button_specification_list (converter, value);
+      if (options->NODE_FOOTER_BUTTONS.o.buttons)
+        options->BIT_user_function_number += 
options->NODE_FOOTER_BUTTONS.o.buttons->BIT_user_function_number;
+    }
+  else if (!strcmp (key, "MISC_BUTTONS"))
+    {
+      if (force <= 0 && options->MISC_BUTTONS.configured > 0)
+        return -1;
+
+      if (options->MISC_BUTTONS.o.buttons)
+        {
+          options->BIT_user_function_number -= 
options->MISC_BUTTONS.o.buttons->BIT_user_function_number;
+          html_free_button_specification_list 
(options->MISC_BUTTONS.o.buttons);
+        }
+
+      options->MISC_BUTTONS.o.buttons = html_get_button_specification_list 
(converter, value);
+      if (options->MISC_BUTTONS.o.buttons)
+        options->BIT_user_function_number += 
options->MISC_BUTTONS.o.buttons->BIT_user_function_number;
+    }
+  else if (!strcmp (key, "CHAPTER_BUTTONS"))
+    {
+      if (force <= 0 && options->CHAPTER_BUTTONS.configured > 0)
+        return -1;
+
+      if (options->CHAPTER_BUTTONS.o.buttons)
+        {
+          options->BIT_user_function_number -= 
options->CHAPTER_BUTTONS.o.buttons->BIT_user_function_number;
+          html_free_button_specification_list 
(options->CHAPTER_BUTTONS.o.buttons);
+        }
+
+      options->CHAPTER_BUTTONS.o.buttons = html_get_button_specification_list 
(converter, value);
+      if (options->CHAPTER_BUTTONS.o.buttons)
+        options->BIT_user_function_number += 
options->CHAPTER_BUTTONS.o.buttons->BIT_user_function_number;
+    }
+  else if (!strcmp (key, "ACTIVE_ICONS"))
+    {
+      if (force <= 0 && options->ACTIVE_ICONS.configured > 0)
+        return -1;
+
+      html_free_direction_icons (options->ACTIVE_ICONS.o.icons);
+      html_get_direction_icons_sv (converter, options->ACTIVE_ICONS.o.icons, 
value);
+    }
+  else if (!strcmp (key, "PASSIVE_ICONS"))
+    {
+      if (force <= 0 && options->PASSIVE_ICONS.configured > 0)
+        return -1;
+
+      html_free_direction_icons (options->PASSIVE_ICONS.o.icons);
+      html_get_direction_icons_sv (converter, options->PASSIVE_ICONS.o.icons, 
value);
+    }
+
+/* multiple_at_command */
+
+  else if (!strcmp (key, "allowcodebreaks"))
+    {
+      if (force <= 0 && options->allowcodebreaks.configured > 0)
+        return -1;
+
+      non_perl_free (options->allowcodebreaks.o.string);
+      if (SvOK (value))
+        options->allowcodebreaks.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->allowcodebreaks.o.string = 0;
+    }
+  else if (!strcmp (key, "clickstyle"))
+    {
+      if (force <= 0 && options->clickstyle.configured > 0)
+        return -1;
+
+      non_perl_free (options->clickstyle.o.string);
+      if (SvOK (value))
+        options->clickstyle.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->clickstyle.o.string = 0;
+    }
+  else if (!strcmp (key, "codequotebacktick"))
+    {
+      if (force <= 0 && options->codequotebacktick.configured > 0)
+        return -1;
+
+      non_perl_free (options->codequotebacktick.o.string);
+      if (SvOK (value))
+        options->codequotebacktick.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->codequotebacktick.o.string = 0;
+    }
+  else if (!strcmp (key, "codequoteundirected"))
+    {
+      if (force <= 0 && options->codequoteundirected.configured > 0)
+        return -1;
+
+      non_perl_free (options->codequoteundirected.o.string);
+      if (SvOK (value))
+        options->codequoteundirected.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->codequoteundirected.o.string = 0;
+    }
+  else if (!strcmp (key, "contents"))
+    {
+      if (force <= 0 && options->contents.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->contents.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "contents", SvPVutf8_nolen (value));
+              options->contents.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->contents.o.integer = -1;
+    }
+  else if (!strcmp (key, "deftypefnnewline"))
+    {
+      if (force <= 0 && options->deftypefnnewline.configured > 0)
+        return -1;
+
+      non_perl_free (options->deftypefnnewline.o.string);
+      if (SvOK (value))
+        options->deftypefnnewline.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->deftypefnnewline.o.string = 0;
+    }
+  else if (!strcmp (key, "documentencoding"))
+    {
+      if (force <= 0 && options->documentencoding.configured > 0)
+        return -1;
+
+      non_perl_free (options->documentencoding.o.string);
+      if (SvOK (value))
+        options->documentencoding.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->documentencoding.o.string = 0;
+    }
+  else if (!strcmp (key, "documentlanguage"))
+    {
+      if (force <= 0 && options->documentlanguage.configured > 0)
+        return -1;
+
+      non_perl_free (options->documentlanguage.o.string);
+      if (SvOK (value))
+        options->documentlanguage.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->documentlanguage.o.string = 0;
+    }
+  else if (!strcmp (key, "evenfooting"))
+    {
+      if (force <= 0 && options->evenfooting.configured > 0)
+        return -1;
+
+      non_perl_free (options->evenfooting.o.string);
+      if (SvOK (value))
+        options->evenfooting.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->evenfooting.o.string = 0;
+    }
+  else if (!strcmp (key, "evenheading"))
+    {
+      if (force <= 0 && options->evenheading.configured > 0)
+        return -1;
+
+      non_perl_free (options->evenheading.o.string);
+      if (SvOK (value))
+        options->evenheading.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->evenheading.o.string = 0;
+    }
+  else if (!strcmp (key, "everyfooting"))
+    {
+      if (force <= 0 && options->everyfooting.configured > 0)
+        return -1;
+
+      non_perl_free (options->everyfooting.o.string);
+      if (SvOK (value))
+        options->everyfooting.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->everyfooting.o.string = 0;
+    }
+  else if (!strcmp (key, "everyheading"))
+    {
+      if (force <= 0 && options->everyheading.configured > 0)
+        return -1;
+
+      non_perl_free (options->everyheading.o.string);
+      if (SvOK (value))
+        options->everyheading.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->everyheading.o.string = 0;
+    }
+  else if (!strcmp (key, "exampleindent"))
+    {
+      if (force <= 0 && options->exampleindent.configured > 0)
+        return -1;
+
+      non_perl_free (options->exampleindent.o.string);
+      if (SvOK (value))
+        options->exampleindent.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->exampleindent.o.string = 0;
+    }
+  else if (!strcmp (key, "firstparagraphindent"))
+    {
+      if (force <= 0 && options->firstparagraphindent.configured > 0)
+        return -1;
+
+      non_perl_free (options->firstparagraphindent.o.string);
+      if (SvOK (value))
+        options->firstparagraphindent.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->firstparagraphindent.o.string = 0;
+    }
+  else if (!strcmp (key, "frenchspacing"))
+    {
+      if (force <= 0 && options->frenchspacing.configured > 0)
+        return -1;
+
+      non_perl_free (options->frenchspacing.o.string);
+      if (SvOK (value))
+        options->frenchspacing.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->frenchspacing.o.string = 0;
+    }
+  else if (!strcmp (key, "headings"))
+    {
+      if (force <= 0 && options->headings.configured > 0)
+        return -1;
+
+      non_perl_free (options->headings.o.string);
+      if (SvOK (value))
+        options->headings.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->headings.o.string = 0;
+    }
+  else if (!strcmp (key, "kbdinputstyle"))
+    {
+      if (force <= 0 && options->kbdinputstyle.configured > 0)
+        return -1;
+
+      non_perl_free (options->kbdinputstyle.o.string);
+      if (SvOK (value))
+        options->kbdinputstyle.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->kbdinputstyle.o.string = 0;
+    }
+  else if (!strcmp (key, "microtype"))
+    {
+      if (force <= 0 && options->microtype.configured > 0)
+        return -1;
+
+      non_perl_free (options->microtype.o.string);
+      if (SvOK (value))
+        options->microtype.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->microtype.o.string = 0;
+    }
+  else if (!strcmp (key, "oddheading"))
+    {
+      if (force <= 0 && options->oddheading.configured > 0)
+        return -1;
+
+      non_perl_free (options->oddheading.o.string);
+      if (SvOK (value))
+        options->oddheading.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->oddheading.o.string = 0;
+    }
+  else if (!strcmp (key, "oddfooting"))
+    {
+      if (force <= 0 && options->oddfooting.configured > 0)
+        return -1;
+
+      non_perl_free (options->oddfooting.o.string);
+      if (SvOK (value))
+        options->oddfooting.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->oddfooting.o.string = 0;
+    }
+  else if (!strcmp (key, "paragraphindent"))
+    {
+      if (force <= 0 && options->paragraphindent.configured > 0)
+        return -1;
+
+      non_perl_free (options->paragraphindent.o.string);
+      if (SvOK (value))
+        options->paragraphindent.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->paragraphindent.o.string = 0;
+    }
+  else if (!strcmp (key, "shortcontents"))
+    {
+      if (force <= 0 && options->shortcontents.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->shortcontents.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "shortcontents", SvPVutf8_nolen (value));
+              options->shortcontents.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->shortcontents.o.integer = -1;
+    }
+  else if (!strcmp (key, "summarycontents"))
+    {
+      if (force <= 0 && options->summarycontents.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->summarycontents.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "summarycontents", SvPVutf8_nolen (value));
+              options->summarycontents.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->summarycontents.o.integer = -1;
+    }
+  else if (!strcmp (key, "urefbreakstyle"))
+    {
+      if (force <= 0 && options->urefbreakstyle.configured > 0)
+        return -1;
+
+      non_perl_free (options->urefbreakstyle.o.string);
+      if (SvOK (value))
+        options->urefbreakstyle.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->urefbreakstyle.o.string = 0;
+    }
+  else if (!strcmp (key, "xrefautomaticsectiontitle"))
+    {
+      if (force <= 0 && options->xrefautomaticsectiontitle.configured > 0)
+        return -1;
+
+      non_perl_free (options->xrefautomaticsectiontitle.o.string);
+      if (SvOK (value))
+        options->xrefautomaticsectiontitle.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->xrefautomaticsectiontitle.o.string = 0;
+    }
+
+/* program_cmdline */
+
+  else if (!strcmp (key, "MACRO_EXPAND"))
+    {
+      if (force <= 0 && options->MACRO_EXPAND.configured > 0)
+        return -1;
+
+      non_perl_free (options->MACRO_EXPAND.o.string);
+      if (SvOK (value))
+        options->MACRO_EXPAND.o.string = non_perl_strdup (SvPVbyte_nolen 
(value));
+      else
+        options->MACRO_EXPAND.o.string = 0;
+    }
+  else if (!strcmp (key, "INTERNAL_LINKS"))
+    {
+      if (force <= 0 && options->INTERNAL_LINKS.configured > 0)
+        return -1;
+
+      non_perl_free (options->INTERNAL_LINKS.o.string);
+      if (SvOK (value))
+        options->INTERNAL_LINKS.o.string = non_perl_strdup (SvPVbyte_nolen 
(value));
+      else
+        options->INTERNAL_LINKS.o.string = 0;
+    }
+  else if (!strcmp (key, "ERROR_LIMIT"))
+    {
+      if (force <= 0 && options->ERROR_LIMIT.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->ERROR_LIMIT.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "ERROR_LIMIT", SvPVutf8_nolen (value));
+              options->ERROR_LIMIT.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->ERROR_LIMIT.o.integer = -1;
+    }
+  else if (!strcmp (key, "FORCE"))
+    {
+      if (force <= 0 && options->FORCE.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->FORCE.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "FORCE", SvPVutf8_nolen (value));
+              options->FORCE.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->FORCE.o.integer = -1;
+    }
+  else if (!strcmp (key, "NO_WARN"))
+    {
+      if (force <= 0 && options->NO_WARN.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->NO_WARN.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "NO_WARN", SvPVutf8_nolen (value));
+              options->NO_WARN.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->NO_WARN.o.integer = -1;
+    }
+  else if (!strcmp (key, "SILENT"))
+    {
+      if (force <= 0 && options->SILENT.configured > 0)
+        return -1;
+
+      non_perl_free (options->SILENT.o.string);
+      if (SvOK (value))
+        options->SILENT.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->SILENT.o.string = 0;
+    }
+  else if (!strcmp (key, "TRACE_INCLUDES"))
+    {
+      if (force <= 0 && options->TRACE_INCLUDES.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->TRACE_INCLUDES.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "TRACE_INCLUDES", SvPVutf8_nolen (value));
+              options->TRACE_INCLUDES.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->TRACE_INCLUDES.o.integer = -1;
+    }
+  else if (!strcmp (key, "FORMAT_MENU"))
+    {
+      if (force <= 0 && options->FORMAT_MENU.configured > 0)
+        return -1;
+
+      non_perl_free (options->FORMAT_MENU.o.string);
+      if (SvOK (value))
+        options->FORMAT_MENU.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->FORMAT_MENU.o.string = 0;
+    }
+
+/* program_customization */
+
+  else if (!strcmp (key, "CHECK_NORMAL_MENU_STRUCTURE"))
+    {
+      if (force <= 0 && options->CHECK_NORMAL_MENU_STRUCTURE.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->CHECK_NORMAL_MENU_STRUCTURE.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "CHECK_NORMAL_MENU_STRUCTURE", SvPVutf8_nolen (value));
+              options->CHECK_NORMAL_MENU_STRUCTURE.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->CHECK_NORMAL_MENU_STRUCTURE.o.integer = -1;
+    }
+  else if (!strcmp (key, "CHECK_MISSING_MENU_ENTRY"))
+    {
+      if (force <= 0 && options->CHECK_MISSING_MENU_ENTRY.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->CHECK_MISSING_MENU_ENTRY.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "CHECK_MISSING_MENU_ENTRY", SvPVutf8_nolen (value));
+              options->CHECK_MISSING_MENU_ENTRY.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->CHECK_MISSING_MENU_ENTRY.o.integer = -1;
+    }
+  else if (!strcmp (key, "DUMP_TREE"))
+    {
+      if (force <= 0 && options->DUMP_TREE.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->DUMP_TREE.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "DUMP_TREE", SvPVutf8_nolen (value));
+              options->DUMP_TREE.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->DUMP_TREE.o.integer = -1;
+    }
+  else if (!strcmp (key, "DUMP_TEXI"))
+    {
+      if (force <= 0 && options->DUMP_TEXI.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->DUMP_TEXI.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "DUMP_TEXI", SvPVutf8_nolen (value));
+              options->DUMP_TEXI.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->DUMP_TEXI.o.integer = -1;
+    }
+  else if (!strcmp (key, "SHOW_BUILTIN_CSS_RULES"))
+    {
+      if (force <= 0 && options->SHOW_BUILTIN_CSS_RULES.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->SHOW_BUILTIN_CSS_RULES.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "SHOW_BUILTIN_CSS_RULES", SvPVutf8_nolen (value));
+              options->SHOW_BUILTIN_CSS_RULES.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->SHOW_BUILTIN_CSS_RULES.o.integer = -1;
+    }
+  else if (!strcmp (key, "SORT_ELEMENT_COUNT"))
+    {
+      if (force <= 0 && options->SORT_ELEMENT_COUNT.configured > 0)
+        return -1;
+
+      non_perl_free (options->SORT_ELEMENT_COUNT.o.string);
+      if (SvOK (value))
+        options->SORT_ELEMENT_COUNT.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->SORT_ELEMENT_COUNT.o.string = 0;
+    }
+  else if (!strcmp (key, "SORT_ELEMENT_COUNT_WORDS"))
+    {
+      if (force <= 0 && options->SORT_ELEMENT_COUNT_WORDS.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->SORT_ELEMENT_COUNT_WORDS.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "SORT_ELEMENT_COUNT_WORDS", SvPVutf8_nolen (value));
+              options->SORT_ELEMENT_COUNT_WORDS.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->SORT_ELEMENT_COUNT_WORDS.o.integer = -1;
+    }
+  else if (!strcmp (key, "TEXI2DVI"))
+    {
+      if (force <= 0 && options->TEXI2DVI.configured > 0)
+        return -1;
+
+      non_perl_free (options->TEXI2DVI.o.string);
+      if (SvOK (value))
+        options->TEXI2DVI.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->TEXI2DVI.o.string = 0;
+    }
+  else if (!strcmp (key, "TREE_TRANSFORMATIONS"))
+    {
+      if (force <= 0 && options->TREE_TRANSFORMATIONS.configured > 0)
+        return -1;
+
+      non_perl_free (options->TREE_TRANSFORMATIONS.o.string);
+      if (SvOK (value))
+        options->TREE_TRANSFORMATIONS.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->TREE_TRANSFORMATIONS.o.string = 0;
+    }
+
+/* unique_at_command */
+
+  else if (!strcmp (key, "afivepaper"))
+    {
+      if (force <= 0 && options->afivepaper.configured > 0)
+        return -1;
+
+      non_perl_free (options->afivepaper.o.string);
+      if (SvOK (value))
+        options->afivepaper.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->afivepaper.o.string = 0;
+    }
+  else if (!strcmp (key, "afourpaper"))
+    {
+      if (force <= 0 && options->afourpaper.configured > 0)
+        return -1;
+
+      non_perl_free (options->afourpaper.o.string);
+      if (SvOK (value))
+        options->afourpaper.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->afourpaper.o.string = 0;
+    }
+  else if (!strcmp (key, "afourlatex"))
+    {
+      if (force <= 0 && options->afourlatex.configured > 0)
+        return -1;
+
+      non_perl_free (options->afourlatex.o.string);
+      if (SvOK (value))
+        options->afourlatex.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->afourlatex.o.string = 0;
+    }
+  else if (!strcmp (key, "afourwide"))
+    {
+      if (force <= 0 && options->afourwide.configured > 0)
+        return -1;
+
+      non_perl_free (options->afourwide.o.string);
+      if (SvOK (value))
+        options->afourwide.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->afourwide.o.string = 0;
+    }
+  else if (!strcmp (key, "bsixpaper"))
+    {
+      if (force <= 0 && options->bsixpaper.configured > 0)
+        return -1;
+
+      non_perl_free (options->bsixpaper.o.string);
+      if (SvOK (value))
+        options->bsixpaper.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->bsixpaper.o.string = 0;
+    }
+  else if (!strcmp (key, "documentdescription"))
+    {
+      if (force <= 0 && options->documentdescription.configured > 0)
+        return -1;
+
+      non_perl_free (options->documentdescription.o.string);
+      if (SvOK (value))
+        options->documentdescription.o.string = non_perl_strdup 
(SvPVutf8_nolen (value));
+      else
+        options->documentdescription.o.string = 0;
+    }
+  else if (!strcmp (key, "evenfootingmarks"))
+    {
+      if (force <= 0 && options->evenfootingmarks.configured > 0)
+        return -1;
+
+      non_perl_free (options->evenfootingmarks.o.string);
+      if (SvOK (value))
+        options->evenfootingmarks.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->evenfootingmarks.o.string = 0;
+    }
+  else if (!strcmp (key, "evenheadingmarks"))
+    {
+      if (force <= 0 && options->evenheadingmarks.configured > 0)
+        return -1;
+
+      non_perl_free (options->evenheadingmarks.o.string);
+      if (SvOK (value))
+        options->evenheadingmarks.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->evenheadingmarks.o.string = 0;
+    }
+  else if (!strcmp (key, "everyfootingmarks"))
+    {
+      if (force <= 0 && options->everyfootingmarks.configured > 0)
+        return -1;
+
+      non_perl_free (options->everyfootingmarks.o.string);
+      if (SvOK (value))
+        options->everyfootingmarks.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->everyfootingmarks.o.string = 0;
+    }
+  else if (!strcmp (key, "everyheadingmarks"))
+    {
+      if (force <= 0 && options->everyheadingmarks.configured > 0)
+        return -1;
+
+      non_perl_free (options->everyheadingmarks.o.string);
+      if (SvOK (value))
+        options->everyheadingmarks.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->everyheadingmarks.o.string = 0;
+    }
+  else if (!strcmp (key, "fonttextsize"))
+    {
+      if (force <= 0 && options->fonttextsize.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->fonttextsize.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "fonttextsize", SvPVutf8_nolen (value));
+              options->fonttextsize.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->fonttextsize.o.integer = -1;
+    }
+  else if (!strcmp (key, "footnotestyle"))
+    {
+      if (force <= 0 && options->footnotestyle.configured > 0)
+        return -1;
+
+      non_perl_free (options->footnotestyle.o.string);
+      if (SvOK (value))
+        options->footnotestyle.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->footnotestyle.o.string = 0;
+    }
+  else if (!strcmp (key, "novalidate"))
+    {
+      if (force <= 0 && options->novalidate.configured > 0)
+        return -1;
+
+      if (SvOK (value))
+        {
+          if (looks_like_number (value))
+            options->novalidate.o.integer = SvIV (value);
+          else
+            {
+              fprintf (stderr, "BUG: %s: not an integer: %s\n",
+                       "novalidate", SvPVutf8_nolen (value));
+              options->novalidate.o.integer = -1;
+              return -3;
+            }
+        }
+      else
+        options->novalidate.o.integer = -1;
+    }
+  else if (!strcmp (key, "oddfootingmarks"))
+    {
+      if (force <= 0 && options->oddfootingmarks.configured > 0)
+        return -1;
+
+      non_perl_free (options->oddfootingmarks.o.string);
+      if (SvOK (value))
+        options->oddfootingmarks.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->oddfootingmarks.o.string = 0;
+    }
+  else if (!strcmp (key, "oddheadingmarks"))
+    {
+      if (force <= 0 && options->oddheadingmarks.configured > 0)
+        return -1;
+
+      non_perl_free (options->oddheadingmarks.o.string);
+      if (SvOK (value))
+        options->oddheadingmarks.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->oddheadingmarks.o.string = 0;
+    }
+  else if (!strcmp (key, "pagesizes"))
+    {
+      if (force <= 0 && options->pagesizes.configured > 0)
+        return -1;
+
+      non_perl_free (options->pagesizes.o.string);
+      if (SvOK (value))
+        options->pagesizes.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->pagesizes.o.string = 0;
+    }
+  else if (!strcmp (key, "setchapternewpage"))
+    {
+      if (force <= 0 && options->setchapternewpage.configured > 0)
+        return -1;
+
+      non_perl_free (options->setchapternewpage.o.string);
+      if (SvOK (value))
+        options->setchapternewpage.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->setchapternewpage.o.string = 0;
+    }
+  else if (!strcmp (key, "setfilename"))
+    {
+      if (force <= 0 && options->setfilename.configured > 0)
+        return -1;
+
+      non_perl_free (options->setfilename.o.string);
+      if (SvOK (value))
+        options->setfilename.o.string = non_perl_strdup (SvPVutf8_nolen 
(value));
+      else
+        options->setfilename.o.string = 0;
+    }
+  else if (!strcmp (key, "smallbook"))
+    {
+      if (force <= 0 && options->smallbook.configured > 0)
+        return -1;
+
+      non_perl_free (options->smallbook.o.string);
+      if (SvOK (value))
+        options->smallbook.o.string = non_perl_strdup (SvPVutf8_nolen (value));
+      else
+        options->smallbook.o.string = 0;
+    }
+  else
+    return -2; /* unknown */
+
+  return 0;
+}
+
+void
+html_fill_sv_options (OPTIONS *options, const CONVERTER *converter)
+{
+  if (options->LINKS_BUTTONS.o.buttons)
+    html_fill_button_sv_specification_list (converter, 
options->LINKS_BUTTONS.o.buttons);
+
+  if (options->TOP_BUTTONS.o.buttons)
+    html_fill_button_sv_specification_list (converter, 
options->TOP_BUTTONS.o.buttons);
+
+  if (options->TOP_FOOTER_BUTTONS.o.buttons)
+    html_fill_button_sv_specification_list (converter, 
options->TOP_FOOTER_BUTTONS.o.buttons);
+
+  if (options->SECTION_BUTTONS.o.buttons)
+    html_fill_button_sv_specification_list (converter, 
options->SECTION_BUTTONS.o.buttons);
+
+  if (options->CHAPTER_FOOTER_BUTTONS.o.buttons)
+    html_fill_button_sv_specification_list (converter, 
options->CHAPTER_FOOTER_BUTTONS.o.buttons);
+
+  if (options->SECTION_FOOTER_BUTTONS.o.buttons)
+    html_fill_button_sv_specification_list (converter, 
options->SECTION_FOOTER_BUTTONS.o.buttons);
+
+  if (options->NODE_FOOTER_BUTTONS.o.buttons)
+    html_fill_button_sv_specification_list (converter, 
options->NODE_FOOTER_BUTTONS.o.buttons);
+
+  if (options->MISC_BUTTONS.o.buttons)
+    html_fill_button_sv_specification_list (converter, 
options->MISC_BUTTONS.o.buttons);
+
+  if (options->CHAPTER_BUTTONS.o.buttons)
+    html_fill_button_sv_specification_list (converter, 
options->CHAPTER_BUTTONS.o.buttons);
+
+  if (options->ACTIVE_ICONS.o.icons)
+    html_fill_direction_icons (converter, options->ACTIVE_ICONS.o.icons);
+
+  if (options->PASSIVE_ICONS.o.icons)
+    html_fill_direction_icons (converter, options->PASSIVE_ICONS.o.icons);
+
+}
+
+SV *
+build_sv_option_key (const OPTIONS *options, const char *key,
+                     const CONVERTER *converter)
+{
+  dTHX;
+
+  if (0) {return newSV (0);}
+
+/* array_cmdline */
+
+  else if (!strcmp (key, "CSS_FILES"))
+    {
+      return newRV_noinc ((SV *) 
build_string_list(options->CSS_FILES.o.strlist, svt_byte));
+    }
+  else if (!strcmp (key, "CSS_REFS"))
+    {
+      return newRV_noinc ((SV *) 
build_string_list(options->CSS_REFS.o.strlist, svt_char));
+    }
+  else if (!strcmp (key, "EXPANDED_FORMATS"))
+    {
+      return newRV_noinc ((SV *) 
build_string_list(options->EXPANDED_FORMATS.o.strlist, svt_byte));
+    }
+  else if (!strcmp (key, "INCLUDE_DIRECTORIES"))
+    {
+      return newRV_noinc ((SV *) 
build_string_list(options->INCLUDE_DIRECTORIES.o.strlist, svt_dir));
+    }
+  else if (!strcmp (key, "TEXINFO_LANGUAGE_DIRECTORIES"))
+    {
+      return newRV_noinc ((SV *) 
build_string_list(options->TEXINFO_LANGUAGE_DIRECTORIES.o.strlist, svt_dir));
+    }
+
+/* converter_cmdline */
+
+  else if (!strcmp (key, "SPLIT_SIZE"))
+    {
+      if (options->SPLIT_SIZE.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->SPLIT_SIZE.o.integer);
+    }
+  else if (!strcmp (key, "FILLCOLUMN"))
+    {
+      if (options->FILLCOLUMN.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->FILLCOLUMN.o.integer);
+    }
+  else if (!strcmp (key, "NUMBER_SECTIONS"))
+    {
+      if (options->NUMBER_SECTIONS.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->NUMBER_SECTIONS.o.integer);
+    }
+  else if (!strcmp (key, "NUMBER_FOOTNOTES"))
+    {
+      if (options->NUMBER_FOOTNOTES.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->NUMBER_FOOTNOTES.o.integer);
+    }
+  else if (!strcmp (key, "TRANSLITERATE_FILE_NAMES"))
+    {
+      if (options->TRANSLITERATE_FILE_NAMES.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->TRANSLITERATE_FILE_NAMES.o.integer);
+    }
+  else if (!strcmp (key, "SPLIT"))
+    {
+      if (!options->SPLIT.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->SPLIT.o.string, 0);
+    }
+  else if (!strcmp (key, "HEADERS"))
+    {
+      if (options->HEADERS.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->HEADERS.o.integer);
+    }
+  else if (!strcmp (key, "NODE_FILES"))
+    {
+      if (options->NODE_FILES.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->NODE_FILES.o.integer);
+    }
+  else if (!strcmp (key, "VERBOSE"))
+    {
+      if (options->VERBOSE.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->VERBOSE.o.integer);
+    }
+  else if (!strcmp (key, "OUTFILE"))
+    {
+      if (!options->OUTFILE.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->OUTFILE.o.string, 0);
+    }
+  else if (!strcmp (key, "SUBDIR"))
+    {
+      if (!options->SUBDIR.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->SUBDIR.o.string, 0);
+    }
+  else if (!strcmp (key, "ENABLE_ENCODING"))
+    {
+      if (options->ENABLE_ENCODING.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->ENABLE_ENCODING.o.integer);
+    }
+
+/* converter_customization */
+
+  else if (!strcmp (key, "TOP_NODE_UP"))
+    {
+      if (!options->TOP_NODE_UP.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->TOP_NODE_UP.o.string, 0);
+    }
+  else if (!strcmp (key, "BASEFILENAME_LENGTH"))
+    {
+      if (options->BASEFILENAME_LENGTH.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->BASEFILENAME_LENGTH.o.integer);
+    }
+  else if (!strcmp (key, "DOC_ENCODING_FOR_INPUT_FILE_NAME"))
+    {
+      if (options->DOC_ENCODING_FOR_INPUT_FILE_NAME.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->DOC_ENCODING_FOR_INPUT_FILE_NAME.o.integer);
+    }
+  else if (!strcmp (key, "DOC_ENCODING_FOR_OUTPUT_FILE_NAME"))
+    {
+      if (options->DOC_ENCODING_FOR_OUTPUT_FILE_NAME.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->DOC_ENCODING_FOR_OUTPUT_FILE_NAME.o.integer);
+    }
+  else if (!strcmp (key, "IMAGE_LINK_PREFIX"))
+    {
+      if (!options->IMAGE_LINK_PREFIX.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->IMAGE_LINK_PREFIX.o.string, 0);
+    }
+  else if (!strcmp (key, "CASE_INSENSITIVE_FILENAMES"))
+    {
+      if (options->CASE_INSENSITIVE_FILENAMES.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->CASE_INSENSITIVE_FILENAMES.o.integer);
+    }
+  else if (!strcmp (key, "DEBUG"))
+    {
+      if (options->DEBUG.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->DEBUG.o.integer);
+    }
+  else if (!strcmp (key, "HANDLER_FATAL_ERROR_LEVEL"))
+    {
+      if (options->HANDLER_FATAL_ERROR_LEVEL.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->HANDLER_FATAL_ERROR_LEVEL.o.integer);
+    }
+  else if (!strcmp (key, "TEST"))
+    {
+      if (options->TEST.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->TEST.o.integer);
+    }
+  else if (!strcmp (key, "TEXTCONTENT_COMMENT"))
+    {
+      if (options->TEXTCONTENT_COMMENT.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->TEXTCONTENT_COMMENT.o.integer);
+    }
+  else if (!strcmp (key, "TEXINFO_DTD_VERSION"))
+    {
+      if (!options->TEXINFO_DTD_VERSION.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->TEXINFO_DTD_VERSION.o.string, 0);
+    }
+  else if (!strcmp (key, "USE_UNICODE_COLLATION"))
+    {
+      if (options->USE_UNICODE_COLLATION.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->USE_UNICODE_COLLATION.o.integer);
+    }
+  else if (!strcmp (key, "AFTER_BODY_OPEN"))
+    {
+      if (!options->AFTER_BODY_OPEN.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->AFTER_BODY_OPEN.o.string, 0);
+    }
+  else if (!strcmp (key, "AFTER_SHORT_TOC_LINES"))
+    {
+      if (!options->AFTER_SHORT_TOC_LINES.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->AFTER_SHORT_TOC_LINES.o.string, 0);
+    }
+  else if (!strcmp (key, "AFTER_TOC_LINES"))
+    {
+      if (!options->AFTER_TOC_LINES.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->AFTER_TOC_LINES.o.string, 0);
+    }
+  else if (!strcmp (key, "ASCII_DASHES_AND_QUOTES"))
+    {
+      if (options->ASCII_DASHES_AND_QUOTES.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->ASCII_DASHES_AND_QUOTES.o.integer);
+    }
+  else if (!strcmp (key, "ASCII_GLYPH"))
+    {
+      if (options->ASCII_GLYPH.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->ASCII_GLYPH.o.integer);
+    }
+  else if (!strcmp (key, "ASCII_PUNCTUATION"))
+    {
+      if (options->ASCII_PUNCTUATION.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->ASCII_PUNCTUATION.o.integer);
+    }
+  else if (!strcmp (key, "AUTO_MENU_DESCRIPTION_ALIGN_COLUMN"))
+    {
+      if (options->AUTO_MENU_DESCRIPTION_ALIGN_COLUMN.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->AUTO_MENU_DESCRIPTION_ALIGN_COLUMN.o.integer);
+    }
+  else if (!strcmp (key, "AUTO_MENU_MAX_WIDTH"))
+    {
+      if (options->AUTO_MENU_MAX_WIDTH.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->AUTO_MENU_MAX_WIDTH.o.integer);
+    }
+  else if (!strcmp (key, "BEFORE_SHORT_TOC_LINES"))
+    {
+      if (!options->BEFORE_SHORT_TOC_LINES.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->BEFORE_SHORT_TOC_LINES.o.string, 0);
+    }
+  else if (!strcmp (key, "BEFORE_TOC_LINES"))
+    {
+      if (!options->BEFORE_TOC_LINES.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->BEFORE_TOC_LINES.o.string, 0);
+    }
+  else if (!strcmp (key, "BIG_RULE"))
+    {
+      if (!options->BIG_RULE.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->BIG_RULE.o.string, 0);
+    }
+  else if (!strcmp (key, "BODY_ELEMENT_ATTRIBUTES"))
+    {
+      if (!options->BODY_ELEMENT_ATTRIBUTES.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->BODY_ELEMENT_ATTRIBUTES.o.string, 0);
+    }
+  else if (!strcmp (key, "CLASS_BEGIN_USEPACKAGE"))
+    {
+      if (!options->CLASS_BEGIN_USEPACKAGE.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->CLASS_BEGIN_USEPACKAGE.o.string, 0);
+    }
+  else if (!strcmp (key, "COPIABLE_LINKS"))
+    {
+      if (options->COPIABLE_LINKS.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->COPIABLE_LINKS.o.integer);
+    }
+  else if (!strcmp (key, "CHAPTER_HEADER_LEVEL"))
+    {
+      if (options->CHAPTER_HEADER_LEVEL.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->CHAPTER_HEADER_LEVEL.o.integer);
+    }
+  else if (!strcmp (key, "CHECK_HTMLXREF"))
+    {
+      if (options->CHECK_HTMLXREF.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->CHECK_HTMLXREF.o.integer);
+    }
+  else if (!strcmp (key, "CLOSE_DOUBLE_QUOTE_SYMBOL"))
+    {
+      if (!options->CLOSE_DOUBLE_QUOTE_SYMBOL.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->CLOSE_DOUBLE_QUOTE_SYMBOL.o.string, 0);
+    }
+  else if (!strcmp (key, "CLOSE_QUOTE_SYMBOL"))
+    {
+      if (!options->CLOSE_QUOTE_SYMBOL.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->CLOSE_QUOTE_SYMBOL.o.string, 0);
+    }
+  else if (!strcmp (key, "COLLATION_LANGUAGE"))
+    {
+      if (!options->COLLATION_LANGUAGE.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->COLLATION_LANGUAGE.o.string, 0);
+    }
+  else if (!strcmp (key, "COMMAND_LINE_ENCODING"))
+    {
+      if (!options->COMMAND_LINE_ENCODING.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->COMMAND_LINE_ENCODING.o.string, 0);
+    }
+  else if (!strcmp (key, "INDENTED_BLOCK_COMMANDS_IN_TABLE"))
+    {
+      if (options->INDENTED_BLOCK_COMMANDS_IN_TABLE.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->INDENTED_BLOCK_COMMANDS_IN_TABLE.o.integer);
+    }
+  else if (!strcmp (key, "CONTENTS_OUTPUT_LOCATION"))
+    {
+      if (!options->CONTENTS_OUTPUT_LOCATION.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->CONTENTS_OUTPUT_LOCATION.o.string, 0);
+    }
+  else if (!strcmp (key, "CONVERT_TO_LATEX_IN_MATH"))
+    {
+      if (options->CONVERT_TO_LATEX_IN_MATH.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->CONVERT_TO_LATEX_IN_MATH.o.integer);
+    }
+  else if (!strcmp (key, "DATE_IN_HEADER"))
+    {
+      if (options->DATE_IN_HEADER.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->DATE_IN_HEADER.o.integer);
+    }
+  else if (!strcmp (key, "DEFAULT_RULE"))
+    {
+      if (!options->DEFAULT_RULE.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->DEFAULT_RULE.o.string, 0);
+    }
+  else if (!strcmp (key, "DEF_TABLE"))
+    {
+      if (options->DEF_TABLE.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->DEF_TABLE.o.integer);
+    }
+  else if (!strcmp (key, "DO_ABOUT"))
+    {
+      if (options->DO_ABOUT.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->DO_ABOUT.o.integer);
+    }
+  else if (!strcmp (key, "DOCTYPE"))
+    {
+      if (!options->DOCTYPE.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->DOCTYPE.o.string, 0);
+    }
+  else if (!strcmp (key, "DOCUMENTLANGUAGE_COLLATION"))
+    {
+      if (options->DOCUMENTLANGUAGE_COLLATION.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->DOCUMENTLANGUAGE_COLLATION.o.integer);
+    }
+  else if (!strcmp (key, "END_USEPACKAGE"))
+    {
+      if (!options->END_USEPACKAGE.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->END_USEPACKAGE.o.string, 0);
+    }
+  else if (!strcmp (key, "EPUB_CREATE_CONTAINER_FILE"))
+    {
+      if (options->EPUB_CREATE_CONTAINER_FILE.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->EPUB_CREATE_CONTAINER_FILE.o.integer);
+    }
+  else if (!strcmp (key, "EPUB_KEEP_CONTAINER_FOLDER"))
+    {
+      if (options->EPUB_KEEP_CONTAINER_FOLDER.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->EPUB_KEEP_CONTAINER_FOLDER.o.integer);
+    }
+  else if (!strcmp (key, "EXTENSION"))
+    {
+      if (!options->EXTENSION.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->EXTENSION.o.string, 0);
+    }
+  else if (!strcmp (key, "EXTERNAL_CROSSREF_EXTENSION"))
+    {
+      if (!options->EXTERNAL_CROSSREF_EXTENSION.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->EXTERNAL_CROSSREF_EXTENSION.o.string, 0);
+    }
+  else if (!strcmp (key, "EXTERNAL_CROSSREF_SPLIT"))
+    {
+      if (!options->EXTERNAL_CROSSREF_SPLIT.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->EXTERNAL_CROSSREF_SPLIT.o.string, 0);
+    }
+  else if (!strcmp (key, "EXTERNAL_DIR"))
+    {
+      if (!options->EXTERNAL_DIR.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->EXTERNAL_DIR.o.string, 0);
+    }
+  else if (!strcmp (key, "EXTRA_HEAD"))
+    {
+      if (!options->EXTRA_HEAD.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->EXTRA_HEAD.o.string, 0);
+    }
+  else if (!strcmp (key, "FOOTNOTE_END_HEADER_LEVEL"))
+    {
+      if (options->FOOTNOTE_END_HEADER_LEVEL.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->FOOTNOTE_END_HEADER_LEVEL.o.integer);
+    }
+  else if (!strcmp (key, "FOOTNOTE_SEPARATE_HEADER_LEVEL"))
+    {
+      if (options->FOOTNOTE_SEPARATE_HEADER_LEVEL.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->FOOTNOTE_SEPARATE_HEADER_LEVEL.o.integer);
+    }
+  else if (!strcmp (key, "HEADER_IN_TABLE"))
+    {
+      if (options->HEADER_IN_TABLE.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->HEADER_IN_TABLE.o.integer);
+    }
+  else if (!strcmp (key, "HIGHLIGHT_SYNTAX"))
+    {
+      if (!options->HIGHLIGHT_SYNTAX.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->HIGHLIGHT_SYNTAX.o.string, 0);
+    }
+  else if (!strcmp (key, "HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE"))
+    {
+      if (!options->HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE.o.string)
+        return newSV (0);
+      return newSVpv_utf8 
(options->HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE.o.string, 0);
+    }
+  else if (!strcmp (key, "HTML_MATH"))
+    {
+      if (!options->HTML_MATH.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->HTML_MATH.o.string, 0);
+    }
+  else if (!strcmp (key, "HTML_ROOT_ELEMENT_ATTRIBUTES"))
+    {
+      if (!options->HTML_ROOT_ELEMENT_ATTRIBUTES.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->HTML_ROOT_ELEMENT_ATTRIBUTES.o.string, 0);
+    }
+  else if (!strcmp (key, "HTMLXREF_FILE"))
+    {
+      if (!options->HTMLXREF_FILE.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->HTMLXREF_FILE.o.string, 0);
+    }
+  else if (!strcmp (key, "HTMLXREF_MODE"))
+    {
+      if (!options->HTMLXREF_MODE.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->HTMLXREF_MODE.o.string, 0);
+    }
+  else if (!strcmp (key, "ICONS"))
+    {
+      if (options->ICONS.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->ICONS.o.integer);
+    }
+  else if (!strcmp (key, "INDEX_ENTRY_COLON"))
+    {
+      if (!options->INDEX_ENTRY_COLON.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->INDEX_ENTRY_COLON.o.string, 0);
+    }
+  else if (!strcmp (key, "INDEX_SPECIAL_CHARS_WARNING"))
+    {
+      if (options->INDEX_SPECIAL_CHARS_WARNING.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->INDEX_SPECIAL_CHARS_WARNING.o.integer);
+    }
+  else if (!strcmp (key, "INFO_JS_DIR"))
+    {
+      if (!options->INFO_JS_DIR.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->INFO_JS_DIR.o.string, 0);
+    }
+  else if (!strcmp (key, "INFO_SPECIAL_CHARS_QUOTE"))
+    {
+      if (!options->INFO_SPECIAL_CHARS_QUOTE.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->INFO_SPECIAL_CHARS_QUOTE.o.string, 0);
+    }
+  else if (!strcmp (key, "INFO_SPECIAL_CHARS_WARNING"))
+    {
+      if (options->INFO_SPECIAL_CHARS_WARNING.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->INFO_SPECIAL_CHARS_WARNING.o.integer);
+    }
+  else if (!strcmp (key, "IGNORE_REF_TO_TOP_NODE_UP"))
+    {
+      if (options->IGNORE_REF_TO_TOP_NODE_UP.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->IGNORE_REF_TO_TOP_NODE_UP.o.integer);
+    }
+  else if (!strcmp (key, "INLINE_CSS_STYLE"))
+    {
+      if (options->INLINE_CSS_STYLE.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->INLINE_CSS_STYLE.o.integer);
+    }
+  else if (!strcmp (key, "INPUT_FILE_NAME_ENCODING"))
+    {
+      if (!options->INPUT_FILE_NAME_ENCODING.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->INPUT_FILE_NAME_ENCODING.o.string, 0);
+    }
+  else if (!strcmp (key, "JS_WEBLABELS"))
+    {
+      if (!options->JS_WEBLABELS.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->JS_WEBLABELS.o.string, 0);
+    }
+  else if (!strcmp (key, "JS_WEBLABELS_FILE"))
+    {
+      if (!options->JS_WEBLABELS_FILE.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->JS_WEBLABELS_FILE.o.string, 0);
+    }
+  else if (!strcmp (key, "LATEX_FLOATS_FILE_EXTENSION"))
+    {
+      if (!options->LATEX_FLOATS_FILE_EXTENSION.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->LATEX_FLOATS_FILE_EXTENSION.o.string, 0);
+    }
+  else if (!strcmp (key, "LOCALE_ENCODING"))
+    {
+      if (!options->LOCALE_ENCODING.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->LOCALE_ENCODING.o.string, 0);
+    }
+  else if (!strcmp (key, "L2H_CLEAN"))
+    {
+      if (options->L2H_CLEAN.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->L2H_CLEAN.o.integer);
+    }
+  else if (!strcmp (key, "L2H_FILE"))
+    {
+      if (!options->L2H_FILE.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->L2H_FILE.o.string, 0);
+    }
+  else if (!strcmp (key, "L2H_HTML_VERSION"))
+    {
+      if (!options->L2H_HTML_VERSION.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->L2H_HTML_VERSION.o.string, 0);
+    }
+  else if (!strcmp (key, "L2H_L2H"))
+    {
+      if (!options->L2H_L2H.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->L2H_L2H.o.string, 0);
+    }
+  else if (!strcmp (key, "L2H_SKIP"))
+    {
+      if (options->L2H_SKIP.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->L2H_SKIP.o.integer);
+    }
+  else if (!strcmp (key, "L2H_TMP"))
+    {
+      if (!options->L2H_TMP.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->L2H_TMP.o.string, 0);
+    }
+  else if (!strcmp (key, "MATHJAX_CONFIGURATION"))
+    {
+      if (!options->MATHJAX_CONFIGURATION.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->MATHJAX_CONFIGURATION.o.string, 0);
+    }
+  else if (!strcmp (key, "MATHJAX_SCRIPT"))
+    {
+      if (!options->MATHJAX_SCRIPT.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->MATHJAX_SCRIPT.o.string, 0);
+    }
+  else if (!strcmp (key, "MATHJAX_SOURCE"))
+    {
+      if (!options->MATHJAX_SOURCE.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->MATHJAX_SOURCE.o.string, 0);
+    }
+  else if (!strcmp (key, "MAX_HEADER_LEVEL"))
+    {
+      if (options->MAX_HEADER_LEVEL.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->MAX_HEADER_LEVEL.o.integer);
+    }
+  else if (!strcmp (key, "MENU_ENTRY_COLON"))
+    {
+      if (!options->MENU_ENTRY_COLON.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->MENU_ENTRY_COLON.o.string, 0);
+    }
+  else if (!strcmp (key, "MENU_SYMBOL"))
+    {
+      if (!options->MENU_SYMBOL.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->MENU_SYMBOL.o.string, 0);
+    }
+  else if (!strcmp (key, "MESSAGE_ENCODING"))
+    {
+      if (!options->MESSAGE_ENCODING.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->MESSAGE_ENCODING.o.string, 0);
+    }
+  else if (!strcmp (key, "MONOLITHIC"))
+    {
+      if (options->MONOLITHIC.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->MONOLITHIC.o.integer);
+    }
+  else if (!strcmp (key, "NO_CSS"))
+    {
+      if (options->NO_CSS.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->NO_CSS.o.integer);
+    }
+  else if (!strcmp (key, "NO_NUMBER_FOOTNOTE_SYMBOL"))
+    {
+      if (!options->NO_NUMBER_FOOTNOTE_SYMBOL.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->NO_NUMBER_FOOTNOTE_SYMBOL.o.string, 0);
+    }
+  else if (!strcmp (key, "NO_CUSTOM_HTML_ATTRIBUTE"))
+    {
+      if (options->NO_CUSTOM_HTML_ATTRIBUTE.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->NO_CUSTOM_HTML_ATTRIBUTE.o.integer);
+    }
+  else if (!strcmp (key, "NODE_NAME_IN_INDEX"))
+    {
+      if (options->NODE_NAME_IN_INDEX.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->NODE_NAME_IN_INDEX.o.integer);
+    }
+  else if (!strcmp (key, "NODE_NAME_IN_MENU"))
+    {
+      if (options->NODE_NAME_IN_MENU.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->NODE_NAME_IN_MENU.o.integer);
+    }
+  else if (!strcmp (key, "NO_TOP_NODE_OUTPUT"))
+    {
+      if (options->NO_TOP_NODE_OUTPUT.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->NO_TOP_NODE_OUTPUT.o.integer);
+    }
+  else if (!strcmp (key, "OPEN_DOUBLE_QUOTE_SYMBOL"))
+    {
+      if (!options->OPEN_DOUBLE_QUOTE_SYMBOL.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->OPEN_DOUBLE_QUOTE_SYMBOL.o.string, 0);
+    }
+  else if (!strcmp (key, "OPEN_QUOTE_SYMBOL"))
+    {
+      if (!options->OPEN_QUOTE_SYMBOL.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->OPEN_QUOTE_SYMBOL.o.string, 0);
+    }
+  else if (!strcmp (key, "OUTPUT_CHARACTERS"))
+    {
+      if (options->OUTPUT_CHARACTERS.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->OUTPUT_CHARACTERS.o.integer);
+    }
+  else if (!strcmp (key, "OUTPUT_ENCODING_NAME"))
+    {
+      if (!options->OUTPUT_ENCODING_NAME.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->OUTPUT_ENCODING_NAME.o.string, 0);
+    }
+  else if (!strcmp (key, "OUTPUT_FILE_NAME_ENCODING"))
+    {
+      if (!options->OUTPUT_FILE_NAME_ENCODING.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->OUTPUT_FILE_NAME_ENCODING.o.string, 0);
+    }
+  else if (!strcmp (key, "OUTPUT_PERL_ENCODING"))
+    {
+      if (!options->OUTPUT_PERL_ENCODING.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->OUTPUT_PERL_ENCODING.o.string, 0);
+    }
+  else if (!strcmp (key, "PACKAGE"))
+    {
+      if (!options->PACKAGE.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->PACKAGE.o.string, 0);
+    }
+  else if (!strcmp (key, "PACKAGE_AND_VERSION"))
+    {
+      if (!options->PACKAGE_AND_VERSION.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->PACKAGE_AND_VERSION.o.string, 0);
+    }
+  else if (!strcmp (key, "PACKAGE_NAME"))
+    {
+      if (!options->PACKAGE_NAME.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->PACKAGE_NAME.o.string, 0);
+    }
+  else if (!strcmp (key, "PACKAGE_URL"))
+    {
+      if (!options->PACKAGE_URL.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->PACKAGE_URL.o.string, 0);
+    }
+  else if (!strcmp (key, "PACKAGE_VERSION"))
+    {
+      if (!options->PACKAGE_VERSION.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->PACKAGE_VERSION.o.string, 0);
+    }
+  else if (!strcmp (key, "PRE_BODY_CLOSE"))
+    {
+      if (!options->PRE_BODY_CLOSE.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->PRE_BODY_CLOSE.o.string, 0);
+    }
+  else if (!strcmp (key, "PREFIX"))
+    {
+      if (!options->PREFIX.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->PREFIX.o.string, 0);
+    }
+  else if (!strcmp (key, "PROGRAM"))
+    {
+      if (!options->PROGRAM.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->PROGRAM.o.string, 0);
+    }
+  else if (!strcmp (key, "PROGRAM_NAME_IN_ABOUT"))
+    {
+      if (options->PROGRAM_NAME_IN_ABOUT.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->PROGRAM_NAME_IN_ABOUT.o.integer);
+    }
+  else if (!strcmp (key, "PROGRAM_NAME_IN_FOOTER"))
+    {
+      if (options->PROGRAM_NAME_IN_FOOTER.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->PROGRAM_NAME_IN_FOOTER.o.integer);
+    }
+  else if (!strcmp (key, "SECTION_NAME_IN_TITLE"))
+    {
+      if (options->SECTION_NAME_IN_TITLE.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->SECTION_NAME_IN_TITLE.o.integer);
+    }
+  else if (!strcmp (key, "SHORT_TOC_LINK_TO_TOC"))
+    {
+      if (options->SHORT_TOC_LINK_TO_TOC.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->SHORT_TOC_LINK_TO_TOC.o.integer);
+    }
+  else if (!strcmp (key, "SHOW_TITLE"))
+    {
+      if (options->SHOW_TITLE.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->SHOW_TITLE.o.integer);
+    }
+  else if (!strcmp (key, "T4H_LATEX_CONVERSION"))
+    {
+      if (!options->T4H_LATEX_CONVERSION.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->T4H_LATEX_CONVERSION.o.string, 0);
+    }
+  else if (!strcmp (key, "T4H_MATH_CONVERSION"))
+    {
+      if (!options->T4H_MATH_CONVERSION.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->T4H_MATH_CONVERSION.o.string, 0);
+    }
+  else if (!strcmp (key, "T4H_TEX_CONVERSION"))
+    {
+      if (!options->T4H_TEX_CONVERSION.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->T4H_TEX_CONVERSION.o.string, 0);
+    }
+  else if (!strcmp (key, "TEXI2HTML"))
+    {
+      if (options->TEXI2HTML.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->TEXI2HTML.o.integer);
+    }
+  else if (!strcmp (key, "TEXINFO_OUTPUT_FORMAT"))
+    {
+      if (!options->TEXINFO_OUTPUT_FORMAT.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->TEXINFO_OUTPUT_FORMAT.o.string, 0);
+    }
+  else if (!strcmp (key, "TXI_MARKUP_NO_SECTION_EXTENT"))
+    {
+      if (options->TXI_MARKUP_NO_SECTION_EXTENT.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->TXI_MARKUP_NO_SECTION_EXTENT.o.integer);
+    }
+  else if (!strcmp (key, "TOC_LINKS"))
+    {
+      if (options->TOC_LINKS.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->TOC_LINKS.o.integer);
+    }
+  else if (!strcmp (key, "TOP_FILE"))
+    {
+      if (!options->TOP_FILE.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->TOP_FILE.o.string, 0);
+    }
+  else if (!strcmp (key, "TOP_NODE_FILE_TARGET"))
+    {
+      if (!options->TOP_NODE_FILE_TARGET.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->TOP_NODE_FILE_TARGET.o.string, 0);
+    }
+  else if (!strcmp (key, "TOP_NODE_UP_URL"))
+    {
+      if (!options->TOP_NODE_UP_URL.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->TOP_NODE_UP_URL.o.string, 0);
+    }
+  else if (!strcmp (key, "USE_ACCESSKEY"))
+    {
+      if (options->USE_ACCESSKEY.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->USE_ACCESSKEY.o.integer);
+    }
+  else if (!strcmp (key, "USE_ISO"))
+    {
+      if (options->USE_ISO.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->USE_ISO.o.integer);
+    }
+  else if (!strcmp (key, "USE_LINKS"))
+    {
+      if (options->USE_LINKS.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->USE_LINKS.o.integer);
+    }
+  else if (!strcmp (key, "USE_NEXT_HEADING_FOR_LONE_NODE"))
+    {
+      if (options->USE_NEXT_HEADING_FOR_LONE_NODE.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->USE_NEXT_HEADING_FOR_LONE_NODE.o.integer);
+    }
+  else if (!strcmp (key, "USE_NODES"))
+    {
+      if (options->USE_NODES.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->USE_NODES.o.integer);
+    }
+  else if (!strcmp (key, "USE_NODE_DIRECTIONS"))
+    {
+      if (options->USE_NODE_DIRECTIONS.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->USE_NODE_DIRECTIONS.o.integer);
+    }
+  else if (!strcmp (key, "USE_NUMERIC_ENTITY"))
+    {
+      if (options->USE_NUMERIC_ENTITY.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->USE_NUMERIC_ENTITY.o.integer);
+    }
+  else if (!strcmp (key, "USE_REL_REV"))
+    {
+      if (options->USE_REL_REV.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->USE_REL_REV.o.integer);
+    }
+  else if (!strcmp (key, "USE_SETFILENAME_EXTENSION"))
+    {
+      if (options->USE_SETFILENAME_EXTENSION.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->USE_SETFILENAME_EXTENSION.o.integer);
+    }
+  else if (!strcmp (key, "USE_TITLEPAGE_FOR_TITLE"))
+    {
+      if (options->USE_TITLEPAGE_FOR_TITLE.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->USE_TITLEPAGE_FOR_TITLE.o.integer);
+    }
+  else if (!strcmp (key, "USE_UNIDECODE"))
+    {
+      if (options->USE_UNIDECODE.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->USE_UNIDECODE.o.integer);
+    }
+  else if (!strcmp (key, "USE_XML_SYNTAX"))
+    {
+      if (options->USE_XML_SYNTAX.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->USE_XML_SYNTAX.o.integer);
+    }
+  else if (!strcmp (key, "VERTICAL_HEAD_NAVIGATION"))
+    {
+      if (options->VERTICAL_HEAD_NAVIGATION.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->VERTICAL_HEAD_NAVIGATION.o.integer);
+    }
+  else if (!strcmp (key, "WORDS_IN_PAGE"))
+    {
+      if (options->WORDS_IN_PAGE.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->WORDS_IN_PAGE.o.integer);
+    }
+  else if (!strcmp (key, "XREF_USE_FLOAT_LABEL"))
+    {
+      if (options->XREF_USE_FLOAT_LABEL.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->XREF_USE_FLOAT_LABEL.o.integer);
+    }
+  else if (!strcmp (key, "XREF_USE_NODE_NAME_ARG"))
+    {
+      if (options->XREF_USE_NODE_NAME_ARG.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->XREF_USE_NODE_NAME_ARG.o.integer);
+    }
+  else if (!strcmp (key, "XS_EXTERNAL_CONVERSION"))
+    {
+      if (options->XS_EXTERNAL_CONVERSION.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->XS_EXTERNAL_CONVERSION.o.integer);
+    }
+  else if (!strcmp (key, "XS_EXTERNAL_FORMATTING"))
+    {
+      if (options->XS_EXTERNAL_FORMATTING.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->XS_EXTERNAL_FORMATTING.o.integer);
+    }
+  else if (!strcmp (key, "XS_STRXFRM_COLLATION_LOCALE"))
+    {
+      if (!options->XS_STRXFRM_COLLATION_LOCALE.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->XS_STRXFRM_COLLATION_LOCALE.o.string, 0);
+    }
+  else if (!strcmp (key, "_INLINE_STYLE_WIDTH"))
+    {
+      if (options->_INLINE_STYLE_WIDTH.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->_INLINE_STYLE_WIDTH.o.integer);
+    }
+
+/* converter_other */
+
+  else if (!strcmp (key, "LINKS_BUTTONS"))
+    {
+      if (!options->LINKS_BUTTONS.o.buttons) return newSV (0);
+      return newRV_inc ((SV *) options->LINKS_BUTTONS.o.buttons->av);
+    }
+  else if (!strcmp (key, "TOP_BUTTONS"))
+    {
+      if (!options->TOP_BUTTONS.o.buttons) return newSV (0);
+      return newRV_inc ((SV *) options->TOP_BUTTONS.o.buttons->av);
+    }
+  else if (!strcmp (key, "TOP_FOOTER_BUTTONS"))
+    {
+      if (!options->TOP_FOOTER_BUTTONS.o.buttons) return newSV (0);
+      return newRV_inc ((SV *) options->TOP_FOOTER_BUTTONS.o.buttons->av);
+    }
+  else if (!strcmp (key, "SECTION_BUTTONS"))
+    {
+      if (!options->SECTION_BUTTONS.o.buttons) return newSV (0);
+      return newRV_inc ((SV *) options->SECTION_BUTTONS.o.buttons->av);
+    }
+  else if (!strcmp (key, "CHAPTER_FOOTER_BUTTONS"))
+    {
+      if (!options->CHAPTER_FOOTER_BUTTONS.o.buttons) return newSV (0);
+      return newRV_inc ((SV *) options->CHAPTER_FOOTER_BUTTONS.o.buttons->av);
+    }
+  else if (!strcmp (key, "SECTION_FOOTER_BUTTONS"))
+    {
+      if (!options->SECTION_FOOTER_BUTTONS.o.buttons) return newSV (0);
+      return newRV_inc ((SV *) options->SECTION_FOOTER_BUTTONS.o.buttons->av);
+    }
+  else if (!strcmp (key, "NODE_FOOTER_BUTTONS"))
+    {
+      if (!options->NODE_FOOTER_BUTTONS.o.buttons) return newSV (0);
+      return newRV_inc ((SV *) options->NODE_FOOTER_BUTTONS.o.buttons->av);
+    }
+  else if (!strcmp (key, "MISC_BUTTONS"))
+    {
+      if (!options->MISC_BUTTONS.o.buttons) return newSV (0);
+      return newRV_inc ((SV *) options->MISC_BUTTONS.o.buttons->av);
+    }
+  else if (!strcmp (key, "CHAPTER_BUTTONS"))
+    {
+      if (!options->CHAPTER_BUTTONS.o.buttons) return newSV (0);
+      return newRV_inc ((SV *) options->CHAPTER_BUTTONS.o.buttons->av);
+    }
+  else if (!strcmp (key, "ACTIVE_ICONS"))
+    {
+      return html_build_direction_icons (converter, 
options->ACTIVE_ICONS.o.icons);
+    }
+  else if (!strcmp (key, "PASSIVE_ICONS"))
+    {
+      return html_build_direction_icons (converter, 
options->PASSIVE_ICONS.o.icons);
+    }
+
+/* multiple_at_command */
+
+  else if (!strcmp (key, "allowcodebreaks"))
+    {
+      if (!options->allowcodebreaks.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->allowcodebreaks.o.string, 0);
+    }
+  else if (!strcmp (key, "clickstyle"))
+    {
+      if (!options->clickstyle.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->clickstyle.o.string, 0);
+    }
+  else if (!strcmp (key, "codequotebacktick"))
+    {
+      if (!options->codequotebacktick.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->codequotebacktick.o.string, 0);
+    }
+  else if (!strcmp (key, "codequoteundirected"))
+    {
+      if (!options->codequoteundirected.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->codequoteundirected.o.string, 0);
+    }
+  else if (!strcmp (key, "contents"))
+    {
+      if (options->contents.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->contents.o.integer);
+    }
+  else if (!strcmp (key, "deftypefnnewline"))
+    {
+      if (!options->deftypefnnewline.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->deftypefnnewline.o.string, 0);
+    }
+  else if (!strcmp (key, "documentencoding"))
+    {
+      if (!options->documentencoding.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->documentencoding.o.string, 0);
+    }
+  else if (!strcmp (key, "documentlanguage"))
+    {
+      if (!options->documentlanguage.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->documentlanguage.o.string, 0);
+    }
+  else if (!strcmp (key, "evenfooting"))
+    {
+      if (!options->evenfooting.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->evenfooting.o.string, 0);
+    }
+  else if (!strcmp (key, "evenheading"))
+    {
+      if (!options->evenheading.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->evenheading.o.string, 0);
+    }
+  else if (!strcmp (key, "everyfooting"))
+    {
+      if (!options->everyfooting.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->everyfooting.o.string, 0);
+    }
+  else if (!strcmp (key, "everyheading"))
+    {
+      if (!options->everyheading.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->everyheading.o.string, 0);
+    }
+  else if (!strcmp (key, "exampleindent"))
+    {
+      if (!options->exampleindent.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->exampleindent.o.string, 0);
+    }
+  else if (!strcmp (key, "firstparagraphindent"))
+    {
+      if (!options->firstparagraphindent.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->firstparagraphindent.o.string, 0);
+    }
+  else if (!strcmp (key, "frenchspacing"))
+    {
+      if (!options->frenchspacing.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->frenchspacing.o.string, 0);
+    }
+  else if (!strcmp (key, "headings"))
+    {
+      if (!options->headings.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->headings.o.string, 0);
+    }
+  else if (!strcmp (key, "kbdinputstyle"))
+    {
+      if (!options->kbdinputstyle.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->kbdinputstyle.o.string, 0);
+    }
+  else if (!strcmp (key, "microtype"))
+    {
+      if (!options->microtype.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->microtype.o.string, 0);
+    }
+  else if (!strcmp (key, "oddheading"))
+    {
+      if (!options->oddheading.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->oddheading.o.string, 0);
+    }
+  else if (!strcmp (key, "oddfooting"))
+    {
+      if (!options->oddfooting.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->oddfooting.o.string, 0);
+    }
+  else if (!strcmp (key, "paragraphindent"))
+    {
+      if (!options->paragraphindent.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->paragraphindent.o.string, 0);
+    }
+  else if (!strcmp (key, "shortcontents"))
+    {
+      if (options->shortcontents.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->shortcontents.o.integer);
+    }
+  else if (!strcmp (key, "summarycontents"))
+    {
+      if (options->summarycontents.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->summarycontents.o.integer);
+    }
+  else if (!strcmp (key, "urefbreakstyle"))
+    {
+      if (!options->urefbreakstyle.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->urefbreakstyle.o.string, 0);
+    }
+  else if (!strcmp (key, "xrefautomaticsectiontitle"))
+    {
+      if (!options->xrefautomaticsectiontitle.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->xrefautomaticsectiontitle.o.string, 0);
+    }
+
+/* program_cmdline */
+
+  else if (!strcmp (key, "MACRO_EXPAND"))
+    {
+      if (!options->MACRO_EXPAND.o.string)
+        return newSV (0);
+      return newSVpv_byte (options->MACRO_EXPAND.o.string, 0);
+    }
+  else if (!strcmp (key, "INTERNAL_LINKS"))
+    {
+      if (!options->INTERNAL_LINKS.o.string)
+        return newSV (0);
+      return newSVpv_byte (options->INTERNAL_LINKS.o.string, 0);
+    }
+  else if (!strcmp (key, "ERROR_LIMIT"))
+    {
+      if (options->ERROR_LIMIT.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->ERROR_LIMIT.o.integer);
+    }
+  else if (!strcmp (key, "FORCE"))
+    {
+      if (options->FORCE.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->FORCE.o.integer);
+    }
+  else if (!strcmp (key, "NO_WARN"))
+    {
+      if (options->NO_WARN.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->NO_WARN.o.integer);
+    }
+  else if (!strcmp (key, "SILENT"))
+    {
+      if (!options->SILENT.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->SILENT.o.string, 0);
+    }
+  else if (!strcmp (key, "TRACE_INCLUDES"))
+    {
+      if (options->TRACE_INCLUDES.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->TRACE_INCLUDES.o.integer);
+    }
+  else if (!strcmp (key, "FORMAT_MENU"))
+    {
+      if (!options->FORMAT_MENU.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->FORMAT_MENU.o.string, 0);
+    }
+
+/* program_customization */
+
+  else if (!strcmp (key, "CHECK_NORMAL_MENU_STRUCTURE"))
+    {
+      if (options->CHECK_NORMAL_MENU_STRUCTURE.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->CHECK_NORMAL_MENU_STRUCTURE.o.integer);
+    }
+  else if (!strcmp (key, "CHECK_MISSING_MENU_ENTRY"))
+    {
+      if (options->CHECK_MISSING_MENU_ENTRY.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->CHECK_MISSING_MENU_ENTRY.o.integer);
+    }
+  else if (!strcmp (key, "DUMP_TREE"))
+    {
+      if (options->DUMP_TREE.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->DUMP_TREE.o.integer);
+    }
+  else if (!strcmp (key, "DUMP_TEXI"))
+    {
+      if (options->DUMP_TEXI.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->DUMP_TEXI.o.integer);
+    }
+  else if (!strcmp (key, "SHOW_BUILTIN_CSS_RULES"))
+    {
+      if (options->SHOW_BUILTIN_CSS_RULES.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->SHOW_BUILTIN_CSS_RULES.o.integer);
+    }
+  else if (!strcmp (key, "SORT_ELEMENT_COUNT"))
+    {
+      if (!options->SORT_ELEMENT_COUNT.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->SORT_ELEMENT_COUNT.o.string, 0);
+    }
+  else if (!strcmp (key, "SORT_ELEMENT_COUNT_WORDS"))
+    {
+      if (options->SORT_ELEMENT_COUNT_WORDS.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->SORT_ELEMENT_COUNT_WORDS.o.integer);
+    }
+  else if (!strcmp (key, "TEXI2DVI"))
+    {
+      if (!options->TEXI2DVI.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->TEXI2DVI.o.string, 0);
+    }
+  else if (!strcmp (key, "TREE_TRANSFORMATIONS"))
+    {
+      if (!options->TREE_TRANSFORMATIONS.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->TREE_TRANSFORMATIONS.o.string, 0);
+    }
+
+/* unique_at_command */
+
+  else if (!strcmp (key, "afivepaper"))
+    {
+      if (!options->afivepaper.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->afivepaper.o.string, 0);
+    }
+  else if (!strcmp (key, "afourpaper"))
+    {
+      if (!options->afourpaper.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->afourpaper.o.string, 0);
+    }
+  else if (!strcmp (key, "afourlatex"))
+    {
+      if (!options->afourlatex.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->afourlatex.o.string, 0);
+    }
+  else if (!strcmp (key, "afourwide"))
+    {
+      if (!options->afourwide.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->afourwide.o.string, 0);
+    }
+  else if (!strcmp (key, "bsixpaper"))
+    {
+      if (!options->bsixpaper.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->bsixpaper.o.string, 0);
+    }
+  else if (!strcmp (key, "documentdescription"))
+    {
+      if (!options->documentdescription.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->documentdescription.o.string, 0);
+    }
+  else if (!strcmp (key, "evenfootingmarks"))
+    {
+      if (!options->evenfootingmarks.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->evenfootingmarks.o.string, 0);
+    }
+  else if (!strcmp (key, "evenheadingmarks"))
+    {
+      if (!options->evenheadingmarks.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->evenheadingmarks.o.string, 0);
+    }
+  else if (!strcmp (key, "everyfootingmarks"))
+    {
+      if (!options->everyfootingmarks.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->everyfootingmarks.o.string, 0);
+    }
+  else if (!strcmp (key, "everyheadingmarks"))
+    {
+      if (!options->everyheadingmarks.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->everyheadingmarks.o.string, 0);
+    }
+  else if (!strcmp (key, "fonttextsize"))
+    {
+      if (options->fonttextsize.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->fonttextsize.o.integer);
+    }
+  else if (!strcmp (key, "footnotestyle"))
+    {
+      if (!options->footnotestyle.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->footnotestyle.o.string, 0);
+    }
+  else if (!strcmp (key, "novalidate"))
+    {
+      if (options->novalidate.o.integer == -1)
+        return newSV (0);
+      return newSViv (options->novalidate.o.integer);
+    }
+  else if (!strcmp (key, "oddfootingmarks"))
+    {
+      if (!options->oddfootingmarks.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->oddfootingmarks.o.string, 0);
+    }
+  else if (!strcmp (key, "oddheadingmarks"))
+    {
+      if (!options->oddheadingmarks.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->oddheadingmarks.o.string, 0);
+    }
+  else if (!strcmp (key, "pagesizes"))
+    {
+      if (!options->pagesizes.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->pagesizes.o.string, 0);
+    }
+  else if (!strcmp (key, "setchapternewpage"))
+    {
+      if (!options->setchapternewpage.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->setchapternewpage.o.string, 0);
+    }
+  else if (!strcmp (key, "setfilename"))
+    {
+      if (!options->setfilename.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->setfilename.o.string, 0);
+    }
+  else if (!strcmp (key, "smallbook"))
+    {
+      if (!options->smallbook.o.string)
+        return newSV (0);
+      return newSVpv_utf8 (options->smallbook.o.string, 0);
+    }
+
+  return newSV (0);
+}
+
diff --git a/tp/Texinfo/XS/main/options_init_free.c 
b/tp/Texinfo/XS/main/options_init_free.c
new file mode 100644
index 0000000000..039c422c67
--- /dev/null
+++ b/tp/Texinfo/XS/main/options_init_free.c
@@ -0,0 +1,3143 @@
+/* Automatically generated from regenerate_C_options_info.pl */
+
+#include <config.h>
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "option_types.h"
+#include "options_types.h"
+#include "converter_types.h"
+#include "utils.h"
+
+void
+initialize_options (OPTIONS *options)
+{
+  options->BIT_user_function_number = 0;
+
+/* array_cmdline */
+
+  initialize_option (&options->CSS_FILES, GOT_bytes_string_list, "CSS_FILES");
+  initialize_option (&options->CSS_REFS, GOT_char_string_list, "CSS_REFS");
+  initialize_option (&options->EXPANDED_FORMATS, GOT_bytes_string_list, 
"EXPANDED_FORMATS");
+  initialize_option (&options->INCLUDE_DIRECTORIES, GOT_file_string_list, 
"INCLUDE_DIRECTORIES");
+  initialize_option (&options->TEXINFO_LANGUAGE_DIRECTORIES, 
GOT_file_string_list, "TEXINFO_LANGUAGE_DIRECTORIES");
+
+/* converter_cmdline */
+
+  initialize_option (&options->SPLIT_SIZE, GOT_integer, "SPLIT_SIZE");
+  initialize_option (&options->FILLCOLUMN, GOT_integer, "FILLCOLUMN");
+  initialize_option (&options->NUMBER_SECTIONS, GOT_integer, 
"NUMBER_SECTIONS");
+  initialize_option (&options->NUMBER_FOOTNOTES, GOT_integer, 
"NUMBER_FOOTNOTES");
+  initialize_option (&options->TRANSLITERATE_FILE_NAMES, GOT_integer, 
"TRANSLITERATE_FILE_NAMES");
+  initialize_option (&options->SPLIT, GOT_char, "SPLIT");
+  initialize_option (&options->HEADERS, GOT_integer, "HEADERS");
+  initialize_option (&options->NODE_FILES, GOT_integer, "NODE_FILES");
+  initialize_option (&options->VERBOSE, GOT_integer, "VERBOSE");
+  initialize_option (&options->OUTFILE, GOT_char, "OUTFILE");
+  initialize_option (&options->SUBDIR, GOT_char, "SUBDIR");
+  initialize_option (&options->ENABLE_ENCODING, GOT_integer, 
"ENABLE_ENCODING");
+
+/* converter_customization */
+
+  initialize_option (&options->TOP_NODE_UP, GOT_char, "TOP_NODE_UP");
+  initialize_option (&options->BASEFILENAME_LENGTH, GOT_integer, 
"BASEFILENAME_LENGTH");
+  initialize_option (&options->DOC_ENCODING_FOR_INPUT_FILE_NAME, GOT_integer, 
"DOC_ENCODING_FOR_INPUT_FILE_NAME");
+  initialize_option (&options->DOC_ENCODING_FOR_OUTPUT_FILE_NAME, GOT_integer, 
"DOC_ENCODING_FOR_OUTPUT_FILE_NAME");
+  initialize_option (&options->IMAGE_LINK_PREFIX, GOT_char, 
"IMAGE_LINK_PREFIX");
+  initialize_option (&options->CASE_INSENSITIVE_FILENAMES, GOT_integer, 
"CASE_INSENSITIVE_FILENAMES");
+  initialize_option (&options->DEBUG, GOT_integer, "DEBUG");
+  initialize_option (&options->HANDLER_FATAL_ERROR_LEVEL, GOT_integer, 
"HANDLER_FATAL_ERROR_LEVEL");
+  initialize_option (&options->TEST, GOT_integer, "TEST");
+  initialize_option (&options->TEXTCONTENT_COMMENT, GOT_integer, 
"TEXTCONTENT_COMMENT");
+  initialize_option (&options->TEXINFO_DTD_VERSION, GOT_char, 
"TEXINFO_DTD_VERSION");
+  initialize_option (&options->USE_UNICODE_COLLATION, GOT_integer, 
"USE_UNICODE_COLLATION");
+  initialize_option (&options->AFTER_BODY_OPEN, GOT_char, "AFTER_BODY_OPEN");
+  initialize_option (&options->AFTER_SHORT_TOC_LINES, GOT_char, 
"AFTER_SHORT_TOC_LINES");
+  initialize_option (&options->AFTER_TOC_LINES, GOT_char, "AFTER_TOC_LINES");
+  initialize_option (&options->ASCII_DASHES_AND_QUOTES, GOT_integer, 
"ASCII_DASHES_AND_QUOTES");
+  initialize_option (&options->ASCII_GLYPH, GOT_integer, "ASCII_GLYPH");
+  initialize_option (&options->ASCII_PUNCTUATION, GOT_integer, 
"ASCII_PUNCTUATION");
+  initialize_option (&options->AUTO_MENU_DESCRIPTION_ALIGN_COLUMN, 
GOT_integer, "AUTO_MENU_DESCRIPTION_ALIGN_COLUMN");
+  initialize_option (&options->AUTO_MENU_MAX_WIDTH, GOT_integer, 
"AUTO_MENU_MAX_WIDTH");
+  initialize_option (&options->BEFORE_SHORT_TOC_LINES, GOT_char, 
"BEFORE_SHORT_TOC_LINES");
+  initialize_option (&options->BEFORE_TOC_LINES, GOT_char, "BEFORE_TOC_LINES");
+  initialize_option (&options->BIG_RULE, GOT_char, "BIG_RULE");
+  initialize_option (&options->BODY_ELEMENT_ATTRIBUTES, GOT_char, 
"BODY_ELEMENT_ATTRIBUTES");
+  initialize_option (&options->CLASS_BEGIN_USEPACKAGE, GOT_char, 
"CLASS_BEGIN_USEPACKAGE");
+  initialize_option (&options->COPIABLE_LINKS, GOT_integer, "COPIABLE_LINKS");
+  initialize_option (&options->CHAPTER_HEADER_LEVEL, GOT_integer, 
"CHAPTER_HEADER_LEVEL");
+  initialize_option (&options->CHECK_HTMLXREF, GOT_integer, "CHECK_HTMLXREF");
+  initialize_option (&options->CLOSE_DOUBLE_QUOTE_SYMBOL, GOT_char, 
"CLOSE_DOUBLE_QUOTE_SYMBOL");
+  initialize_option (&options->CLOSE_QUOTE_SYMBOL, GOT_char, 
"CLOSE_QUOTE_SYMBOL");
+  initialize_option (&options->COLLATION_LANGUAGE, GOT_char, 
"COLLATION_LANGUAGE");
+  initialize_option (&options->COMMAND_LINE_ENCODING, GOT_char, 
"COMMAND_LINE_ENCODING");
+  initialize_option (&options->INDENTED_BLOCK_COMMANDS_IN_TABLE, GOT_integer, 
"INDENTED_BLOCK_COMMANDS_IN_TABLE");
+  initialize_option (&options->CONTENTS_OUTPUT_LOCATION, GOT_char, 
"CONTENTS_OUTPUT_LOCATION");
+  initialize_option (&options->CONVERT_TO_LATEX_IN_MATH, GOT_integer, 
"CONVERT_TO_LATEX_IN_MATH");
+  initialize_option (&options->DATE_IN_HEADER, GOT_integer, "DATE_IN_HEADER");
+  initialize_option (&options->DEFAULT_RULE, GOT_char, "DEFAULT_RULE");
+  initialize_option (&options->DEF_TABLE, GOT_integer, "DEF_TABLE");
+  initialize_option (&options->DO_ABOUT, GOT_integer, "DO_ABOUT");
+  initialize_option (&options->DOCTYPE, GOT_char, "DOCTYPE");
+  initialize_option (&options->DOCUMENTLANGUAGE_COLLATION, GOT_integer, 
"DOCUMENTLANGUAGE_COLLATION");
+  initialize_option (&options->END_USEPACKAGE, GOT_char, "END_USEPACKAGE");
+  initialize_option (&options->EPUB_CREATE_CONTAINER_FILE, GOT_integer, 
"EPUB_CREATE_CONTAINER_FILE");
+  initialize_option (&options->EPUB_KEEP_CONTAINER_FOLDER, GOT_integer, 
"EPUB_KEEP_CONTAINER_FOLDER");
+  initialize_option (&options->EXTENSION, GOT_char, "EXTENSION");
+  initialize_option (&options->EXTERNAL_CROSSREF_EXTENSION, GOT_char, 
"EXTERNAL_CROSSREF_EXTENSION");
+  initialize_option (&options->EXTERNAL_CROSSREF_SPLIT, GOT_char, 
"EXTERNAL_CROSSREF_SPLIT");
+  initialize_option (&options->EXTERNAL_DIR, GOT_char, "EXTERNAL_DIR");
+  initialize_option (&options->EXTRA_HEAD, GOT_char, "EXTRA_HEAD");
+  initialize_option (&options->FOOTNOTE_END_HEADER_LEVEL, GOT_integer, 
"FOOTNOTE_END_HEADER_LEVEL");
+  initialize_option (&options->FOOTNOTE_SEPARATE_HEADER_LEVEL, GOT_integer, 
"FOOTNOTE_SEPARATE_HEADER_LEVEL");
+  initialize_option (&options->HEADER_IN_TABLE, GOT_integer, 
"HEADER_IN_TABLE");
+  initialize_option (&options->HIGHLIGHT_SYNTAX, GOT_char, "HIGHLIGHT_SYNTAX");
+  initialize_option (&options->HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE, GOT_char, 
"HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE");
+  initialize_option (&options->HTML_MATH, GOT_char, "HTML_MATH");
+  initialize_option (&options->HTML_ROOT_ELEMENT_ATTRIBUTES, GOT_char, 
"HTML_ROOT_ELEMENT_ATTRIBUTES");
+  initialize_option (&options->HTMLXREF_FILE, GOT_char, "HTMLXREF_FILE");
+  initialize_option (&options->HTMLXREF_MODE, GOT_char, "HTMLXREF_MODE");
+  initialize_option (&options->ICONS, GOT_integer, "ICONS");
+  initialize_option (&options->INDEX_ENTRY_COLON, GOT_char, 
"INDEX_ENTRY_COLON");
+  initialize_option (&options->INDEX_SPECIAL_CHARS_WARNING, GOT_integer, 
"INDEX_SPECIAL_CHARS_WARNING");
+  initialize_option (&options->INFO_JS_DIR, GOT_char, "INFO_JS_DIR");
+  initialize_option (&options->INFO_SPECIAL_CHARS_QUOTE, GOT_char, 
"INFO_SPECIAL_CHARS_QUOTE");
+  initialize_option (&options->INFO_SPECIAL_CHARS_WARNING, GOT_integer, 
"INFO_SPECIAL_CHARS_WARNING");
+  initialize_option (&options->IGNORE_REF_TO_TOP_NODE_UP, GOT_integer, 
"IGNORE_REF_TO_TOP_NODE_UP");
+  initialize_option (&options->INLINE_CSS_STYLE, GOT_integer, 
"INLINE_CSS_STYLE");
+  initialize_option (&options->INPUT_FILE_NAME_ENCODING, GOT_char, 
"INPUT_FILE_NAME_ENCODING");
+  initialize_option (&options->JS_WEBLABELS, GOT_char, "JS_WEBLABELS");
+  initialize_option (&options->JS_WEBLABELS_FILE, GOT_char, 
"JS_WEBLABELS_FILE");
+  initialize_option (&options->LATEX_FLOATS_FILE_EXTENSION, GOT_char, 
"LATEX_FLOATS_FILE_EXTENSION");
+  initialize_option (&options->LOCALE_ENCODING, GOT_char, "LOCALE_ENCODING");
+  initialize_option (&options->L2H_CLEAN, GOT_integer, "L2H_CLEAN");
+  initialize_option (&options->L2H_FILE, GOT_char, "L2H_FILE");
+  initialize_option (&options->L2H_HTML_VERSION, GOT_char, "L2H_HTML_VERSION");
+  initialize_option (&options->L2H_L2H, GOT_char, "L2H_L2H");
+  initialize_option (&options->L2H_SKIP, GOT_integer, "L2H_SKIP");
+  initialize_option (&options->L2H_TMP, GOT_char, "L2H_TMP");
+  initialize_option (&options->MATHJAX_CONFIGURATION, GOT_char, 
"MATHJAX_CONFIGURATION");
+  initialize_option (&options->MATHJAX_SCRIPT, GOT_char, "MATHJAX_SCRIPT");
+  initialize_option (&options->MATHJAX_SOURCE, GOT_char, "MATHJAX_SOURCE");
+  initialize_option (&options->MAX_HEADER_LEVEL, GOT_integer, 
"MAX_HEADER_LEVEL");
+  initialize_option (&options->MENU_ENTRY_COLON, GOT_char, "MENU_ENTRY_COLON");
+  initialize_option (&options->MENU_SYMBOL, GOT_char, "MENU_SYMBOL");
+  initialize_option (&options->MESSAGE_ENCODING, GOT_char, "MESSAGE_ENCODING");
+  initialize_option (&options->MONOLITHIC, GOT_integer, "MONOLITHIC");
+  initialize_option (&options->NO_CSS, GOT_integer, "NO_CSS");
+  initialize_option (&options->NO_NUMBER_FOOTNOTE_SYMBOL, GOT_char, 
"NO_NUMBER_FOOTNOTE_SYMBOL");
+  initialize_option (&options->NO_CUSTOM_HTML_ATTRIBUTE, GOT_integer, 
"NO_CUSTOM_HTML_ATTRIBUTE");
+  initialize_option (&options->NODE_NAME_IN_INDEX, GOT_integer, 
"NODE_NAME_IN_INDEX");
+  initialize_option (&options->NODE_NAME_IN_MENU, GOT_integer, 
"NODE_NAME_IN_MENU");
+  initialize_option (&options->NO_TOP_NODE_OUTPUT, GOT_integer, 
"NO_TOP_NODE_OUTPUT");
+  initialize_option (&options->OPEN_DOUBLE_QUOTE_SYMBOL, GOT_char, 
"OPEN_DOUBLE_QUOTE_SYMBOL");
+  initialize_option (&options->OPEN_QUOTE_SYMBOL, GOT_char, 
"OPEN_QUOTE_SYMBOL");
+  initialize_option (&options->OUTPUT_CHARACTERS, GOT_integer, 
"OUTPUT_CHARACTERS");
+  initialize_option (&options->OUTPUT_ENCODING_NAME, GOT_char, 
"OUTPUT_ENCODING_NAME");
+  initialize_option (&options->OUTPUT_FILE_NAME_ENCODING, GOT_char, 
"OUTPUT_FILE_NAME_ENCODING");
+  initialize_option (&options->OUTPUT_PERL_ENCODING, GOT_char, 
"OUTPUT_PERL_ENCODING");
+  initialize_option (&options->PACKAGE, GOT_char, "PACKAGE");
+  initialize_option (&options->PACKAGE_AND_VERSION, GOT_char, 
"PACKAGE_AND_VERSION");
+  initialize_option (&options->PACKAGE_NAME, GOT_char, "PACKAGE_NAME");
+  initialize_option (&options->PACKAGE_URL, GOT_char, "PACKAGE_URL");
+  initialize_option (&options->PACKAGE_VERSION, GOT_char, "PACKAGE_VERSION");
+  initialize_option (&options->PRE_BODY_CLOSE, GOT_char, "PRE_BODY_CLOSE");
+  initialize_option (&options->PREFIX, GOT_char, "PREFIX");
+  initialize_option (&options->PROGRAM, GOT_char, "PROGRAM");
+  initialize_option (&options->PROGRAM_NAME_IN_ABOUT, GOT_integer, 
"PROGRAM_NAME_IN_ABOUT");
+  initialize_option (&options->PROGRAM_NAME_IN_FOOTER, GOT_integer, 
"PROGRAM_NAME_IN_FOOTER");
+  initialize_option (&options->SECTION_NAME_IN_TITLE, GOT_integer, 
"SECTION_NAME_IN_TITLE");
+  initialize_option (&options->SHORT_TOC_LINK_TO_TOC, GOT_integer, 
"SHORT_TOC_LINK_TO_TOC");
+  initialize_option (&options->SHOW_TITLE, GOT_integer, "SHOW_TITLE");
+  initialize_option (&options->T4H_LATEX_CONVERSION, GOT_char, 
"T4H_LATEX_CONVERSION");
+  initialize_option (&options->T4H_MATH_CONVERSION, GOT_char, 
"T4H_MATH_CONVERSION");
+  initialize_option (&options->T4H_TEX_CONVERSION, GOT_char, 
"T4H_TEX_CONVERSION");
+  initialize_option (&options->TEXI2HTML, GOT_integer, "TEXI2HTML");
+  initialize_option (&options->TEXINFO_OUTPUT_FORMAT, GOT_char, 
"TEXINFO_OUTPUT_FORMAT");
+  initialize_option (&options->TXI_MARKUP_NO_SECTION_EXTENT, GOT_integer, 
"TXI_MARKUP_NO_SECTION_EXTENT");
+  initialize_option (&options->TOC_LINKS, GOT_integer, "TOC_LINKS");
+  initialize_option (&options->TOP_FILE, GOT_char, "TOP_FILE");
+  initialize_option (&options->TOP_NODE_FILE_TARGET, GOT_char, 
"TOP_NODE_FILE_TARGET");
+  initialize_option (&options->TOP_NODE_UP_URL, GOT_char, "TOP_NODE_UP_URL");
+  initialize_option (&options->USE_ACCESSKEY, GOT_integer, "USE_ACCESSKEY");
+  initialize_option (&options->USE_ISO, GOT_integer, "USE_ISO");
+  initialize_option (&options->USE_LINKS, GOT_integer, "USE_LINKS");
+  initialize_option (&options->USE_NEXT_HEADING_FOR_LONE_NODE, GOT_integer, 
"USE_NEXT_HEADING_FOR_LONE_NODE");
+  initialize_option (&options->USE_NODES, GOT_integer, "USE_NODES");
+  initialize_option (&options->USE_NODE_DIRECTIONS, GOT_integer, 
"USE_NODE_DIRECTIONS");
+  initialize_option (&options->USE_NUMERIC_ENTITY, GOT_integer, 
"USE_NUMERIC_ENTITY");
+  initialize_option (&options->USE_REL_REV, GOT_integer, "USE_REL_REV");
+  initialize_option (&options->USE_SETFILENAME_EXTENSION, GOT_integer, 
"USE_SETFILENAME_EXTENSION");
+  initialize_option (&options->USE_TITLEPAGE_FOR_TITLE, GOT_integer, 
"USE_TITLEPAGE_FOR_TITLE");
+  initialize_option (&options->USE_UNIDECODE, GOT_integer, "USE_UNIDECODE");
+  initialize_option (&options->USE_XML_SYNTAX, GOT_integer, "USE_XML_SYNTAX");
+  initialize_option (&options->VERTICAL_HEAD_NAVIGATION, GOT_integer, 
"VERTICAL_HEAD_NAVIGATION");
+  initialize_option (&options->WORDS_IN_PAGE, GOT_integer, "WORDS_IN_PAGE");
+  initialize_option (&options->XREF_USE_FLOAT_LABEL, GOT_integer, 
"XREF_USE_FLOAT_LABEL");
+  initialize_option (&options->XREF_USE_NODE_NAME_ARG, GOT_integer, 
"XREF_USE_NODE_NAME_ARG");
+  initialize_option (&options->XS_EXTERNAL_CONVERSION, GOT_integer, 
"XS_EXTERNAL_CONVERSION");
+  initialize_option (&options->XS_EXTERNAL_FORMATTING, GOT_integer, 
"XS_EXTERNAL_FORMATTING");
+  initialize_option (&options->XS_STRXFRM_COLLATION_LOCALE, GOT_char, 
"XS_STRXFRM_COLLATION_LOCALE");
+  initialize_option (&options->_INLINE_STYLE_WIDTH, GOT_integer, 
"_INLINE_STYLE_WIDTH");
+
+/* converter_other */
+
+  initialize_option (&options->LINKS_BUTTONS, GOT_buttons, "LINKS_BUTTONS");
+  initialize_option (&options->TOP_BUTTONS, GOT_buttons, "TOP_BUTTONS");
+  initialize_option (&options->TOP_FOOTER_BUTTONS, GOT_buttons, 
"TOP_FOOTER_BUTTONS");
+  initialize_option (&options->SECTION_BUTTONS, GOT_buttons, 
"SECTION_BUTTONS");
+  initialize_option (&options->CHAPTER_FOOTER_BUTTONS, GOT_buttons, 
"CHAPTER_FOOTER_BUTTONS");
+  initialize_option (&options->SECTION_FOOTER_BUTTONS, GOT_buttons, 
"SECTION_FOOTER_BUTTONS");
+  initialize_option (&options->NODE_FOOTER_BUTTONS, GOT_buttons, 
"NODE_FOOTER_BUTTONS");
+  initialize_option (&options->MISC_BUTTONS, GOT_buttons, "MISC_BUTTONS");
+  initialize_option (&options->CHAPTER_BUTTONS, GOT_buttons, 
"CHAPTER_BUTTONS");
+  initialize_option (&options->ACTIVE_ICONS, GOT_icons, "ACTIVE_ICONS");
+  initialize_option (&options->PASSIVE_ICONS, GOT_icons, "PASSIVE_ICONS");
+
+/* multiple_at_command */
+
+  initialize_option (&options->allowcodebreaks, GOT_char, "allowcodebreaks");
+  initialize_option (&options->clickstyle, GOT_char, "clickstyle");
+  initialize_option (&options->codequotebacktick, GOT_char, 
"codequotebacktick");
+  initialize_option (&options->codequoteundirected, GOT_char, 
"codequoteundirected");
+  initialize_option (&options->contents, GOT_integer, "contents");
+  initialize_option (&options->deftypefnnewline, GOT_char, "deftypefnnewline");
+  initialize_option (&options->documentencoding, GOT_char, "documentencoding");
+  initialize_option (&options->documentlanguage, GOT_char, "documentlanguage");
+  initialize_option (&options->evenfooting, GOT_char, "evenfooting");
+  initialize_option (&options->evenheading, GOT_char, "evenheading");
+  initialize_option (&options->everyfooting, GOT_char, "everyfooting");
+  initialize_option (&options->everyheading, GOT_char, "everyheading");
+  initialize_option (&options->exampleindent, GOT_char, "exampleindent");
+  initialize_option (&options->firstparagraphindent, GOT_char, 
"firstparagraphindent");
+  initialize_option (&options->frenchspacing, GOT_char, "frenchspacing");
+  initialize_option (&options->headings, GOT_char, "headings");
+  initialize_option (&options->kbdinputstyle, GOT_char, "kbdinputstyle");
+  initialize_option (&options->microtype, GOT_char, "microtype");
+  initialize_option (&options->oddheading, GOT_char, "oddheading");
+  initialize_option (&options->oddfooting, GOT_char, "oddfooting");
+  initialize_option (&options->paragraphindent, GOT_char, "paragraphindent");
+  initialize_option (&options->shortcontents, GOT_integer, "shortcontents");
+  initialize_option (&options->summarycontents, GOT_integer, 
"summarycontents");
+  initialize_option (&options->urefbreakstyle, GOT_char, "urefbreakstyle");
+  initialize_option (&options->xrefautomaticsectiontitle, GOT_char, 
"xrefautomaticsectiontitle");
+
+/* program_cmdline */
+
+  initialize_option (&options->MACRO_EXPAND, GOT_bytes, "MACRO_EXPAND");
+  initialize_option (&options->INTERNAL_LINKS, GOT_bytes, "INTERNAL_LINKS");
+  initialize_option (&options->ERROR_LIMIT, GOT_integer, "ERROR_LIMIT");
+  initialize_option (&options->FORCE, GOT_integer, "FORCE");
+  initialize_option (&options->NO_WARN, GOT_integer, "NO_WARN");
+  initialize_option (&options->SILENT, GOT_char, "SILENT");
+  initialize_option (&options->TRACE_INCLUDES, GOT_integer, "TRACE_INCLUDES");
+  initialize_option (&options->FORMAT_MENU, GOT_char, "FORMAT_MENU");
+
+/* program_customization */
+
+  initialize_option (&options->CHECK_NORMAL_MENU_STRUCTURE, GOT_integer, 
"CHECK_NORMAL_MENU_STRUCTURE");
+  initialize_option (&options->CHECK_MISSING_MENU_ENTRY, GOT_integer, 
"CHECK_MISSING_MENU_ENTRY");
+  initialize_option (&options->DUMP_TREE, GOT_integer, "DUMP_TREE");
+  initialize_option (&options->DUMP_TEXI, GOT_integer, "DUMP_TEXI");
+  initialize_option (&options->SHOW_BUILTIN_CSS_RULES, GOT_integer, 
"SHOW_BUILTIN_CSS_RULES");
+  initialize_option (&options->SORT_ELEMENT_COUNT, GOT_char, 
"SORT_ELEMENT_COUNT");
+  initialize_option (&options->SORT_ELEMENT_COUNT_WORDS, GOT_integer, 
"SORT_ELEMENT_COUNT_WORDS");
+  initialize_option (&options->TEXI2DVI, GOT_char, "TEXI2DVI");
+  initialize_option (&options->TREE_TRANSFORMATIONS, GOT_char, 
"TREE_TRANSFORMATIONS");
+
+/* unique_at_command */
+
+  initialize_option (&options->afivepaper, GOT_char, "afivepaper");
+  initialize_option (&options->afourpaper, GOT_char, "afourpaper");
+  initialize_option (&options->afourlatex, GOT_char, "afourlatex");
+  initialize_option (&options->afourwide, GOT_char, "afourwide");
+  initialize_option (&options->bsixpaper, GOT_char, "bsixpaper");
+  initialize_option (&options->documentdescription, GOT_char, 
"documentdescription");
+  initialize_option (&options->evenfootingmarks, GOT_char, "evenfootingmarks");
+  initialize_option (&options->evenheadingmarks, GOT_char, "evenheadingmarks");
+  initialize_option (&options->everyfootingmarks, GOT_char, 
"everyfootingmarks");
+  initialize_option (&options->everyheadingmarks, GOT_char, 
"everyheadingmarks");
+  initialize_option (&options->fonttextsize, GOT_integer, "fonttextsize");
+  initialize_option (&options->footnotestyle, GOT_char, "footnotestyle");
+  initialize_option (&options->novalidate, GOT_integer, "novalidate");
+  initialize_option (&options->oddfootingmarks, GOT_char, "oddfootingmarks");
+  initialize_option (&options->oddheadingmarks, GOT_char, "oddheadingmarks");
+  initialize_option (&options->pagesizes, GOT_char, "pagesizes");
+  initialize_option (&options->setchapternewpage, GOT_char, 
"setchapternewpage");
+  initialize_option (&options->setfilename, GOT_char, "setfilename");
+  initialize_option (&options->smallbook, GOT_char, "smallbook");
+}
+
+OPTION **
+setup_sortable_options (OPTIONS *options)
+{
+  OPTION **result = (OPTION **)
+    malloc (sizeof (OPTION *) * TXI_OPTIONS_NR);
+
+
+/* array_cmdline */
+
+  result[0] = &options->CSS_FILES;
+  result[1] = &options->CSS_REFS;
+  result[2] = &options->EXPANDED_FORMATS;
+  result[3] = &options->INCLUDE_DIRECTORIES;
+  result[4] = &options->TEXINFO_LANGUAGE_DIRECTORIES;
+
+/* converter_cmdline */
+
+  result[5] = &options->SPLIT_SIZE;
+  result[6] = &options->FILLCOLUMN;
+  result[7] = &options->NUMBER_SECTIONS;
+  result[8] = &options->NUMBER_FOOTNOTES;
+  result[9] = &options->TRANSLITERATE_FILE_NAMES;
+  result[10] = &options->SPLIT;
+  result[11] = &options->HEADERS;
+  result[12] = &options->NODE_FILES;
+  result[13] = &options->VERBOSE;
+  result[14] = &options->OUTFILE;
+  result[15] = &options->SUBDIR;
+  result[16] = &options->ENABLE_ENCODING;
+
+/* converter_customization */
+
+  result[17] = &options->TOP_NODE_UP;
+  result[18] = &options->BASEFILENAME_LENGTH;
+  result[19] = &options->DOC_ENCODING_FOR_INPUT_FILE_NAME;
+  result[20] = &options->DOC_ENCODING_FOR_OUTPUT_FILE_NAME;
+  result[21] = &options->IMAGE_LINK_PREFIX;
+  result[22] = &options->CASE_INSENSITIVE_FILENAMES;
+  result[23] = &options->DEBUG;
+  result[24] = &options->HANDLER_FATAL_ERROR_LEVEL;
+  result[25] = &options->TEST;
+  result[26] = &options->TEXTCONTENT_COMMENT;
+  result[27] = &options->TEXINFO_DTD_VERSION;
+  result[28] = &options->USE_UNICODE_COLLATION;
+  result[29] = &options->AFTER_BODY_OPEN;
+  result[30] = &options->AFTER_SHORT_TOC_LINES;
+  result[31] = &options->AFTER_TOC_LINES;
+  result[32] = &options->ASCII_DASHES_AND_QUOTES;
+  result[33] = &options->ASCII_GLYPH;
+  result[34] = &options->ASCII_PUNCTUATION;
+  result[35] = &options->AUTO_MENU_DESCRIPTION_ALIGN_COLUMN;
+  result[36] = &options->AUTO_MENU_MAX_WIDTH;
+  result[37] = &options->BEFORE_SHORT_TOC_LINES;
+  result[38] = &options->BEFORE_TOC_LINES;
+  result[39] = &options->BIG_RULE;
+  result[40] = &options->BODY_ELEMENT_ATTRIBUTES;
+  result[41] = &options->CLASS_BEGIN_USEPACKAGE;
+  result[42] = &options->COPIABLE_LINKS;
+  result[43] = &options->CHAPTER_HEADER_LEVEL;
+  result[44] = &options->CHECK_HTMLXREF;
+  result[45] = &options->CLOSE_DOUBLE_QUOTE_SYMBOL;
+  result[46] = &options->CLOSE_QUOTE_SYMBOL;
+  result[47] = &options->COLLATION_LANGUAGE;
+  result[48] = &options->COMMAND_LINE_ENCODING;
+  result[49] = &options->INDENTED_BLOCK_COMMANDS_IN_TABLE;
+  result[50] = &options->CONTENTS_OUTPUT_LOCATION;
+  result[51] = &options->CONVERT_TO_LATEX_IN_MATH;
+  result[52] = &options->DATE_IN_HEADER;
+  result[53] = &options->DEFAULT_RULE;
+  result[54] = &options->DEF_TABLE;
+  result[55] = &options->DO_ABOUT;
+  result[56] = &options->DOCTYPE;
+  result[57] = &options->DOCUMENTLANGUAGE_COLLATION;
+  result[58] = &options->END_USEPACKAGE;
+  result[59] = &options->EPUB_CREATE_CONTAINER_FILE;
+  result[60] = &options->EPUB_KEEP_CONTAINER_FOLDER;
+  result[61] = &options->EXTENSION;
+  result[62] = &options->EXTERNAL_CROSSREF_EXTENSION;
+  result[63] = &options->EXTERNAL_CROSSREF_SPLIT;
+  result[64] = &options->EXTERNAL_DIR;
+  result[65] = &options->EXTRA_HEAD;
+  result[66] = &options->FOOTNOTE_END_HEADER_LEVEL;
+  result[67] = &options->FOOTNOTE_SEPARATE_HEADER_LEVEL;
+  result[68] = &options->HEADER_IN_TABLE;
+  result[69] = &options->HIGHLIGHT_SYNTAX;
+  result[70] = &options->HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE;
+  result[71] = &options->HTML_MATH;
+  result[72] = &options->HTML_ROOT_ELEMENT_ATTRIBUTES;
+  result[73] = &options->HTMLXREF_FILE;
+  result[74] = &options->HTMLXREF_MODE;
+  result[75] = &options->ICONS;
+  result[76] = &options->INDEX_ENTRY_COLON;
+  result[77] = &options->INDEX_SPECIAL_CHARS_WARNING;
+  result[78] = &options->INFO_JS_DIR;
+  result[79] = &options->INFO_SPECIAL_CHARS_QUOTE;
+  result[80] = &options->INFO_SPECIAL_CHARS_WARNING;
+  result[81] = &options->IGNORE_REF_TO_TOP_NODE_UP;
+  result[82] = &options->INLINE_CSS_STYLE;
+  result[83] = &options->INPUT_FILE_NAME_ENCODING;
+  result[84] = &options->JS_WEBLABELS;
+  result[85] = &options->JS_WEBLABELS_FILE;
+  result[86] = &options->LATEX_FLOATS_FILE_EXTENSION;
+  result[87] = &options->LOCALE_ENCODING;
+  result[88] = &options->L2H_CLEAN;
+  result[89] = &options->L2H_FILE;
+  result[90] = &options->L2H_HTML_VERSION;
+  result[91] = &options->L2H_L2H;
+  result[92] = &options->L2H_SKIP;
+  result[93] = &options->L2H_TMP;
+  result[94] = &options->MATHJAX_CONFIGURATION;
+  result[95] = &options->MATHJAX_SCRIPT;
+  result[96] = &options->MATHJAX_SOURCE;
+  result[97] = &options->MAX_HEADER_LEVEL;
+  result[98] = &options->MENU_ENTRY_COLON;
+  result[99] = &options->MENU_SYMBOL;
+  result[100] = &options->MESSAGE_ENCODING;
+  result[101] = &options->MONOLITHIC;
+  result[102] = &options->NO_CSS;
+  result[103] = &options->NO_NUMBER_FOOTNOTE_SYMBOL;
+  result[104] = &options->NO_CUSTOM_HTML_ATTRIBUTE;
+  result[105] = &options->NODE_NAME_IN_INDEX;
+  result[106] = &options->NODE_NAME_IN_MENU;
+  result[107] = &options->NO_TOP_NODE_OUTPUT;
+  result[108] = &options->OPEN_DOUBLE_QUOTE_SYMBOL;
+  result[109] = &options->OPEN_QUOTE_SYMBOL;
+  result[110] = &options->OUTPUT_CHARACTERS;
+  result[111] = &options->OUTPUT_ENCODING_NAME;
+  result[112] = &options->OUTPUT_FILE_NAME_ENCODING;
+  result[113] = &options->OUTPUT_PERL_ENCODING;
+  result[114] = &options->PACKAGE;
+  result[115] = &options->PACKAGE_AND_VERSION;
+  result[116] = &options->PACKAGE_NAME;
+  result[117] = &options->PACKAGE_URL;
+  result[118] = &options->PACKAGE_VERSION;
+  result[119] = &options->PRE_BODY_CLOSE;
+  result[120] = &options->PREFIX;
+  result[121] = &options->PROGRAM;
+  result[122] = &options->PROGRAM_NAME_IN_ABOUT;
+  result[123] = &options->PROGRAM_NAME_IN_FOOTER;
+  result[124] = &options->SECTION_NAME_IN_TITLE;
+  result[125] = &options->SHORT_TOC_LINK_TO_TOC;
+  result[126] = &options->SHOW_TITLE;
+  result[127] = &options->T4H_LATEX_CONVERSION;
+  result[128] = &options->T4H_MATH_CONVERSION;
+  result[129] = &options->T4H_TEX_CONVERSION;
+  result[130] = &options->TEXI2HTML;
+  result[131] = &options->TEXINFO_OUTPUT_FORMAT;
+  result[132] = &options->TXI_MARKUP_NO_SECTION_EXTENT;
+  result[133] = &options->TOC_LINKS;
+  result[134] = &options->TOP_FILE;
+  result[135] = &options->TOP_NODE_FILE_TARGET;
+  result[136] = &options->TOP_NODE_UP_URL;
+  result[137] = &options->USE_ACCESSKEY;
+  result[138] = &options->USE_ISO;
+  result[139] = &options->USE_LINKS;
+  result[140] = &options->USE_NEXT_HEADING_FOR_LONE_NODE;
+  result[141] = &options->USE_NODES;
+  result[142] = &options->USE_NODE_DIRECTIONS;
+  result[143] = &options->USE_NUMERIC_ENTITY;
+  result[144] = &options->USE_REL_REV;
+  result[145] = &options->USE_SETFILENAME_EXTENSION;
+  result[146] = &options->USE_TITLEPAGE_FOR_TITLE;
+  result[147] = &options->USE_UNIDECODE;
+  result[148] = &options->USE_XML_SYNTAX;
+  result[149] = &options->VERTICAL_HEAD_NAVIGATION;
+  result[150] = &options->WORDS_IN_PAGE;
+  result[151] = &options->XREF_USE_FLOAT_LABEL;
+  result[152] = &options->XREF_USE_NODE_NAME_ARG;
+  result[153] = &options->XS_EXTERNAL_CONVERSION;
+  result[154] = &options->XS_EXTERNAL_FORMATTING;
+  result[155] = &options->XS_STRXFRM_COLLATION_LOCALE;
+  result[156] = &options->_INLINE_STYLE_WIDTH;
+
+/* converter_other */
+
+  result[157] = &options->LINKS_BUTTONS;
+  result[158] = &options->TOP_BUTTONS;
+  result[159] = &options->TOP_FOOTER_BUTTONS;
+  result[160] = &options->SECTION_BUTTONS;
+  result[161] = &options->CHAPTER_FOOTER_BUTTONS;
+  result[162] = &options->SECTION_FOOTER_BUTTONS;
+  result[163] = &options->NODE_FOOTER_BUTTONS;
+  result[164] = &options->MISC_BUTTONS;
+  result[165] = &options->CHAPTER_BUTTONS;
+  result[166] = &options->ACTIVE_ICONS;
+  result[167] = &options->PASSIVE_ICONS;
+
+/* multiple_at_command */
+
+  result[168] = &options->allowcodebreaks;
+  result[169] = &options->clickstyle;
+  result[170] = &options->codequotebacktick;
+  result[171] = &options->codequoteundirected;
+  result[172] = &options->contents;
+  result[173] = &options->deftypefnnewline;
+  result[174] = &options->documentencoding;
+  result[175] = &options->documentlanguage;
+  result[176] = &options->evenfooting;
+  result[177] = &options->evenheading;
+  result[178] = &options->everyfooting;
+  result[179] = &options->everyheading;
+  result[180] = &options->exampleindent;
+  result[181] = &options->firstparagraphindent;
+  result[182] = &options->frenchspacing;
+  result[183] = &options->headings;
+  result[184] = &options->kbdinputstyle;
+  result[185] = &options->microtype;
+  result[186] = &options->oddheading;
+  result[187] = &options->oddfooting;
+  result[188] = &options->paragraphindent;
+  result[189] = &options->shortcontents;
+  result[190] = &options->summarycontents;
+  result[191] = &options->urefbreakstyle;
+  result[192] = &options->xrefautomaticsectiontitle;
+
+/* program_cmdline */
+
+  result[193] = &options->MACRO_EXPAND;
+  result[194] = &options->INTERNAL_LINKS;
+  result[195] = &options->ERROR_LIMIT;
+  result[196] = &options->FORCE;
+  result[197] = &options->NO_WARN;
+  result[198] = &options->SILENT;
+  result[199] = &options->TRACE_INCLUDES;
+  result[200] = &options->FORMAT_MENU;
+
+/* program_customization */
+
+  result[201] = &options->CHECK_NORMAL_MENU_STRUCTURE;
+  result[202] = &options->CHECK_MISSING_MENU_ENTRY;
+  result[203] = &options->DUMP_TREE;
+  result[204] = &options->DUMP_TEXI;
+  result[205] = &options->SHOW_BUILTIN_CSS_RULES;
+  result[206] = &options->SORT_ELEMENT_COUNT;
+  result[207] = &options->SORT_ELEMENT_COUNT_WORDS;
+  result[208] = &options->TEXI2DVI;
+  result[209] = &options->TREE_TRANSFORMATIONS;
+
+/* unique_at_command */
+
+  result[210] = &options->afivepaper;
+  result[211] = &options->afourpaper;
+  result[212] = &options->afourlatex;
+  result[213] = &options->afourwide;
+  result[214] = &options->bsixpaper;
+  result[215] = &options->documentdescription;
+  result[216] = &options->evenfootingmarks;
+  result[217] = &options->evenheadingmarks;
+  result[218] = &options->everyfootingmarks;
+  result[219] = &options->everyheadingmarks;
+  result[220] = &options->fonttextsize;
+  result[221] = &options->footnotestyle;
+  result[222] = &options->novalidate;
+  result[223] = &options->oddfootingmarks;
+  result[224] = &options->oddheadingmarks;
+  result[225] = &options->pagesizes;
+  result[226] = &options->setchapternewpage;
+  result[227] = &options->setfilename;
+  result[228] = &options->smallbook;
+
+  return result;
+}
+
+void
+free_options (OPTIONS *options)
+{
+
+/* array_cmdline */
+
+  free_option (&options->CSS_FILES);
+  free_option (&options->CSS_REFS);
+  free_option (&options->EXPANDED_FORMATS);
+  free_option (&options->INCLUDE_DIRECTORIES);
+  free_option (&options->TEXINFO_LANGUAGE_DIRECTORIES);
+
+/* converter_cmdline */
+
+  free_option (&options->SPLIT_SIZE);
+  free_option (&options->FILLCOLUMN);
+  free_option (&options->NUMBER_SECTIONS);
+  free_option (&options->NUMBER_FOOTNOTES);
+  free_option (&options->TRANSLITERATE_FILE_NAMES);
+  free_option (&options->SPLIT);
+  free_option (&options->HEADERS);
+  free_option (&options->NODE_FILES);
+  free_option (&options->VERBOSE);
+  free_option (&options->OUTFILE);
+  free_option (&options->SUBDIR);
+  free_option (&options->ENABLE_ENCODING);
+
+/* converter_customization */
+
+  free_option (&options->TOP_NODE_UP);
+  free_option (&options->BASEFILENAME_LENGTH);
+  free_option (&options->DOC_ENCODING_FOR_INPUT_FILE_NAME);
+  free_option (&options->DOC_ENCODING_FOR_OUTPUT_FILE_NAME);
+  free_option (&options->IMAGE_LINK_PREFIX);
+  free_option (&options->CASE_INSENSITIVE_FILENAMES);
+  free_option (&options->DEBUG);
+  free_option (&options->HANDLER_FATAL_ERROR_LEVEL);
+  free_option (&options->TEST);
+  free_option (&options->TEXTCONTENT_COMMENT);
+  free_option (&options->TEXINFO_DTD_VERSION);
+  free_option (&options->USE_UNICODE_COLLATION);
+  free_option (&options->AFTER_BODY_OPEN);
+  free_option (&options->AFTER_SHORT_TOC_LINES);
+  free_option (&options->AFTER_TOC_LINES);
+  free_option (&options->ASCII_DASHES_AND_QUOTES);
+  free_option (&options->ASCII_GLYPH);
+  free_option (&options->ASCII_PUNCTUATION);
+  free_option (&options->AUTO_MENU_DESCRIPTION_ALIGN_COLUMN);
+  free_option (&options->AUTO_MENU_MAX_WIDTH);
+  free_option (&options->BEFORE_SHORT_TOC_LINES);
+  free_option (&options->BEFORE_TOC_LINES);
+  free_option (&options->BIG_RULE);
+  free_option (&options->BODY_ELEMENT_ATTRIBUTES);
+  free_option (&options->CLASS_BEGIN_USEPACKAGE);
+  free_option (&options->COPIABLE_LINKS);
+  free_option (&options->CHAPTER_HEADER_LEVEL);
+  free_option (&options->CHECK_HTMLXREF);
+  free_option (&options->CLOSE_DOUBLE_QUOTE_SYMBOL);
+  free_option (&options->CLOSE_QUOTE_SYMBOL);
+  free_option (&options->COLLATION_LANGUAGE);
+  free_option (&options->COMMAND_LINE_ENCODING);
+  free_option (&options->INDENTED_BLOCK_COMMANDS_IN_TABLE);
+  free_option (&options->CONTENTS_OUTPUT_LOCATION);
+  free_option (&options->CONVERT_TO_LATEX_IN_MATH);
+  free_option (&options->DATE_IN_HEADER);
+  free_option (&options->DEFAULT_RULE);
+  free_option (&options->DEF_TABLE);
+  free_option (&options->DO_ABOUT);
+  free_option (&options->DOCTYPE);
+  free_option (&options->DOCUMENTLANGUAGE_COLLATION);
+  free_option (&options->END_USEPACKAGE);
+  free_option (&options->EPUB_CREATE_CONTAINER_FILE);
+  free_option (&options->EPUB_KEEP_CONTAINER_FOLDER);
+  free_option (&options->EXTENSION);
+  free_option (&options->EXTERNAL_CROSSREF_EXTENSION);
+  free_option (&options->EXTERNAL_CROSSREF_SPLIT);
+  free_option (&options->EXTERNAL_DIR);
+  free_option (&options->EXTRA_HEAD);
+  free_option (&options->FOOTNOTE_END_HEADER_LEVEL);
+  free_option (&options->FOOTNOTE_SEPARATE_HEADER_LEVEL);
+  free_option (&options->HEADER_IN_TABLE);
+  free_option (&options->HIGHLIGHT_SYNTAX);
+  free_option (&options->HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE);
+  free_option (&options->HTML_MATH);
+  free_option (&options->HTML_ROOT_ELEMENT_ATTRIBUTES);
+  free_option (&options->HTMLXREF_FILE);
+  free_option (&options->HTMLXREF_MODE);
+  free_option (&options->ICONS);
+  free_option (&options->INDEX_ENTRY_COLON);
+  free_option (&options->INDEX_SPECIAL_CHARS_WARNING);
+  free_option (&options->INFO_JS_DIR);
+  free_option (&options->INFO_SPECIAL_CHARS_QUOTE);
+  free_option (&options->INFO_SPECIAL_CHARS_WARNING);
+  free_option (&options->IGNORE_REF_TO_TOP_NODE_UP);
+  free_option (&options->INLINE_CSS_STYLE);
+  free_option (&options->INPUT_FILE_NAME_ENCODING);
+  free_option (&options->JS_WEBLABELS);
+  free_option (&options->JS_WEBLABELS_FILE);
+  free_option (&options->LATEX_FLOATS_FILE_EXTENSION);
+  free_option (&options->LOCALE_ENCODING);
+  free_option (&options->L2H_CLEAN);
+  free_option (&options->L2H_FILE);
+  free_option (&options->L2H_HTML_VERSION);
+  free_option (&options->L2H_L2H);
+  free_option (&options->L2H_SKIP);
+  free_option (&options->L2H_TMP);
+  free_option (&options->MATHJAX_CONFIGURATION);
+  free_option (&options->MATHJAX_SCRIPT);
+  free_option (&options->MATHJAX_SOURCE);
+  free_option (&options->MAX_HEADER_LEVEL);
+  free_option (&options->MENU_ENTRY_COLON);
+  free_option (&options->MENU_SYMBOL);
+  free_option (&options->MESSAGE_ENCODING);
+  free_option (&options->MONOLITHIC);
+  free_option (&options->NO_CSS);
+  free_option (&options->NO_NUMBER_FOOTNOTE_SYMBOL);
+  free_option (&options->NO_CUSTOM_HTML_ATTRIBUTE);
+  free_option (&options->NODE_NAME_IN_INDEX);
+  free_option (&options->NODE_NAME_IN_MENU);
+  free_option (&options->NO_TOP_NODE_OUTPUT);
+  free_option (&options->OPEN_DOUBLE_QUOTE_SYMBOL);
+  free_option (&options->OPEN_QUOTE_SYMBOL);
+  free_option (&options->OUTPUT_CHARACTERS);
+  free_option (&options->OUTPUT_ENCODING_NAME);
+  free_option (&options->OUTPUT_FILE_NAME_ENCODING);
+  free_option (&options->OUTPUT_PERL_ENCODING);
+  free_option (&options->PACKAGE);
+  free_option (&options->PACKAGE_AND_VERSION);
+  free_option (&options->PACKAGE_NAME);
+  free_option (&options->PACKAGE_URL);
+  free_option (&options->PACKAGE_VERSION);
+  free_option (&options->PRE_BODY_CLOSE);
+  free_option (&options->PREFIX);
+  free_option (&options->PROGRAM);
+  free_option (&options->PROGRAM_NAME_IN_ABOUT);
+  free_option (&options->PROGRAM_NAME_IN_FOOTER);
+  free_option (&options->SECTION_NAME_IN_TITLE);
+  free_option (&options->SHORT_TOC_LINK_TO_TOC);
+  free_option (&options->SHOW_TITLE);
+  free_option (&options->T4H_LATEX_CONVERSION);
+  free_option (&options->T4H_MATH_CONVERSION);
+  free_option (&options->T4H_TEX_CONVERSION);
+  free_option (&options->TEXI2HTML);
+  free_option (&options->TEXINFO_OUTPUT_FORMAT);
+  free_option (&options->TXI_MARKUP_NO_SECTION_EXTENT);
+  free_option (&options->TOC_LINKS);
+  free_option (&options->TOP_FILE);
+  free_option (&options->TOP_NODE_FILE_TARGET);
+  free_option (&options->TOP_NODE_UP_URL);
+  free_option (&options->USE_ACCESSKEY);
+  free_option (&options->USE_ISO);
+  free_option (&options->USE_LINKS);
+  free_option (&options->USE_NEXT_HEADING_FOR_LONE_NODE);
+  free_option (&options->USE_NODES);
+  free_option (&options->USE_NODE_DIRECTIONS);
+  free_option (&options->USE_NUMERIC_ENTITY);
+  free_option (&options->USE_REL_REV);
+  free_option (&options->USE_SETFILENAME_EXTENSION);
+  free_option (&options->USE_TITLEPAGE_FOR_TITLE);
+  free_option (&options->USE_UNIDECODE);
+  free_option (&options->USE_XML_SYNTAX);
+  free_option (&options->VERTICAL_HEAD_NAVIGATION);
+  free_option (&options->WORDS_IN_PAGE);
+  free_option (&options->XREF_USE_FLOAT_LABEL);
+  free_option (&options->XREF_USE_NODE_NAME_ARG);
+  free_option (&options->XS_EXTERNAL_CONVERSION);
+  free_option (&options->XS_EXTERNAL_FORMATTING);
+  free_option (&options->XS_STRXFRM_COLLATION_LOCALE);
+  free_option (&options->_INLINE_STYLE_WIDTH);
+
+/* converter_other */
+
+  free_option (&options->LINKS_BUTTONS);
+  free_option (&options->TOP_BUTTONS);
+  free_option (&options->TOP_FOOTER_BUTTONS);
+  free_option (&options->SECTION_BUTTONS);
+  free_option (&options->CHAPTER_FOOTER_BUTTONS);
+  free_option (&options->SECTION_FOOTER_BUTTONS);
+  free_option (&options->NODE_FOOTER_BUTTONS);
+  free_option (&options->MISC_BUTTONS);
+  free_option (&options->CHAPTER_BUTTONS);
+  free_option (&options->ACTIVE_ICONS);
+  free_option (&options->PASSIVE_ICONS);
+
+/* multiple_at_command */
+
+  free_option (&options->allowcodebreaks);
+  free_option (&options->clickstyle);
+  free_option (&options->codequotebacktick);
+  free_option (&options->codequoteundirected);
+  free_option (&options->contents);
+  free_option (&options->deftypefnnewline);
+  free_option (&options->documentencoding);
+  free_option (&options->documentlanguage);
+  free_option (&options->evenfooting);
+  free_option (&options->evenheading);
+  free_option (&options->everyfooting);
+  free_option (&options->everyheading);
+  free_option (&options->exampleindent);
+  free_option (&options->firstparagraphindent);
+  free_option (&options->frenchspacing);
+  free_option (&options->headings);
+  free_option (&options->kbdinputstyle);
+  free_option (&options->microtype);
+  free_option (&options->oddheading);
+  free_option (&options->oddfooting);
+  free_option (&options->paragraphindent);
+  free_option (&options->shortcontents);
+  free_option (&options->summarycontents);
+  free_option (&options->urefbreakstyle);
+  free_option (&options->xrefautomaticsectiontitle);
+
+/* program_cmdline */
+
+  free_option (&options->MACRO_EXPAND);
+  free_option (&options->INTERNAL_LINKS);
+  free_option (&options->ERROR_LIMIT);
+  free_option (&options->FORCE);
+  free_option (&options->NO_WARN);
+  free_option (&options->SILENT);
+  free_option (&options->TRACE_INCLUDES);
+  free_option (&options->FORMAT_MENU);
+
+/* program_customization */
+
+  free_option (&options->CHECK_NORMAL_MENU_STRUCTURE);
+  free_option (&options->CHECK_MISSING_MENU_ENTRY);
+  free_option (&options->DUMP_TREE);
+  free_option (&options->DUMP_TEXI);
+  free_option (&options->SHOW_BUILTIN_CSS_RULES);
+  free_option (&options->SORT_ELEMENT_COUNT);
+  free_option (&options->SORT_ELEMENT_COUNT_WORDS);
+  free_option (&options->TEXI2DVI);
+  free_option (&options->TREE_TRANSFORMATIONS);
+
+/* unique_at_command */
+
+  free_option (&options->afivepaper);
+  free_option (&options->afourpaper);
+  free_option (&options->afourlatex);
+  free_option (&options->afourwide);
+  free_option (&options->bsixpaper);
+  free_option (&options->documentdescription);
+  free_option (&options->evenfootingmarks);
+  free_option (&options->evenheadingmarks);
+  free_option (&options->everyfootingmarks);
+  free_option (&options->everyheadingmarks);
+  free_option (&options->fonttextsize);
+  free_option (&options->footnotestyle);
+  free_option (&options->novalidate);
+  free_option (&options->oddfootingmarks);
+  free_option (&options->oddheadingmarks);
+  free_option (&options->pagesizes);
+  free_option (&options->setchapternewpage);
+  free_option (&options->setfilename);
+  free_option (&options->smallbook);
+}
+
+void
+clear_options (OPTIONS *options)
+{
+  options->BIT_user_function_number = 0;
+
+/* array_cmdline */
+
+  clear_option (&options->CSS_FILES);
+  clear_option (&options->CSS_REFS);
+  clear_option (&options->EXPANDED_FORMATS);
+  clear_option (&options->INCLUDE_DIRECTORIES);
+  clear_option (&options->TEXINFO_LANGUAGE_DIRECTORIES);
+
+/* converter_cmdline */
+
+  clear_option (&options->SPLIT_SIZE);
+  clear_option (&options->FILLCOLUMN);
+  clear_option (&options->NUMBER_SECTIONS);
+  clear_option (&options->NUMBER_FOOTNOTES);
+  clear_option (&options->TRANSLITERATE_FILE_NAMES);
+  clear_option (&options->SPLIT);
+  clear_option (&options->HEADERS);
+  clear_option (&options->NODE_FILES);
+  clear_option (&options->VERBOSE);
+  clear_option (&options->OUTFILE);
+  clear_option (&options->SUBDIR);
+  clear_option (&options->ENABLE_ENCODING);
+
+/* converter_customization */
+
+  clear_option (&options->TOP_NODE_UP);
+  clear_option (&options->BASEFILENAME_LENGTH);
+  clear_option (&options->DOC_ENCODING_FOR_INPUT_FILE_NAME);
+  clear_option (&options->DOC_ENCODING_FOR_OUTPUT_FILE_NAME);
+  clear_option (&options->IMAGE_LINK_PREFIX);
+  clear_option (&options->CASE_INSENSITIVE_FILENAMES);
+  clear_option (&options->DEBUG);
+  clear_option (&options->HANDLER_FATAL_ERROR_LEVEL);
+  clear_option (&options->TEST);
+  clear_option (&options->TEXTCONTENT_COMMENT);
+  clear_option (&options->TEXINFO_DTD_VERSION);
+  clear_option (&options->USE_UNICODE_COLLATION);
+  clear_option (&options->AFTER_BODY_OPEN);
+  clear_option (&options->AFTER_SHORT_TOC_LINES);
+  clear_option (&options->AFTER_TOC_LINES);
+  clear_option (&options->ASCII_DASHES_AND_QUOTES);
+  clear_option (&options->ASCII_GLYPH);
+  clear_option (&options->ASCII_PUNCTUATION);
+  clear_option (&options->AUTO_MENU_DESCRIPTION_ALIGN_COLUMN);
+  clear_option (&options->AUTO_MENU_MAX_WIDTH);
+  clear_option (&options->BEFORE_SHORT_TOC_LINES);
+  clear_option (&options->BEFORE_TOC_LINES);
+  clear_option (&options->BIG_RULE);
+  clear_option (&options->BODY_ELEMENT_ATTRIBUTES);
+  clear_option (&options->CLASS_BEGIN_USEPACKAGE);
+  clear_option (&options->COPIABLE_LINKS);
+  clear_option (&options->CHAPTER_HEADER_LEVEL);
+  clear_option (&options->CHECK_HTMLXREF);
+  clear_option (&options->CLOSE_DOUBLE_QUOTE_SYMBOL);
+  clear_option (&options->CLOSE_QUOTE_SYMBOL);
+  clear_option (&options->COLLATION_LANGUAGE);
+  clear_option (&options->COMMAND_LINE_ENCODING);
+  clear_option (&options->INDENTED_BLOCK_COMMANDS_IN_TABLE);
+  clear_option (&options->CONTENTS_OUTPUT_LOCATION);
+  clear_option (&options->CONVERT_TO_LATEX_IN_MATH);
+  clear_option (&options->DATE_IN_HEADER);
+  clear_option (&options->DEFAULT_RULE);
+  clear_option (&options->DEF_TABLE);
+  clear_option (&options->DO_ABOUT);
+  clear_option (&options->DOCTYPE);
+  clear_option (&options->DOCUMENTLANGUAGE_COLLATION);
+  clear_option (&options->END_USEPACKAGE);
+  clear_option (&options->EPUB_CREATE_CONTAINER_FILE);
+  clear_option (&options->EPUB_KEEP_CONTAINER_FOLDER);
+  clear_option (&options->EXTENSION);
+  clear_option (&options->EXTERNAL_CROSSREF_EXTENSION);
+  clear_option (&options->EXTERNAL_CROSSREF_SPLIT);
+  clear_option (&options->EXTERNAL_DIR);
+  clear_option (&options->EXTRA_HEAD);
+  clear_option (&options->FOOTNOTE_END_HEADER_LEVEL);
+  clear_option (&options->FOOTNOTE_SEPARATE_HEADER_LEVEL);
+  clear_option (&options->HEADER_IN_TABLE);
+  clear_option (&options->HIGHLIGHT_SYNTAX);
+  clear_option (&options->HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE);
+  clear_option (&options->HTML_MATH);
+  clear_option (&options->HTML_ROOT_ELEMENT_ATTRIBUTES);
+  clear_option (&options->HTMLXREF_FILE);
+  clear_option (&options->HTMLXREF_MODE);
+  clear_option (&options->ICONS);
+  clear_option (&options->INDEX_ENTRY_COLON);
+  clear_option (&options->INDEX_SPECIAL_CHARS_WARNING);
+  clear_option (&options->INFO_JS_DIR);
+  clear_option (&options->INFO_SPECIAL_CHARS_QUOTE);
+  clear_option (&options->INFO_SPECIAL_CHARS_WARNING);
+  clear_option (&options->IGNORE_REF_TO_TOP_NODE_UP);
+  clear_option (&options->INLINE_CSS_STYLE);
+  clear_option (&options->INPUT_FILE_NAME_ENCODING);
+  clear_option (&options->JS_WEBLABELS);
+  clear_option (&options->JS_WEBLABELS_FILE);
+  clear_option (&options->LATEX_FLOATS_FILE_EXTENSION);
+  clear_option (&options->LOCALE_ENCODING);
+  clear_option (&options->L2H_CLEAN);
+  clear_option (&options->L2H_FILE);
+  clear_option (&options->L2H_HTML_VERSION);
+  clear_option (&options->L2H_L2H);
+  clear_option (&options->L2H_SKIP);
+  clear_option (&options->L2H_TMP);
+  clear_option (&options->MATHJAX_CONFIGURATION);
+  clear_option (&options->MATHJAX_SCRIPT);
+  clear_option (&options->MATHJAX_SOURCE);
+  clear_option (&options->MAX_HEADER_LEVEL);
+  clear_option (&options->MENU_ENTRY_COLON);
+  clear_option (&options->MENU_SYMBOL);
+  clear_option (&options->MESSAGE_ENCODING);
+  clear_option (&options->MONOLITHIC);
+  clear_option (&options->NO_CSS);
+  clear_option (&options->NO_NUMBER_FOOTNOTE_SYMBOL);
+  clear_option (&options->NO_CUSTOM_HTML_ATTRIBUTE);
+  clear_option (&options->NODE_NAME_IN_INDEX);
+  clear_option (&options->NODE_NAME_IN_MENU);
+  clear_option (&options->NO_TOP_NODE_OUTPUT);
+  clear_option (&options->OPEN_DOUBLE_QUOTE_SYMBOL);
+  clear_option (&options->OPEN_QUOTE_SYMBOL);
+  clear_option (&options->OUTPUT_CHARACTERS);
+  clear_option (&options->OUTPUT_ENCODING_NAME);
+  clear_option (&options->OUTPUT_FILE_NAME_ENCODING);
+  clear_option (&options->OUTPUT_PERL_ENCODING);
+  clear_option (&options->PACKAGE);
+  clear_option (&options->PACKAGE_AND_VERSION);
+  clear_option (&options->PACKAGE_NAME);
+  clear_option (&options->PACKAGE_URL);
+  clear_option (&options->PACKAGE_VERSION);
+  clear_option (&options->PRE_BODY_CLOSE);
+  clear_option (&options->PREFIX);
+  clear_option (&options->PROGRAM);
+  clear_option (&options->PROGRAM_NAME_IN_ABOUT);
+  clear_option (&options->PROGRAM_NAME_IN_FOOTER);
+  clear_option (&options->SECTION_NAME_IN_TITLE);
+  clear_option (&options->SHORT_TOC_LINK_TO_TOC);
+  clear_option (&options->SHOW_TITLE);
+  clear_option (&options->T4H_LATEX_CONVERSION);
+  clear_option (&options->T4H_MATH_CONVERSION);
+  clear_option (&options->T4H_TEX_CONVERSION);
+  clear_option (&options->TEXI2HTML);
+  clear_option (&options->TEXINFO_OUTPUT_FORMAT);
+  clear_option (&options->TXI_MARKUP_NO_SECTION_EXTENT);
+  clear_option (&options->TOC_LINKS);
+  clear_option (&options->TOP_FILE);
+  clear_option (&options->TOP_NODE_FILE_TARGET);
+  clear_option (&options->TOP_NODE_UP_URL);
+  clear_option (&options->USE_ACCESSKEY);
+  clear_option (&options->USE_ISO);
+  clear_option (&options->USE_LINKS);
+  clear_option (&options->USE_NEXT_HEADING_FOR_LONE_NODE);
+  clear_option (&options->USE_NODES);
+  clear_option (&options->USE_NODE_DIRECTIONS);
+  clear_option (&options->USE_NUMERIC_ENTITY);
+  clear_option (&options->USE_REL_REV);
+  clear_option (&options->USE_SETFILENAME_EXTENSION);
+  clear_option (&options->USE_TITLEPAGE_FOR_TITLE);
+  clear_option (&options->USE_UNIDECODE);
+  clear_option (&options->USE_XML_SYNTAX);
+  clear_option (&options->VERTICAL_HEAD_NAVIGATION);
+  clear_option (&options->WORDS_IN_PAGE);
+  clear_option (&options->XREF_USE_FLOAT_LABEL);
+  clear_option (&options->XREF_USE_NODE_NAME_ARG);
+  clear_option (&options->XS_EXTERNAL_CONVERSION);
+  clear_option (&options->XS_EXTERNAL_FORMATTING);
+  clear_option (&options->XS_STRXFRM_COLLATION_LOCALE);
+  clear_option (&options->_INLINE_STYLE_WIDTH);
+
+/* converter_other */
+
+  clear_option (&options->LINKS_BUTTONS);
+  clear_option (&options->TOP_BUTTONS);
+  clear_option (&options->TOP_FOOTER_BUTTONS);
+  clear_option (&options->SECTION_BUTTONS);
+  clear_option (&options->CHAPTER_FOOTER_BUTTONS);
+  clear_option (&options->SECTION_FOOTER_BUTTONS);
+  clear_option (&options->NODE_FOOTER_BUTTONS);
+  clear_option (&options->MISC_BUTTONS);
+  clear_option (&options->CHAPTER_BUTTONS);
+  clear_option (&options->ACTIVE_ICONS);
+  clear_option (&options->PASSIVE_ICONS);
+
+/* multiple_at_command */
+
+  clear_option (&options->allowcodebreaks);
+  clear_option (&options->clickstyle);
+  clear_option (&options->codequotebacktick);
+  clear_option (&options->codequoteundirected);
+  clear_option (&options->contents);
+  clear_option (&options->deftypefnnewline);
+  clear_option (&options->documentencoding);
+  clear_option (&options->documentlanguage);
+  clear_option (&options->evenfooting);
+  clear_option (&options->evenheading);
+  clear_option (&options->everyfooting);
+  clear_option (&options->everyheading);
+  clear_option (&options->exampleindent);
+  clear_option (&options->firstparagraphindent);
+  clear_option (&options->frenchspacing);
+  clear_option (&options->headings);
+  clear_option (&options->kbdinputstyle);
+  clear_option (&options->microtype);
+  clear_option (&options->oddheading);
+  clear_option (&options->oddfooting);
+  clear_option (&options->paragraphindent);
+  clear_option (&options->shortcontents);
+  clear_option (&options->summarycontents);
+  clear_option (&options->urefbreakstyle);
+  clear_option (&options->xrefautomaticsectiontitle);
+
+/* program_cmdline */
+
+  clear_option (&options->MACRO_EXPAND);
+  clear_option (&options->INTERNAL_LINKS);
+  clear_option (&options->ERROR_LIMIT);
+  clear_option (&options->FORCE);
+  clear_option (&options->NO_WARN);
+  clear_option (&options->SILENT);
+  clear_option (&options->TRACE_INCLUDES);
+  clear_option (&options->FORMAT_MENU);
+
+/* program_customization */
+
+  clear_option (&options->CHECK_NORMAL_MENU_STRUCTURE);
+  clear_option (&options->CHECK_MISSING_MENU_ENTRY);
+  clear_option (&options->DUMP_TREE);
+  clear_option (&options->DUMP_TEXI);
+  clear_option (&options->SHOW_BUILTIN_CSS_RULES);
+  clear_option (&options->SORT_ELEMENT_COUNT);
+  clear_option (&options->SORT_ELEMENT_COUNT_WORDS);
+  clear_option (&options->TEXI2DVI);
+  clear_option (&options->TREE_TRANSFORMATIONS);
+
+/* unique_at_command */
+
+  clear_option (&options->afivepaper);
+  clear_option (&options->afourpaper);
+  clear_option (&options->afourlatex);
+  clear_option (&options->afourwide);
+  clear_option (&options->bsixpaper);
+  clear_option (&options->documentdescription);
+  clear_option (&options->evenfootingmarks);
+  clear_option (&options->evenheadingmarks);
+  clear_option (&options->everyfootingmarks);
+  clear_option (&options->everyheadingmarks);
+  clear_option (&options->fonttextsize);
+  clear_option (&options->footnotestyle);
+  clear_option (&options->novalidate);
+  clear_option (&options->oddfootingmarks);
+  clear_option (&options->oddheadingmarks);
+  clear_option (&options->pagesizes);
+  clear_option (&options->setchapternewpage);
+  clear_option (&options->setfilename);
+  clear_option (&options->smallbook);
+}
+
+void
+copy_options (OPTIONS *destination, const OPTIONS *source)
+{
+  destination->BIT_user_function_number = source->BIT_user_function_number;
+
+/* array_cmdline */
+
+  copy_option (&destination->CSS_FILES, &source->CSS_FILES);
+  copy_option (&destination->CSS_REFS, &source->CSS_REFS);
+  copy_option (&destination->EXPANDED_FORMATS, &source->EXPANDED_FORMATS);
+  copy_option (&destination->INCLUDE_DIRECTORIES, 
&source->INCLUDE_DIRECTORIES);
+  copy_option (&destination->TEXINFO_LANGUAGE_DIRECTORIES, 
&source->TEXINFO_LANGUAGE_DIRECTORIES);
+
+/* converter_cmdline */
+
+  copy_option (&destination->SPLIT_SIZE, &source->SPLIT_SIZE);
+  copy_option (&destination->FILLCOLUMN, &source->FILLCOLUMN);
+  copy_option (&destination->NUMBER_SECTIONS, &source->NUMBER_SECTIONS);
+  copy_option (&destination->NUMBER_FOOTNOTES, &source->NUMBER_FOOTNOTES);
+  copy_option (&destination->TRANSLITERATE_FILE_NAMES, 
&source->TRANSLITERATE_FILE_NAMES);
+  copy_option (&destination->SPLIT, &source->SPLIT);
+  copy_option (&destination->HEADERS, &source->HEADERS);
+  copy_option (&destination->NODE_FILES, &source->NODE_FILES);
+  copy_option (&destination->VERBOSE, &source->VERBOSE);
+  copy_option (&destination->OUTFILE, &source->OUTFILE);
+  copy_option (&destination->SUBDIR, &source->SUBDIR);
+  copy_option (&destination->ENABLE_ENCODING, &source->ENABLE_ENCODING);
+
+/* converter_customization */
+
+  copy_option (&destination->TOP_NODE_UP, &source->TOP_NODE_UP);
+  copy_option (&destination->BASEFILENAME_LENGTH, 
&source->BASEFILENAME_LENGTH);
+  copy_option (&destination->DOC_ENCODING_FOR_INPUT_FILE_NAME, 
&source->DOC_ENCODING_FOR_INPUT_FILE_NAME);
+  copy_option (&destination->DOC_ENCODING_FOR_OUTPUT_FILE_NAME, 
&source->DOC_ENCODING_FOR_OUTPUT_FILE_NAME);
+  copy_option (&destination->IMAGE_LINK_PREFIX, &source->IMAGE_LINK_PREFIX);
+  copy_option (&destination->CASE_INSENSITIVE_FILENAMES, 
&source->CASE_INSENSITIVE_FILENAMES);
+  copy_option (&destination->DEBUG, &source->DEBUG);
+  copy_option (&destination->HANDLER_FATAL_ERROR_LEVEL, 
&source->HANDLER_FATAL_ERROR_LEVEL);
+  copy_option (&destination->TEST, &source->TEST);
+  copy_option (&destination->TEXTCONTENT_COMMENT, 
&source->TEXTCONTENT_COMMENT);
+  copy_option (&destination->TEXINFO_DTD_VERSION, 
&source->TEXINFO_DTD_VERSION);
+  copy_option (&destination->USE_UNICODE_COLLATION, 
&source->USE_UNICODE_COLLATION);
+  copy_option (&destination->AFTER_BODY_OPEN, &source->AFTER_BODY_OPEN);
+  copy_option (&destination->AFTER_SHORT_TOC_LINES, 
&source->AFTER_SHORT_TOC_LINES);
+  copy_option (&destination->AFTER_TOC_LINES, &source->AFTER_TOC_LINES);
+  copy_option (&destination->ASCII_DASHES_AND_QUOTES, 
&source->ASCII_DASHES_AND_QUOTES);
+  copy_option (&destination->ASCII_GLYPH, &source->ASCII_GLYPH);
+  copy_option (&destination->ASCII_PUNCTUATION, &source->ASCII_PUNCTUATION);
+  copy_option (&destination->AUTO_MENU_DESCRIPTION_ALIGN_COLUMN, 
&source->AUTO_MENU_DESCRIPTION_ALIGN_COLUMN);
+  copy_option (&destination->AUTO_MENU_MAX_WIDTH, 
&source->AUTO_MENU_MAX_WIDTH);
+  copy_option (&destination->BEFORE_SHORT_TOC_LINES, 
&source->BEFORE_SHORT_TOC_LINES);
+  copy_option (&destination->BEFORE_TOC_LINES, &source->BEFORE_TOC_LINES);
+  copy_option (&destination->BIG_RULE, &source->BIG_RULE);
+  copy_option (&destination->BODY_ELEMENT_ATTRIBUTES, 
&source->BODY_ELEMENT_ATTRIBUTES);
+  copy_option (&destination->CLASS_BEGIN_USEPACKAGE, 
&source->CLASS_BEGIN_USEPACKAGE);
+  copy_option (&destination->COPIABLE_LINKS, &source->COPIABLE_LINKS);
+  copy_option (&destination->CHAPTER_HEADER_LEVEL, 
&source->CHAPTER_HEADER_LEVEL);
+  copy_option (&destination->CHECK_HTMLXREF, &source->CHECK_HTMLXREF);
+  copy_option (&destination->CLOSE_DOUBLE_QUOTE_SYMBOL, 
&source->CLOSE_DOUBLE_QUOTE_SYMBOL);
+  copy_option (&destination->CLOSE_QUOTE_SYMBOL, &source->CLOSE_QUOTE_SYMBOL);
+  copy_option (&destination->COLLATION_LANGUAGE, &source->COLLATION_LANGUAGE);
+  copy_option (&destination->COMMAND_LINE_ENCODING, 
&source->COMMAND_LINE_ENCODING);
+  copy_option (&destination->INDENTED_BLOCK_COMMANDS_IN_TABLE, 
&source->INDENTED_BLOCK_COMMANDS_IN_TABLE);
+  copy_option (&destination->CONTENTS_OUTPUT_LOCATION, 
&source->CONTENTS_OUTPUT_LOCATION);
+  copy_option (&destination->CONVERT_TO_LATEX_IN_MATH, 
&source->CONVERT_TO_LATEX_IN_MATH);
+  copy_option (&destination->DATE_IN_HEADER, &source->DATE_IN_HEADER);
+  copy_option (&destination->DEFAULT_RULE, &source->DEFAULT_RULE);
+  copy_option (&destination->DEF_TABLE, &source->DEF_TABLE);
+  copy_option (&destination->DO_ABOUT, &source->DO_ABOUT);
+  copy_option (&destination->DOCTYPE, &source->DOCTYPE);
+  copy_option (&destination->DOCUMENTLANGUAGE_COLLATION, 
&source->DOCUMENTLANGUAGE_COLLATION);
+  copy_option (&destination->END_USEPACKAGE, &source->END_USEPACKAGE);
+  copy_option (&destination->EPUB_CREATE_CONTAINER_FILE, 
&source->EPUB_CREATE_CONTAINER_FILE);
+  copy_option (&destination->EPUB_KEEP_CONTAINER_FOLDER, 
&source->EPUB_KEEP_CONTAINER_FOLDER);
+  copy_option (&destination->EXTENSION, &source->EXTENSION);
+  copy_option (&destination->EXTERNAL_CROSSREF_EXTENSION, 
&source->EXTERNAL_CROSSREF_EXTENSION);
+  copy_option (&destination->EXTERNAL_CROSSREF_SPLIT, 
&source->EXTERNAL_CROSSREF_SPLIT);
+  copy_option (&destination->EXTERNAL_DIR, &source->EXTERNAL_DIR);
+  copy_option (&destination->EXTRA_HEAD, &source->EXTRA_HEAD);
+  copy_option (&destination->FOOTNOTE_END_HEADER_LEVEL, 
&source->FOOTNOTE_END_HEADER_LEVEL);
+  copy_option (&destination->FOOTNOTE_SEPARATE_HEADER_LEVEL, 
&source->FOOTNOTE_SEPARATE_HEADER_LEVEL);
+  copy_option (&destination->HEADER_IN_TABLE, &source->HEADER_IN_TABLE);
+  copy_option (&destination->HIGHLIGHT_SYNTAX, &source->HIGHLIGHT_SYNTAX);
+  copy_option (&destination->HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE, 
&source->HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE);
+  copy_option (&destination->HTML_MATH, &source->HTML_MATH);
+  copy_option (&destination->HTML_ROOT_ELEMENT_ATTRIBUTES, 
&source->HTML_ROOT_ELEMENT_ATTRIBUTES);
+  copy_option (&destination->HTMLXREF_FILE, &source->HTMLXREF_FILE);
+  copy_option (&destination->HTMLXREF_MODE, &source->HTMLXREF_MODE);
+  copy_option (&destination->ICONS, &source->ICONS);
+  copy_option (&destination->INDEX_ENTRY_COLON, &source->INDEX_ENTRY_COLON);
+  copy_option (&destination->INDEX_SPECIAL_CHARS_WARNING, 
&source->INDEX_SPECIAL_CHARS_WARNING);
+  copy_option (&destination->INFO_JS_DIR, &source->INFO_JS_DIR);
+  copy_option (&destination->INFO_SPECIAL_CHARS_QUOTE, 
&source->INFO_SPECIAL_CHARS_QUOTE);
+  copy_option (&destination->INFO_SPECIAL_CHARS_WARNING, 
&source->INFO_SPECIAL_CHARS_WARNING);
+  copy_option (&destination->IGNORE_REF_TO_TOP_NODE_UP, 
&source->IGNORE_REF_TO_TOP_NODE_UP);
+  copy_option (&destination->INLINE_CSS_STYLE, &source->INLINE_CSS_STYLE);
+  copy_option (&destination->INPUT_FILE_NAME_ENCODING, 
&source->INPUT_FILE_NAME_ENCODING);
+  copy_option (&destination->JS_WEBLABELS, &source->JS_WEBLABELS);
+  copy_option (&destination->JS_WEBLABELS_FILE, &source->JS_WEBLABELS_FILE);
+  copy_option (&destination->LATEX_FLOATS_FILE_EXTENSION, 
&source->LATEX_FLOATS_FILE_EXTENSION);
+  copy_option (&destination->LOCALE_ENCODING, &source->LOCALE_ENCODING);
+  copy_option (&destination->L2H_CLEAN, &source->L2H_CLEAN);
+  copy_option (&destination->L2H_FILE, &source->L2H_FILE);
+  copy_option (&destination->L2H_HTML_VERSION, &source->L2H_HTML_VERSION);
+  copy_option (&destination->L2H_L2H, &source->L2H_L2H);
+  copy_option (&destination->L2H_SKIP, &source->L2H_SKIP);
+  copy_option (&destination->L2H_TMP, &source->L2H_TMP);
+  copy_option (&destination->MATHJAX_CONFIGURATION, 
&source->MATHJAX_CONFIGURATION);
+  copy_option (&destination->MATHJAX_SCRIPT, &source->MATHJAX_SCRIPT);
+  copy_option (&destination->MATHJAX_SOURCE, &source->MATHJAX_SOURCE);
+  copy_option (&destination->MAX_HEADER_LEVEL, &source->MAX_HEADER_LEVEL);
+  copy_option (&destination->MENU_ENTRY_COLON, &source->MENU_ENTRY_COLON);
+  copy_option (&destination->MENU_SYMBOL, &source->MENU_SYMBOL);
+  copy_option (&destination->MESSAGE_ENCODING, &source->MESSAGE_ENCODING);
+  copy_option (&destination->MONOLITHIC, &source->MONOLITHIC);
+  copy_option (&destination->NO_CSS, &source->NO_CSS);
+  copy_option (&destination->NO_NUMBER_FOOTNOTE_SYMBOL, 
&source->NO_NUMBER_FOOTNOTE_SYMBOL);
+  copy_option (&destination->NO_CUSTOM_HTML_ATTRIBUTE, 
&source->NO_CUSTOM_HTML_ATTRIBUTE);
+  copy_option (&destination->NODE_NAME_IN_INDEX, &source->NODE_NAME_IN_INDEX);
+  copy_option (&destination->NODE_NAME_IN_MENU, &source->NODE_NAME_IN_MENU);
+  copy_option (&destination->NO_TOP_NODE_OUTPUT, &source->NO_TOP_NODE_OUTPUT);
+  copy_option (&destination->OPEN_DOUBLE_QUOTE_SYMBOL, 
&source->OPEN_DOUBLE_QUOTE_SYMBOL);
+  copy_option (&destination->OPEN_QUOTE_SYMBOL, &source->OPEN_QUOTE_SYMBOL);
+  copy_option (&destination->OUTPUT_CHARACTERS, &source->OUTPUT_CHARACTERS);
+  copy_option (&destination->OUTPUT_ENCODING_NAME, 
&source->OUTPUT_ENCODING_NAME);
+  copy_option (&destination->OUTPUT_FILE_NAME_ENCODING, 
&source->OUTPUT_FILE_NAME_ENCODING);
+  copy_option (&destination->OUTPUT_PERL_ENCODING, 
&source->OUTPUT_PERL_ENCODING);
+  copy_option (&destination->PACKAGE, &source->PACKAGE);
+  copy_option (&destination->PACKAGE_AND_VERSION, 
&source->PACKAGE_AND_VERSION);
+  copy_option (&destination->PACKAGE_NAME, &source->PACKAGE_NAME);
+  copy_option (&destination->PACKAGE_URL, &source->PACKAGE_URL);
+  copy_option (&destination->PACKAGE_VERSION, &source->PACKAGE_VERSION);
+  copy_option (&destination->PRE_BODY_CLOSE, &source->PRE_BODY_CLOSE);
+  copy_option (&destination->PREFIX, &source->PREFIX);
+  copy_option (&destination->PROGRAM, &source->PROGRAM);
+  copy_option (&destination->PROGRAM_NAME_IN_ABOUT, 
&source->PROGRAM_NAME_IN_ABOUT);
+  copy_option (&destination->PROGRAM_NAME_IN_FOOTER, 
&source->PROGRAM_NAME_IN_FOOTER);
+  copy_option (&destination->SECTION_NAME_IN_TITLE, 
&source->SECTION_NAME_IN_TITLE);
+  copy_option (&destination->SHORT_TOC_LINK_TO_TOC, 
&source->SHORT_TOC_LINK_TO_TOC);
+  copy_option (&destination->SHOW_TITLE, &source->SHOW_TITLE);
+  copy_option (&destination->T4H_LATEX_CONVERSION, 
&source->T4H_LATEX_CONVERSION);
+  copy_option (&destination->T4H_MATH_CONVERSION, 
&source->T4H_MATH_CONVERSION);
+  copy_option (&destination->T4H_TEX_CONVERSION, &source->T4H_TEX_CONVERSION);
+  copy_option (&destination->TEXI2HTML, &source->TEXI2HTML);
+  copy_option (&destination->TEXINFO_OUTPUT_FORMAT, 
&source->TEXINFO_OUTPUT_FORMAT);
+  copy_option (&destination->TXI_MARKUP_NO_SECTION_EXTENT, 
&source->TXI_MARKUP_NO_SECTION_EXTENT);
+  copy_option (&destination->TOC_LINKS, &source->TOC_LINKS);
+  copy_option (&destination->TOP_FILE, &source->TOP_FILE);
+  copy_option (&destination->TOP_NODE_FILE_TARGET, 
&source->TOP_NODE_FILE_TARGET);
+  copy_option (&destination->TOP_NODE_UP_URL, &source->TOP_NODE_UP_URL);
+  copy_option (&destination->USE_ACCESSKEY, &source->USE_ACCESSKEY);
+  copy_option (&destination->USE_ISO, &source->USE_ISO);
+  copy_option (&destination->USE_LINKS, &source->USE_LINKS);
+  copy_option (&destination->USE_NEXT_HEADING_FOR_LONE_NODE, 
&source->USE_NEXT_HEADING_FOR_LONE_NODE);
+  copy_option (&destination->USE_NODES, &source->USE_NODES);
+  copy_option (&destination->USE_NODE_DIRECTIONS, 
&source->USE_NODE_DIRECTIONS);
+  copy_option (&destination->USE_NUMERIC_ENTITY, &source->USE_NUMERIC_ENTITY);
+  copy_option (&destination->USE_REL_REV, &source->USE_REL_REV);
+  copy_option (&destination->USE_SETFILENAME_EXTENSION, 
&source->USE_SETFILENAME_EXTENSION);
+  copy_option (&destination->USE_TITLEPAGE_FOR_TITLE, 
&source->USE_TITLEPAGE_FOR_TITLE);
+  copy_option (&destination->USE_UNIDECODE, &source->USE_UNIDECODE);
+  copy_option (&destination->USE_XML_SYNTAX, &source->USE_XML_SYNTAX);
+  copy_option (&destination->VERTICAL_HEAD_NAVIGATION, 
&source->VERTICAL_HEAD_NAVIGATION);
+  copy_option (&destination->WORDS_IN_PAGE, &source->WORDS_IN_PAGE);
+  copy_option (&destination->XREF_USE_FLOAT_LABEL, 
&source->XREF_USE_FLOAT_LABEL);
+  copy_option (&destination->XREF_USE_NODE_NAME_ARG, 
&source->XREF_USE_NODE_NAME_ARG);
+  copy_option (&destination->XS_EXTERNAL_CONVERSION, 
&source->XS_EXTERNAL_CONVERSION);
+  copy_option (&destination->XS_EXTERNAL_FORMATTING, 
&source->XS_EXTERNAL_FORMATTING);
+  copy_option (&destination->XS_STRXFRM_COLLATION_LOCALE, 
&source->XS_STRXFRM_COLLATION_LOCALE);
+  copy_option (&destination->_INLINE_STYLE_WIDTH, 
&source->_INLINE_STYLE_WIDTH);
+
+/* converter_other */
+
+  copy_option (&destination->LINKS_BUTTONS, &source->LINKS_BUTTONS);
+  copy_option (&destination->TOP_BUTTONS, &source->TOP_BUTTONS);
+  copy_option (&destination->TOP_FOOTER_BUTTONS, &source->TOP_FOOTER_BUTTONS);
+  copy_option (&destination->SECTION_BUTTONS, &source->SECTION_BUTTONS);
+  copy_option (&destination->CHAPTER_FOOTER_BUTTONS, 
&source->CHAPTER_FOOTER_BUTTONS);
+  copy_option (&destination->SECTION_FOOTER_BUTTONS, 
&source->SECTION_FOOTER_BUTTONS);
+  copy_option (&destination->NODE_FOOTER_BUTTONS, 
&source->NODE_FOOTER_BUTTONS);
+  copy_option (&destination->MISC_BUTTONS, &source->MISC_BUTTONS);
+  copy_option (&destination->CHAPTER_BUTTONS, &source->CHAPTER_BUTTONS);
+  copy_option (&destination->ACTIVE_ICONS, &source->ACTIVE_ICONS);
+  copy_option (&destination->PASSIVE_ICONS, &source->PASSIVE_ICONS);
+
+/* multiple_at_command */
+
+  copy_option (&destination->allowcodebreaks, &source->allowcodebreaks);
+  copy_option (&destination->clickstyle, &source->clickstyle);
+  copy_option (&destination->codequotebacktick, &source->codequotebacktick);
+  copy_option (&destination->codequoteundirected, 
&source->codequoteundirected);
+  copy_option (&destination->contents, &source->contents);
+  copy_option (&destination->deftypefnnewline, &source->deftypefnnewline);
+  copy_option (&destination->documentencoding, &source->documentencoding);
+  copy_option (&destination->documentlanguage, &source->documentlanguage);
+  copy_option (&destination->evenfooting, &source->evenfooting);
+  copy_option (&destination->evenheading, &source->evenheading);
+  copy_option (&destination->everyfooting, &source->everyfooting);
+  copy_option (&destination->everyheading, &source->everyheading);
+  copy_option (&destination->exampleindent, &source->exampleindent);
+  copy_option (&destination->firstparagraphindent, 
&source->firstparagraphindent);
+  copy_option (&destination->frenchspacing, &source->frenchspacing);
+  copy_option (&destination->headings, &source->headings);
+  copy_option (&destination->kbdinputstyle, &source->kbdinputstyle);
+  copy_option (&destination->microtype, &source->microtype);
+  copy_option (&destination->oddheading, &source->oddheading);
+  copy_option (&destination->oddfooting, &source->oddfooting);
+  copy_option (&destination->paragraphindent, &source->paragraphindent);
+  copy_option (&destination->shortcontents, &source->shortcontents);
+  copy_option (&destination->summarycontents, &source->summarycontents);
+  copy_option (&destination->urefbreakstyle, &source->urefbreakstyle);
+  copy_option (&destination->xrefautomaticsectiontitle, 
&source->xrefautomaticsectiontitle);
+
+/* program_cmdline */
+
+  copy_option (&destination->MACRO_EXPAND, &source->MACRO_EXPAND);
+  copy_option (&destination->INTERNAL_LINKS, &source->INTERNAL_LINKS);
+  copy_option (&destination->ERROR_LIMIT, &source->ERROR_LIMIT);
+  copy_option (&destination->FORCE, &source->FORCE);
+  copy_option (&destination->NO_WARN, &source->NO_WARN);
+  copy_option (&destination->SILENT, &source->SILENT);
+  copy_option (&destination->TRACE_INCLUDES, &source->TRACE_INCLUDES);
+  copy_option (&destination->FORMAT_MENU, &source->FORMAT_MENU);
+
+/* program_customization */
+
+  copy_option (&destination->CHECK_NORMAL_MENU_STRUCTURE, 
&source->CHECK_NORMAL_MENU_STRUCTURE);
+  copy_option (&destination->CHECK_MISSING_MENU_ENTRY, 
&source->CHECK_MISSING_MENU_ENTRY);
+  copy_option (&destination->DUMP_TREE, &source->DUMP_TREE);
+  copy_option (&destination->DUMP_TEXI, &source->DUMP_TEXI);
+  copy_option (&destination->SHOW_BUILTIN_CSS_RULES, 
&source->SHOW_BUILTIN_CSS_RULES);
+  copy_option (&destination->SORT_ELEMENT_COUNT, &source->SORT_ELEMENT_COUNT);
+  copy_option (&destination->SORT_ELEMENT_COUNT_WORDS, 
&source->SORT_ELEMENT_COUNT_WORDS);
+  copy_option (&destination->TEXI2DVI, &source->TEXI2DVI);
+  copy_option (&destination->TREE_TRANSFORMATIONS, 
&source->TREE_TRANSFORMATIONS);
+
+/* unique_at_command */
+
+  copy_option (&destination->afivepaper, &source->afivepaper);
+  copy_option (&destination->afourpaper, &source->afourpaper);
+  copy_option (&destination->afourlatex, &source->afourlatex);
+  copy_option (&destination->afourwide, &source->afourwide);
+  copy_option (&destination->bsixpaper, &source->bsixpaper);
+  copy_option (&destination->documentdescription, 
&source->documentdescription);
+  copy_option (&destination->evenfootingmarks, &source->evenfootingmarks);
+  copy_option (&destination->evenheadingmarks, &source->evenheadingmarks);
+  copy_option (&destination->everyfootingmarks, &source->everyfootingmarks);
+  copy_option (&destination->everyheadingmarks, &source->everyheadingmarks);
+  copy_option (&destination->fonttextsize, &source->fonttextsize);
+  copy_option (&destination->footnotestyle, &source->footnotestyle);
+  copy_option (&destination->novalidate, &source->novalidate);
+  copy_option (&destination->oddfootingmarks, &source->oddfootingmarks);
+  copy_option (&destination->oddheadingmarks, &source->oddheadingmarks);
+  copy_option (&destination->pagesizes, &source->pagesizes);
+  copy_option (&destination->setchapternewpage, &source->setchapternewpage);
+  copy_option (&destination->setfilename, &source->setfilename);
+  copy_option (&destination->smallbook, &source->smallbook);
+}
+
+void
+set_option_key_configured (OPTIONS *options, const char *key, int configured)
+{
+  if (0) {}
+
+/* array_cmdline */
+
+  else if (!strcmp (key, "CSS_FILES"))
+    {
+      if (configured > 0)
+        options->CSS_FILES.configured = configured;
+    }
+  else if (!strcmp (key, "CSS_REFS"))
+    {
+      if (configured > 0)
+        options->CSS_REFS.configured = configured;
+    }
+  else if (!strcmp (key, "EXPANDED_FORMATS"))
+    {
+      if (configured > 0)
+        options->EXPANDED_FORMATS.configured = configured;
+    }
+  else if (!strcmp (key, "INCLUDE_DIRECTORIES"))
+    {
+      if (configured > 0)
+        options->INCLUDE_DIRECTORIES.configured = configured;
+    }
+  else if (!strcmp (key, "TEXINFO_LANGUAGE_DIRECTORIES"))
+    {
+      if (configured > 0)
+        options->TEXINFO_LANGUAGE_DIRECTORIES.configured = configured;
+    }
+
+/* converter_cmdline */
+
+  else if (!strcmp (key, "SPLIT_SIZE"))
+    {
+      if (configured > 0)
+        options->SPLIT_SIZE.configured = configured;
+    }
+  else if (!strcmp (key, "FILLCOLUMN"))
+    {
+      if (configured > 0)
+        options->FILLCOLUMN.configured = configured;
+    }
+  else if (!strcmp (key, "NUMBER_SECTIONS"))
+    {
+      if (configured > 0)
+        options->NUMBER_SECTIONS.configured = configured;
+    }
+  else if (!strcmp (key, "NUMBER_FOOTNOTES"))
+    {
+      if (configured > 0)
+        options->NUMBER_FOOTNOTES.configured = configured;
+    }
+  else if (!strcmp (key, "TRANSLITERATE_FILE_NAMES"))
+    {
+      if (configured > 0)
+        options->TRANSLITERATE_FILE_NAMES.configured = configured;
+    }
+  else if (!strcmp (key, "SPLIT"))
+    {
+      if (configured > 0)
+        options->SPLIT.configured = configured;
+    }
+  else if (!strcmp (key, "HEADERS"))
+    {
+      if (configured > 0)
+        options->HEADERS.configured = configured;
+    }
+  else if (!strcmp (key, "NODE_FILES"))
+    {
+      if (configured > 0)
+        options->NODE_FILES.configured = configured;
+    }
+  else if (!strcmp (key, "VERBOSE"))
+    {
+      if (configured > 0)
+        options->VERBOSE.configured = configured;
+    }
+  else if (!strcmp (key, "OUTFILE"))
+    {
+      if (configured > 0)
+        options->OUTFILE.configured = configured;
+    }
+  else if (!strcmp (key, "SUBDIR"))
+    {
+      if (configured > 0)
+        options->SUBDIR.configured = configured;
+    }
+  else if (!strcmp (key, "ENABLE_ENCODING"))
+    {
+      if (configured > 0)
+        options->ENABLE_ENCODING.configured = configured;
+    }
+
+/* converter_customization */
+
+  else if (!strcmp (key, "TOP_NODE_UP"))
+    {
+      if (configured > 0)
+        options->TOP_NODE_UP.configured = configured;
+    }
+  else if (!strcmp (key, "BASEFILENAME_LENGTH"))
+    {
+      if (configured > 0)
+        options->BASEFILENAME_LENGTH.configured = configured;
+    }
+  else if (!strcmp (key, "DOC_ENCODING_FOR_INPUT_FILE_NAME"))
+    {
+      if (configured > 0)
+        options->DOC_ENCODING_FOR_INPUT_FILE_NAME.configured = configured;
+    }
+  else if (!strcmp (key, "DOC_ENCODING_FOR_OUTPUT_FILE_NAME"))
+    {
+      if (configured > 0)
+        options->DOC_ENCODING_FOR_OUTPUT_FILE_NAME.configured = configured;
+    }
+  else if (!strcmp (key, "IMAGE_LINK_PREFIX"))
+    {
+      if (configured > 0)
+        options->IMAGE_LINK_PREFIX.configured = configured;
+    }
+  else if (!strcmp (key, "CASE_INSENSITIVE_FILENAMES"))
+    {
+      if (configured > 0)
+        options->CASE_INSENSITIVE_FILENAMES.configured = configured;
+    }
+  else if (!strcmp (key, "DEBUG"))
+    {
+      if (configured > 0)
+        options->DEBUG.configured = configured;
+    }
+  else if (!strcmp (key, "HANDLER_FATAL_ERROR_LEVEL"))
+    {
+      if (configured > 0)
+        options->HANDLER_FATAL_ERROR_LEVEL.configured = configured;
+    }
+  else if (!strcmp (key, "TEST"))
+    {
+      if (configured > 0)
+        options->TEST.configured = configured;
+    }
+  else if (!strcmp (key, "TEXTCONTENT_COMMENT"))
+    {
+      if (configured > 0)
+        options->TEXTCONTENT_COMMENT.configured = configured;
+    }
+  else if (!strcmp (key, "TEXINFO_DTD_VERSION"))
+    {
+      if (configured > 0)
+        options->TEXINFO_DTD_VERSION.configured = configured;
+    }
+  else if (!strcmp (key, "USE_UNICODE_COLLATION"))
+    {
+      if (configured > 0)
+        options->USE_UNICODE_COLLATION.configured = configured;
+    }
+  else if (!strcmp (key, "AFTER_BODY_OPEN"))
+    {
+      if (configured > 0)
+        options->AFTER_BODY_OPEN.configured = configured;
+    }
+  else if (!strcmp (key, "AFTER_SHORT_TOC_LINES"))
+    {
+      if (configured > 0)
+        options->AFTER_SHORT_TOC_LINES.configured = configured;
+    }
+  else if (!strcmp (key, "AFTER_TOC_LINES"))
+    {
+      if (configured > 0)
+        options->AFTER_TOC_LINES.configured = configured;
+    }
+  else if (!strcmp (key, "ASCII_DASHES_AND_QUOTES"))
+    {
+      if (configured > 0)
+        options->ASCII_DASHES_AND_QUOTES.configured = configured;
+    }
+  else if (!strcmp (key, "ASCII_GLYPH"))
+    {
+      if (configured > 0)
+        options->ASCII_GLYPH.configured = configured;
+    }
+  else if (!strcmp (key, "ASCII_PUNCTUATION"))
+    {
+      if (configured > 0)
+        options->ASCII_PUNCTUATION.configured = configured;
+    }
+  else if (!strcmp (key, "AUTO_MENU_DESCRIPTION_ALIGN_COLUMN"))
+    {
+      if (configured > 0)
+        options->AUTO_MENU_DESCRIPTION_ALIGN_COLUMN.configured = configured;
+    }
+  else if (!strcmp (key, "AUTO_MENU_MAX_WIDTH"))
+    {
+      if (configured > 0)
+        options->AUTO_MENU_MAX_WIDTH.configured = configured;
+    }
+  else if (!strcmp (key, "BEFORE_SHORT_TOC_LINES"))
+    {
+      if (configured > 0)
+        options->BEFORE_SHORT_TOC_LINES.configured = configured;
+    }
+  else if (!strcmp (key, "BEFORE_TOC_LINES"))
+    {
+      if (configured > 0)
+        options->BEFORE_TOC_LINES.configured = configured;
+    }
+  else if (!strcmp (key, "BIG_RULE"))
+    {
+      if (configured > 0)
+        options->BIG_RULE.configured = configured;
+    }
+  else if (!strcmp (key, "BODY_ELEMENT_ATTRIBUTES"))
+    {
+      if (configured > 0)
+        options->BODY_ELEMENT_ATTRIBUTES.configured = configured;
+    }
+  else if (!strcmp (key, "CLASS_BEGIN_USEPACKAGE"))
+    {
+      if (configured > 0)
+        options->CLASS_BEGIN_USEPACKAGE.configured = configured;
+    }
+  else if (!strcmp (key, "COPIABLE_LINKS"))
+    {
+      if (configured > 0)
+        options->COPIABLE_LINKS.configured = configured;
+    }
+  else if (!strcmp (key, "CHAPTER_HEADER_LEVEL"))
+    {
+      if (configured > 0)
+        options->CHAPTER_HEADER_LEVEL.configured = configured;
+    }
+  else if (!strcmp (key, "CHECK_HTMLXREF"))
+    {
+      if (configured > 0)
+        options->CHECK_HTMLXREF.configured = configured;
+    }
+  else if (!strcmp (key, "CLOSE_DOUBLE_QUOTE_SYMBOL"))
+    {
+      if (configured > 0)
+        options->CLOSE_DOUBLE_QUOTE_SYMBOL.configured = configured;
+    }
+  else if (!strcmp (key, "CLOSE_QUOTE_SYMBOL"))
+    {
+      if (configured > 0)
+        options->CLOSE_QUOTE_SYMBOL.configured = configured;
+    }
+  else if (!strcmp (key, "COLLATION_LANGUAGE"))
+    {
+      if (configured > 0)
+        options->COLLATION_LANGUAGE.configured = configured;
+    }
+  else if (!strcmp (key, "COMMAND_LINE_ENCODING"))
+    {
+      if (configured > 0)
+        options->COMMAND_LINE_ENCODING.configured = configured;
+    }
+  else if (!strcmp (key, "INDENTED_BLOCK_COMMANDS_IN_TABLE"))
+    {
+      if (configured > 0)
+        options->INDENTED_BLOCK_COMMANDS_IN_TABLE.configured = configured;
+    }
+  else if (!strcmp (key, "CONTENTS_OUTPUT_LOCATION"))
+    {
+      if (configured > 0)
+        options->CONTENTS_OUTPUT_LOCATION.configured = configured;
+    }
+  else if (!strcmp (key, "CONVERT_TO_LATEX_IN_MATH"))
+    {
+      if (configured > 0)
+        options->CONVERT_TO_LATEX_IN_MATH.configured = configured;
+    }
+  else if (!strcmp (key, "DATE_IN_HEADER"))
+    {
+      if (configured > 0)
+        options->DATE_IN_HEADER.configured = configured;
+    }
+  else if (!strcmp (key, "DEFAULT_RULE"))
+    {
+      if (configured > 0)
+        options->DEFAULT_RULE.configured = configured;
+    }
+  else if (!strcmp (key, "DEF_TABLE"))
+    {
+      if (configured > 0)
+        options->DEF_TABLE.configured = configured;
+    }
+  else if (!strcmp (key, "DO_ABOUT"))
+    {
+      if (configured > 0)
+        options->DO_ABOUT.configured = configured;
+    }
+  else if (!strcmp (key, "DOCTYPE"))
+    {
+      if (configured > 0)
+        options->DOCTYPE.configured = configured;
+    }
+  else if (!strcmp (key, "DOCUMENTLANGUAGE_COLLATION"))
+    {
+      if (configured > 0)
+        options->DOCUMENTLANGUAGE_COLLATION.configured = configured;
+    }
+  else if (!strcmp (key, "END_USEPACKAGE"))
+    {
+      if (configured > 0)
+        options->END_USEPACKAGE.configured = configured;
+    }
+  else if (!strcmp (key, "EPUB_CREATE_CONTAINER_FILE"))
+    {
+      if (configured > 0)
+        options->EPUB_CREATE_CONTAINER_FILE.configured = configured;
+    }
+  else if (!strcmp (key, "EPUB_KEEP_CONTAINER_FOLDER"))
+    {
+      if (configured > 0)
+        options->EPUB_KEEP_CONTAINER_FOLDER.configured = configured;
+    }
+  else if (!strcmp (key, "EXTENSION"))
+    {
+      if (configured > 0)
+        options->EXTENSION.configured = configured;
+    }
+  else if (!strcmp (key, "EXTERNAL_CROSSREF_EXTENSION"))
+    {
+      if (configured > 0)
+        options->EXTERNAL_CROSSREF_EXTENSION.configured = configured;
+    }
+  else if (!strcmp (key, "EXTERNAL_CROSSREF_SPLIT"))
+    {
+      if (configured > 0)
+        options->EXTERNAL_CROSSREF_SPLIT.configured = configured;
+    }
+  else if (!strcmp (key, "EXTERNAL_DIR"))
+    {
+      if (configured > 0)
+        options->EXTERNAL_DIR.configured = configured;
+    }
+  else if (!strcmp (key, "EXTRA_HEAD"))
+    {
+      if (configured > 0)
+        options->EXTRA_HEAD.configured = configured;
+    }
+  else if (!strcmp (key, "FOOTNOTE_END_HEADER_LEVEL"))
+    {
+      if (configured > 0)
+        options->FOOTNOTE_END_HEADER_LEVEL.configured = configured;
+    }
+  else if (!strcmp (key, "FOOTNOTE_SEPARATE_HEADER_LEVEL"))
+    {
+      if (configured > 0)
+        options->FOOTNOTE_SEPARATE_HEADER_LEVEL.configured = configured;
+    }
+  else if (!strcmp (key, "HEADER_IN_TABLE"))
+    {
+      if (configured > 0)
+        options->HEADER_IN_TABLE.configured = configured;
+    }
+  else if (!strcmp (key, "HIGHLIGHT_SYNTAX"))
+    {
+      if (configured > 0)
+        options->HIGHLIGHT_SYNTAX.configured = configured;
+    }
+  else if (!strcmp (key, "HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE"))
+    {
+      if (configured > 0)
+        options->HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE.configured = configured;
+    }
+  else if (!strcmp (key, "HTML_MATH"))
+    {
+      if (configured > 0)
+        options->HTML_MATH.configured = configured;
+    }
+  else if (!strcmp (key, "HTML_ROOT_ELEMENT_ATTRIBUTES"))
+    {
+      if (configured > 0)
+        options->HTML_ROOT_ELEMENT_ATTRIBUTES.configured = configured;
+    }
+  else if (!strcmp (key, "HTMLXREF_FILE"))
+    {
+      if (configured > 0)
+        options->HTMLXREF_FILE.configured = configured;
+    }
+  else if (!strcmp (key, "HTMLXREF_MODE"))
+    {
+      if (configured > 0)
+        options->HTMLXREF_MODE.configured = configured;
+    }
+  else if (!strcmp (key, "ICONS"))
+    {
+      if (configured > 0)
+        options->ICONS.configured = configured;
+    }
+  else if (!strcmp (key, "INDEX_ENTRY_COLON"))
+    {
+      if (configured > 0)
+        options->INDEX_ENTRY_COLON.configured = configured;
+    }
+  else if (!strcmp (key, "INDEX_SPECIAL_CHARS_WARNING"))
+    {
+      if (configured > 0)
+        options->INDEX_SPECIAL_CHARS_WARNING.configured = configured;
+    }
+  else if (!strcmp (key, "INFO_JS_DIR"))
+    {
+      if (configured > 0)
+        options->INFO_JS_DIR.configured = configured;
+    }
+  else if (!strcmp (key, "INFO_SPECIAL_CHARS_QUOTE"))
+    {
+      if (configured > 0)
+        options->INFO_SPECIAL_CHARS_QUOTE.configured = configured;
+    }
+  else if (!strcmp (key, "INFO_SPECIAL_CHARS_WARNING"))
+    {
+      if (configured > 0)
+        options->INFO_SPECIAL_CHARS_WARNING.configured = configured;
+    }
+  else if (!strcmp (key, "IGNORE_REF_TO_TOP_NODE_UP"))
+    {
+      if (configured > 0)
+        options->IGNORE_REF_TO_TOP_NODE_UP.configured = configured;
+    }
+  else if (!strcmp (key, "INLINE_CSS_STYLE"))
+    {
+      if (configured > 0)
+        options->INLINE_CSS_STYLE.configured = configured;
+    }
+  else if (!strcmp (key, "INPUT_FILE_NAME_ENCODING"))
+    {
+      if (configured > 0)
+        options->INPUT_FILE_NAME_ENCODING.configured = configured;
+    }
+  else if (!strcmp (key, "JS_WEBLABELS"))
+    {
+      if (configured > 0)
+        options->JS_WEBLABELS.configured = configured;
+    }
+  else if (!strcmp (key, "JS_WEBLABELS_FILE"))
+    {
+      if (configured > 0)
+        options->JS_WEBLABELS_FILE.configured = configured;
+    }
+  else if (!strcmp (key, "LATEX_FLOATS_FILE_EXTENSION"))
+    {
+      if (configured > 0)
+        options->LATEX_FLOATS_FILE_EXTENSION.configured = configured;
+    }
+  else if (!strcmp (key, "LOCALE_ENCODING"))
+    {
+      if (configured > 0)
+        options->LOCALE_ENCODING.configured = configured;
+    }
+  else if (!strcmp (key, "L2H_CLEAN"))
+    {
+      if (configured > 0)
+        options->L2H_CLEAN.configured = configured;
+    }
+  else if (!strcmp (key, "L2H_FILE"))
+    {
+      if (configured > 0)
+        options->L2H_FILE.configured = configured;
+    }
+  else if (!strcmp (key, "L2H_HTML_VERSION"))
+    {
+      if (configured > 0)
+        options->L2H_HTML_VERSION.configured = configured;
+    }
+  else if (!strcmp (key, "L2H_L2H"))
+    {
+      if (configured > 0)
+        options->L2H_L2H.configured = configured;
+    }
+  else if (!strcmp (key, "L2H_SKIP"))
+    {
+      if (configured > 0)
+        options->L2H_SKIP.configured = configured;
+    }
+  else if (!strcmp (key, "L2H_TMP"))
+    {
+      if (configured > 0)
+        options->L2H_TMP.configured = configured;
+    }
+  else if (!strcmp (key, "MATHJAX_CONFIGURATION"))
+    {
+      if (configured > 0)
+        options->MATHJAX_CONFIGURATION.configured = configured;
+    }
+  else if (!strcmp (key, "MATHJAX_SCRIPT"))
+    {
+      if (configured > 0)
+        options->MATHJAX_SCRIPT.configured = configured;
+    }
+  else if (!strcmp (key, "MATHJAX_SOURCE"))
+    {
+      if (configured > 0)
+        options->MATHJAX_SOURCE.configured = configured;
+    }
+  else if (!strcmp (key, "MAX_HEADER_LEVEL"))
+    {
+      if (configured > 0)
+        options->MAX_HEADER_LEVEL.configured = configured;
+    }
+  else if (!strcmp (key, "MENU_ENTRY_COLON"))
+    {
+      if (configured > 0)
+        options->MENU_ENTRY_COLON.configured = configured;
+    }
+  else if (!strcmp (key, "MENU_SYMBOL"))
+    {
+      if (configured > 0)
+        options->MENU_SYMBOL.configured = configured;
+    }
+  else if (!strcmp (key, "MESSAGE_ENCODING"))
+    {
+      if (configured > 0)
+        options->MESSAGE_ENCODING.configured = configured;
+    }
+  else if (!strcmp (key, "MONOLITHIC"))
+    {
+      if (configured > 0)
+        options->MONOLITHIC.configured = configured;
+    }
+  else if (!strcmp (key, "NO_CSS"))
+    {
+      if (configured > 0)
+        options->NO_CSS.configured = configured;
+    }
+  else if (!strcmp (key, "NO_NUMBER_FOOTNOTE_SYMBOL"))
+    {
+      if (configured > 0)
+        options->NO_NUMBER_FOOTNOTE_SYMBOL.configured = configured;
+    }
+  else if (!strcmp (key, "NO_CUSTOM_HTML_ATTRIBUTE"))
+    {
+      if (configured > 0)
+        options->NO_CUSTOM_HTML_ATTRIBUTE.configured = configured;
+    }
+  else if (!strcmp (key, "NODE_NAME_IN_INDEX"))
+    {
+      if (configured > 0)
+        options->NODE_NAME_IN_INDEX.configured = configured;
+    }
+  else if (!strcmp (key, "NODE_NAME_IN_MENU"))
+    {
+      if (configured > 0)
+        options->NODE_NAME_IN_MENU.configured = configured;
+    }
+  else if (!strcmp (key, "NO_TOP_NODE_OUTPUT"))
+    {
+      if (configured > 0)
+        options->NO_TOP_NODE_OUTPUT.configured = configured;
+    }
+  else if (!strcmp (key, "OPEN_DOUBLE_QUOTE_SYMBOL"))
+    {
+      if (configured > 0)
+        options->OPEN_DOUBLE_QUOTE_SYMBOL.configured = configured;
+    }
+  else if (!strcmp (key, "OPEN_QUOTE_SYMBOL"))
+    {
+      if (configured > 0)
+        options->OPEN_QUOTE_SYMBOL.configured = configured;
+    }
+  else if (!strcmp (key, "OUTPUT_CHARACTERS"))
+    {
+      if (configured > 0)
+        options->OUTPUT_CHARACTERS.configured = configured;
+    }
+  else if (!strcmp (key, "OUTPUT_ENCODING_NAME"))
+    {
+      if (configured > 0)
+        options->OUTPUT_ENCODING_NAME.configured = configured;
+    }
+  else if (!strcmp (key, "OUTPUT_FILE_NAME_ENCODING"))
+    {
+      if (configured > 0)
+        options->OUTPUT_FILE_NAME_ENCODING.configured = configured;
+    }
+  else if (!strcmp (key, "OUTPUT_PERL_ENCODING"))
+    {
+      if (configured > 0)
+        options->OUTPUT_PERL_ENCODING.configured = configured;
+    }
+  else if (!strcmp (key, "PACKAGE"))
+    {
+      if (configured > 0)
+        options->PACKAGE.configured = configured;
+    }
+  else if (!strcmp (key, "PACKAGE_AND_VERSION"))
+    {
+      if (configured > 0)
+        options->PACKAGE_AND_VERSION.configured = configured;
+    }
+  else if (!strcmp (key, "PACKAGE_NAME"))
+    {
+      if (configured > 0)
+        options->PACKAGE_NAME.configured = configured;
+    }
+  else if (!strcmp (key, "PACKAGE_URL"))
+    {
+      if (configured > 0)
+        options->PACKAGE_URL.configured = configured;
+    }
+  else if (!strcmp (key, "PACKAGE_VERSION"))
+    {
+      if (configured > 0)
+        options->PACKAGE_VERSION.configured = configured;
+    }
+  else if (!strcmp (key, "PRE_BODY_CLOSE"))
+    {
+      if (configured > 0)
+        options->PRE_BODY_CLOSE.configured = configured;
+    }
+  else if (!strcmp (key, "PREFIX"))
+    {
+      if (configured > 0)
+        options->PREFIX.configured = configured;
+    }
+  else if (!strcmp (key, "PROGRAM"))
+    {
+      if (configured > 0)
+        options->PROGRAM.configured = configured;
+    }
+  else if (!strcmp (key, "PROGRAM_NAME_IN_ABOUT"))
+    {
+      if (configured > 0)
+        options->PROGRAM_NAME_IN_ABOUT.configured = configured;
+    }
+  else if (!strcmp (key, "PROGRAM_NAME_IN_FOOTER"))
+    {
+      if (configured > 0)
+        options->PROGRAM_NAME_IN_FOOTER.configured = configured;
+    }
+  else if (!strcmp (key, "SECTION_NAME_IN_TITLE"))
+    {
+      if (configured > 0)
+        options->SECTION_NAME_IN_TITLE.configured = configured;
+    }
+  else if (!strcmp (key, "SHORT_TOC_LINK_TO_TOC"))
+    {
+      if (configured > 0)
+        options->SHORT_TOC_LINK_TO_TOC.configured = configured;
+    }
+  else if (!strcmp (key, "SHOW_TITLE"))
+    {
+      if (configured > 0)
+        options->SHOW_TITLE.configured = configured;
+    }
+  else if (!strcmp (key, "T4H_LATEX_CONVERSION"))
+    {
+      if (configured > 0)
+        options->T4H_LATEX_CONVERSION.configured = configured;
+    }
+  else if (!strcmp (key, "T4H_MATH_CONVERSION"))
+    {
+      if (configured > 0)
+        options->T4H_MATH_CONVERSION.configured = configured;
+    }
+  else if (!strcmp (key, "T4H_TEX_CONVERSION"))
+    {
+      if (configured > 0)
+        options->T4H_TEX_CONVERSION.configured = configured;
+    }
+  else if (!strcmp (key, "TEXI2HTML"))
+    {
+      if (configured > 0)
+        options->TEXI2HTML.configured = configured;
+    }
+  else if (!strcmp (key, "TEXINFO_OUTPUT_FORMAT"))
+    {
+      if (configured > 0)
+        options->TEXINFO_OUTPUT_FORMAT.configured = configured;
+    }
+  else if (!strcmp (key, "TXI_MARKUP_NO_SECTION_EXTENT"))
+    {
+      if (configured > 0)
+        options->TXI_MARKUP_NO_SECTION_EXTENT.configured = configured;
+    }
+  else if (!strcmp (key, "TOC_LINKS"))
+    {
+      if (configured > 0)
+        options->TOC_LINKS.configured = configured;
+    }
+  else if (!strcmp (key, "TOP_FILE"))
+    {
+      if (configured > 0)
+        options->TOP_FILE.configured = configured;
+    }
+  else if (!strcmp (key, "TOP_NODE_FILE_TARGET"))
+    {
+      if (configured > 0)
+        options->TOP_NODE_FILE_TARGET.configured = configured;
+    }
+  else if (!strcmp (key, "TOP_NODE_UP_URL"))
+    {
+      if (configured > 0)
+        options->TOP_NODE_UP_URL.configured = configured;
+    }
+  else if (!strcmp (key, "USE_ACCESSKEY"))
+    {
+      if (configured > 0)
+        options->USE_ACCESSKEY.configured = configured;
+    }
+  else if (!strcmp (key, "USE_ISO"))
+    {
+      if (configured > 0)
+        options->USE_ISO.configured = configured;
+    }
+  else if (!strcmp (key, "USE_LINKS"))
+    {
+      if (configured > 0)
+        options->USE_LINKS.configured = configured;
+    }
+  else if (!strcmp (key, "USE_NEXT_HEADING_FOR_LONE_NODE"))
+    {
+      if (configured > 0)
+        options->USE_NEXT_HEADING_FOR_LONE_NODE.configured = configured;
+    }
+  else if (!strcmp (key, "USE_NODES"))
+    {
+      if (configured > 0)
+        options->USE_NODES.configured = configured;
+    }
+  else if (!strcmp (key, "USE_NODE_DIRECTIONS"))
+    {
+      if (configured > 0)
+        options->USE_NODE_DIRECTIONS.configured = configured;
+    }
+  else if (!strcmp (key, "USE_NUMERIC_ENTITY"))
+    {
+      if (configured > 0)
+        options->USE_NUMERIC_ENTITY.configured = configured;
+    }
+  else if (!strcmp (key, "USE_REL_REV"))
+    {
+      if (configured > 0)
+        options->USE_REL_REV.configured = configured;
+    }
+  else if (!strcmp (key, "USE_SETFILENAME_EXTENSION"))
+    {
+      if (configured > 0)
+        options->USE_SETFILENAME_EXTENSION.configured = configured;
+    }
+  else if (!strcmp (key, "USE_TITLEPAGE_FOR_TITLE"))
+    {
+      if (configured > 0)
+        options->USE_TITLEPAGE_FOR_TITLE.configured = configured;
+    }
+  else if (!strcmp (key, "USE_UNIDECODE"))
+    {
+      if (configured > 0)
+        options->USE_UNIDECODE.configured = configured;
+    }
+  else if (!strcmp (key, "USE_XML_SYNTAX"))
+    {
+      if (configured > 0)
+        options->USE_XML_SYNTAX.configured = configured;
+    }
+  else if (!strcmp (key, "VERTICAL_HEAD_NAVIGATION"))
+    {
+      if (configured > 0)
+        options->VERTICAL_HEAD_NAVIGATION.configured = configured;
+    }
+  else if (!strcmp (key, "WORDS_IN_PAGE"))
+    {
+      if (configured > 0)
+        options->WORDS_IN_PAGE.configured = configured;
+    }
+  else if (!strcmp (key, "XREF_USE_FLOAT_LABEL"))
+    {
+      if (configured > 0)
+        options->XREF_USE_FLOAT_LABEL.configured = configured;
+    }
+  else if (!strcmp (key, "XREF_USE_NODE_NAME_ARG"))
+    {
+      if (configured > 0)
+        options->XREF_USE_NODE_NAME_ARG.configured = configured;
+    }
+  else if (!strcmp (key, "XS_EXTERNAL_CONVERSION"))
+    {
+      if (configured > 0)
+        options->XS_EXTERNAL_CONVERSION.configured = configured;
+    }
+  else if (!strcmp (key, "XS_EXTERNAL_FORMATTING"))
+    {
+      if (configured > 0)
+        options->XS_EXTERNAL_FORMATTING.configured = configured;
+    }
+  else if (!strcmp (key, "XS_STRXFRM_COLLATION_LOCALE"))
+    {
+      if (configured > 0)
+        options->XS_STRXFRM_COLLATION_LOCALE.configured = configured;
+    }
+  else if (!strcmp (key, "_INLINE_STYLE_WIDTH"))
+    {
+      if (configured > 0)
+        options->_INLINE_STYLE_WIDTH.configured = configured;
+    }
+
+/* converter_other */
+
+  else if (!strcmp (key, "LINKS_BUTTONS"))
+    {
+      if (configured > 0)
+        options->LINKS_BUTTONS.configured = configured;
+    }
+  else if (!strcmp (key, "TOP_BUTTONS"))
+    {
+      if (configured > 0)
+        options->TOP_BUTTONS.configured = configured;
+    }
+  else if (!strcmp (key, "TOP_FOOTER_BUTTONS"))
+    {
+      if (configured > 0)
+        options->TOP_FOOTER_BUTTONS.configured = configured;
+    }
+  else if (!strcmp (key, "SECTION_BUTTONS"))
+    {
+      if (configured > 0)
+        options->SECTION_BUTTONS.configured = configured;
+    }
+  else if (!strcmp (key, "CHAPTER_FOOTER_BUTTONS"))
+    {
+      if (configured > 0)
+        options->CHAPTER_FOOTER_BUTTONS.configured = configured;
+    }
+  else if (!strcmp (key, "SECTION_FOOTER_BUTTONS"))
+    {
+      if (configured > 0)
+        options->SECTION_FOOTER_BUTTONS.configured = configured;
+    }
+  else if (!strcmp (key, "NODE_FOOTER_BUTTONS"))
+    {
+      if (configured > 0)
+        options->NODE_FOOTER_BUTTONS.configured = configured;
+    }
+  else if (!strcmp (key, "MISC_BUTTONS"))
+    {
+      if (configured > 0)
+        options->MISC_BUTTONS.configured = configured;
+    }
+  else if (!strcmp (key, "CHAPTER_BUTTONS"))
+    {
+      if (configured > 0)
+        options->CHAPTER_BUTTONS.configured = configured;
+    }
+  else if (!strcmp (key, "ACTIVE_ICONS"))
+    {
+      if (configured > 0)
+        options->ACTIVE_ICONS.configured = configured;
+    }
+  else if (!strcmp (key, "PASSIVE_ICONS"))
+    {
+      if (configured > 0)
+        options->PASSIVE_ICONS.configured = configured;
+    }
+
+/* multiple_at_command */
+
+  else if (!strcmp (key, "allowcodebreaks"))
+    {
+      if (configured > 0)
+        options->allowcodebreaks.configured = configured;
+    }
+  else if (!strcmp (key, "clickstyle"))
+    {
+      if (configured > 0)
+        options->clickstyle.configured = configured;
+    }
+  else if (!strcmp (key, "codequotebacktick"))
+    {
+      if (configured > 0)
+        options->codequotebacktick.configured = configured;
+    }
+  else if (!strcmp (key, "codequoteundirected"))
+    {
+      if (configured > 0)
+        options->codequoteundirected.configured = configured;
+    }
+  else if (!strcmp (key, "contents"))
+    {
+      if (configured > 0)
+        options->contents.configured = configured;
+    }
+  else if (!strcmp (key, "deftypefnnewline"))
+    {
+      if (configured > 0)
+        options->deftypefnnewline.configured = configured;
+    }
+  else if (!strcmp (key, "documentencoding"))
+    {
+      if (configured > 0)
+        options->documentencoding.configured = configured;
+    }
+  else if (!strcmp (key, "documentlanguage"))
+    {
+      if (configured > 0)
+        options->documentlanguage.configured = configured;
+    }
+  else if (!strcmp (key, "evenfooting"))
+    {
+      if (configured > 0)
+        options->evenfooting.configured = configured;
+    }
+  else if (!strcmp (key, "evenheading"))
+    {
+      if (configured > 0)
+        options->evenheading.configured = configured;
+    }
+  else if (!strcmp (key, "everyfooting"))
+    {
+      if (configured > 0)
+        options->everyfooting.configured = configured;
+    }
+  else if (!strcmp (key, "everyheading"))
+    {
+      if (configured > 0)
+        options->everyheading.configured = configured;
+    }
+  else if (!strcmp (key, "exampleindent"))
+    {
+      if (configured > 0)
+        options->exampleindent.configured = configured;
+    }
+  else if (!strcmp (key, "firstparagraphindent"))
+    {
+      if (configured > 0)
+        options->firstparagraphindent.configured = configured;
+    }
+  else if (!strcmp (key, "frenchspacing"))
+    {
+      if (configured > 0)
+        options->frenchspacing.configured = configured;
+    }
+  else if (!strcmp (key, "headings"))
+    {
+      if (configured > 0)
+        options->headings.configured = configured;
+    }
+  else if (!strcmp (key, "kbdinputstyle"))
+    {
+      if (configured > 0)
+        options->kbdinputstyle.configured = configured;
+    }
+  else if (!strcmp (key, "microtype"))
+    {
+      if (configured > 0)
+        options->microtype.configured = configured;
+    }
+  else if (!strcmp (key, "oddheading"))
+    {
+      if (configured > 0)
+        options->oddheading.configured = configured;
+    }
+  else if (!strcmp (key, "oddfooting"))
+    {
+      if (configured > 0)
+        options->oddfooting.configured = configured;
+    }
+  else if (!strcmp (key, "paragraphindent"))
+    {
+      if (configured > 0)
+        options->paragraphindent.configured = configured;
+    }
+  else if (!strcmp (key, "shortcontents"))
+    {
+      if (configured > 0)
+        options->shortcontents.configured = configured;
+    }
+  else if (!strcmp (key, "summarycontents"))
+    {
+      if (configured > 0)
+        options->summarycontents.configured = configured;
+    }
+  else if (!strcmp (key, "urefbreakstyle"))
+    {
+      if (configured > 0)
+        options->urefbreakstyle.configured = configured;
+    }
+  else if (!strcmp (key, "xrefautomaticsectiontitle"))
+    {
+      if (configured > 0)
+        options->xrefautomaticsectiontitle.configured = configured;
+    }
+
+/* program_cmdline */
+
+  else if (!strcmp (key, "MACRO_EXPAND"))
+    {
+      if (configured > 0)
+        options->MACRO_EXPAND.configured = configured;
+    }
+  else if (!strcmp (key, "INTERNAL_LINKS"))
+    {
+      if (configured > 0)
+        options->INTERNAL_LINKS.configured = configured;
+    }
+  else if (!strcmp (key, "ERROR_LIMIT"))
+    {
+      if (configured > 0)
+        options->ERROR_LIMIT.configured = configured;
+    }
+  else if (!strcmp (key, "FORCE"))
+    {
+      if (configured > 0)
+        options->FORCE.configured = configured;
+    }
+  else if (!strcmp (key, "NO_WARN"))
+    {
+      if (configured > 0)
+        options->NO_WARN.configured = configured;
+    }
+  else if (!strcmp (key, "SILENT"))
+    {
+      if (configured > 0)
+        options->SILENT.configured = configured;
+    }
+  else if (!strcmp (key, "TRACE_INCLUDES"))
+    {
+      if (configured > 0)
+        options->TRACE_INCLUDES.configured = configured;
+    }
+  else if (!strcmp (key, "FORMAT_MENU"))
+    {
+      if (configured > 0)
+        options->FORMAT_MENU.configured = configured;
+    }
+
+/* program_customization */
+
+  else if (!strcmp (key, "CHECK_NORMAL_MENU_STRUCTURE"))
+    {
+      if (configured > 0)
+        options->CHECK_NORMAL_MENU_STRUCTURE.configured = configured;
+    }
+  else if (!strcmp (key, "CHECK_MISSING_MENU_ENTRY"))
+    {
+      if (configured > 0)
+        options->CHECK_MISSING_MENU_ENTRY.configured = configured;
+    }
+  else if (!strcmp (key, "DUMP_TREE"))
+    {
+      if (configured > 0)
+        options->DUMP_TREE.configured = configured;
+    }
+  else if (!strcmp (key, "DUMP_TEXI"))
+    {
+      if (configured > 0)
+        options->DUMP_TEXI.configured = configured;
+    }
+  else if (!strcmp (key, "SHOW_BUILTIN_CSS_RULES"))
+    {
+      if (configured > 0)
+        options->SHOW_BUILTIN_CSS_RULES.configured = configured;
+    }
+  else if (!strcmp (key, "SORT_ELEMENT_COUNT"))
+    {
+      if (configured > 0)
+        options->SORT_ELEMENT_COUNT.configured = configured;
+    }
+  else if (!strcmp (key, "SORT_ELEMENT_COUNT_WORDS"))
+    {
+      if (configured > 0)
+        options->SORT_ELEMENT_COUNT_WORDS.configured = configured;
+    }
+  else if (!strcmp (key, "TEXI2DVI"))
+    {
+      if (configured > 0)
+        options->TEXI2DVI.configured = configured;
+    }
+  else if (!strcmp (key, "TREE_TRANSFORMATIONS"))
+    {
+      if (configured > 0)
+        options->TREE_TRANSFORMATIONS.configured = configured;
+    }
+
+/* unique_at_command */
+
+  else if (!strcmp (key, "afivepaper"))
+    {
+      if (configured > 0)
+        options->afivepaper.configured = configured;
+    }
+  else if (!strcmp (key, "afourpaper"))
+    {
+      if (configured > 0)
+        options->afourpaper.configured = configured;
+    }
+  else if (!strcmp (key, "afourlatex"))
+    {
+      if (configured > 0)
+        options->afourlatex.configured = configured;
+    }
+  else if (!strcmp (key, "afourwide"))
+    {
+      if (configured > 0)
+        options->afourwide.configured = configured;
+    }
+  else if (!strcmp (key, "bsixpaper"))
+    {
+      if (configured > 0)
+        options->bsixpaper.configured = configured;
+    }
+  else if (!strcmp (key, "documentdescription"))
+    {
+      if (configured > 0)
+        options->documentdescription.configured = configured;
+    }
+  else if (!strcmp (key, "evenfootingmarks"))
+    {
+      if (configured > 0)
+        options->evenfootingmarks.configured = configured;
+    }
+  else if (!strcmp (key, "evenheadingmarks"))
+    {
+      if (configured > 0)
+        options->evenheadingmarks.configured = configured;
+    }
+  else if (!strcmp (key, "everyfootingmarks"))
+    {
+      if (configured > 0)
+        options->everyfootingmarks.configured = configured;
+    }
+  else if (!strcmp (key, "everyheadingmarks"))
+    {
+      if (configured > 0)
+        options->everyheadingmarks.configured = configured;
+    }
+  else if (!strcmp (key, "fonttextsize"))
+    {
+      if (configured > 0)
+        options->fonttextsize.configured = configured;
+    }
+  else if (!strcmp (key, "footnotestyle"))
+    {
+      if (configured > 0)
+        options->footnotestyle.configured = configured;
+    }
+  else if (!strcmp (key, "novalidate"))
+    {
+      if (configured > 0)
+        options->novalidate.configured = configured;
+    }
+  else if (!strcmp (key, "oddfootingmarks"))
+    {
+      if (configured > 0)
+        options->oddfootingmarks.configured = configured;
+    }
+  else if (!strcmp (key, "oddheadingmarks"))
+    {
+      if (configured > 0)
+        options->oddheadingmarks.configured = configured;
+    }
+  else if (!strcmp (key, "pagesizes"))
+    {
+      if (configured > 0)
+        options->pagesizes.configured = configured;
+    }
+  else if (!strcmp (key, "setchapternewpage"))
+    {
+      if (configured > 0)
+        options->setchapternewpage.configured = configured;
+    }
+  else if (!strcmp (key, "setfilename"))
+    {
+      if (configured > 0)
+        options->setfilename.configured = configured;
+    }
+  else if (!strcmp (key, "smallbook"))
+    {
+      if (configured > 0)
+        options->smallbook.configured = configured;
+    }
+}
+
+#include "command_ids.h"
+
+OPTION *
+get_command_option (OPTIONS *options,
+                    enum command_id cmd)
+{
+  switch (cmd)
+    {
+    case CM_afivepaper:
+    {
+      return &options->afivepaper;
+      break;
+    }
+    case CM_afourlatex:
+    {
+      return &options->afourlatex;
+      break;
+    }
+    case CM_afourpaper:
+    {
+      return &options->afourpaper;
+      break;
+    }
+    case CM_afourwide:
+    {
+      return &options->afourwide;
+      break;
+    }
+    case CM_allowcodebreaks:
+    {
+      return &options->allowcodebreaks;
+      break;
+    }
+    case CM_bsixpaper:
+    {
+      return &options->bsixpaper;
+      break;
+    }
+    case CM_clickstyle:
+    {
+      return &options->clickstyle;
+      break;
+    }
+    case CM_codequotebacktick:
+    {
+      return &options->codequotebacktick;
+      break;
+    }
+    case CM_codequoteundirected:
+    {
+      return &options->codequoteundirected;
+      break;
+    }
+    case CM_contents:
+    {
+      return &options->contents;
+      break;
+    }
+    case CM_deftypefnnewline:
+    {
+      return &options->deftypefnnewline;
+      break;
+    }
+    case CM_documentdescription:
+    {
+      return &options->documentdescription;
+      break;
+    }
+    case CM_documentencoding:
+    {
+      return &options->documentencoding;
+      break;
+    }
+    case CM_documentlanguage:
+    {
+      return &options->documentlanguage;
+      break;
+    }
+    case CM_evenfooting:
+    {
+      return &options->evenfooting;
+      break;
+    }
+    case CM_evenfootingmarks:
+    {
+      return &options->evenfootingmarks;
+      break;
+    }
+    case CM_evenheading:
+    {
+      return &options->evenheading;
+      break;
+    }
+    case CM_evenheadingmarks:
+    {
+      return &options->evenheadingmarks;
+      break;
+    }
+    case CM_everyfooting:
+    {
+      return &options->everyfooting;
+      break;
+    }
+    case CM_everyfootingmarks:
+    {
+      return &options->everyfootingmarks;
+      break;
+    }
+    case CM_everyheading:
+    {
+      return &options->everyheading;
+      break;
+    }
+    case CM_everyheadingmarks:
+    {
+      return &options->everyheadingmarks;
+      break;
+    }
+    case CM_exampleindent:
+    {
+      return &options->exampleindent;
+      break;
+    }
+    case CM_firstparagraphindent:
+    {
+      return &options->firstparagraphindent;
+      break;
+    }
+    case CM_fonttextsize:
+    {
+      return &options->fonttextsize;
+      break;
+    }
+    case CM_footnotestyle:
+    {
+      return &options->footnotestyle;
+      break;
+    }
+    case CM_frenchspacing:
+    {
+      return &options->frenchspacing;
+      break;
+    }
+    case CM_headings:
+    {
+      return &options->headings;
+      break;
+    }
+    case CM_kbdinputstyle:
+    {
+      return &options->kbdinputstyle;
+      break;
+    }
+    case CM_microtype:
+    {
+      return &options->microtype;
+      break;
+    }
+    case CM_novalidate:
+    {
+      return &options->novalidate;
+      break;
+    }
+    case CM_oddfooting:
+    {
+      return &options->oddfooting;
+      break;
+    }
+    case CM_oddfootingmarks:
+    {
+      return &options->oddfootingmarks;
+      break;
+    }
+    case CM_oddheading:
+    {
+      return &options->oddheading;
+      break;
+    }
+    case CM_oddheadingmarks:
+    {
+      return &options->oddheadingmarks;
+      break;
+    }
+    case CM_pagesizes:
+    {
+      return &options->pagesizes;
+      break;
+    }
+    case CM_paragraphindent:
+    {
+      return &options->paragraphindent;
+      break;
+    }
+    case CM_setchapternewpage:
+    {
+      return &options->setchapternewpage;
+      break;
+    }
+    case CM_setfilename:
+    {
+      return &options->setfilename;
+      break;
+    }
+    case CM_shortcontents:
+    {
+      return &options->shortcontents;
+      break;
+    }
+    case CM_smallbook:
+    {
+      return &options->smallbook;
+      break;
+    }
+    case CM_summarycontents:
+    {
+      return &options->summarycontents;
+      break;
+    }
+    case CM_urefbreakstyle:
+    {
+      return &options->urefbreakstyle;
+      break;
+    }
+    case CM_xrefautomaticsectiontitle:
+    {
+      return &options->xrefautomaticsectiontitle;
+      break;
+    }
+
+    default:
+      return 0;
+    }
+}
+
+void
+html_fill_options_directions (OPTIONS *options, const CONVERTER *converter)
+{
+  if (options->LINKS_BUTTONS.o.buttons)
+    html_fill_button_directions_specification_list (converter, 
options->LINKS_BUTTONS.o.buttons);
+
+  if (options->TOP_BUTTONS.o.buttons)
+    html_fill_button_directions_specification_list (converter, 
options->TOP_BUTTONS.o.buttons);
+
+  if (options->TOP_FOOTER_BUTTONS.o.buttons)
+    html_fill_button_directions_specification_list (converter, 
options->TOP_FOOTER_BUTTONS.o.buttons);
+
+  if (options->SECTION_BUTTONS.o.buttons)
+    html_fill_button_directions_specification_list (converter, 
options->SECTION_BUTTONS.o.buttons);
+
+  if (options->CHAPTER_FOOTER_BUTTONS.o.buttons)
+    html_fill_button_directions_specification_list (converter, 
options->CHAPTER_FOOTER_BUTTONS.o.buttons);
+
+  if (options->SECTION_FOOTER_BUTTONS.o.buttons)
+    html_fill_button_directions_specification_list (converter, 
options->SECTION_FOOTER_BUTTONS.o.buttons);
+
+  if (options->NODE_FOOTER_BUTTONS.o.buttons)
+    html_fill_button_directions_specification_list (converter, 
options->NODE_FOOTER_BUTTONS.o.buttons);
+
+  if (options->MISC_BUTTONS.o.buttons)
+    html_fill_button_directions_specification_list (converter, 
options->MISC_BUTTONS.o.buttons);
+
+  if (options->CHAPTER_BUTTONS.o.buttons)
+    html_fill_button_directions_specification_list (converter, 
options->CHAPTER_BUTTONS.o.buttons);
+
+}
+
+COMMAND_OPTION_DEFAULT command_option_default_table[] = {
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_char, -2, 0},   /* afivepaper (unique_at_command) */
+{GOT_char, -2, 0},   /* afourlatex (unique_at_command) */
+{GOT_char, -2, 0},   /* afourpaper (unique_at_command) */
+{GOT_char, -2, 0},   /* afourwide (unique_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_char, -2, "true"},   /* allowcodebreaks (multiple_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_char, -2, 0},   /* bsixpaper (unique_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_char, -2, "@arrow"},   /* clickstyle (multiple_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_char, -2, "off"},   /* codequotebacktick (multiple_at_command) */
+{GOT_char, -2, "off"},   /* codequoteundirected (multiple_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_integer, 0, 0},   /* contents (multiple_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_char, -2, "off"},   /* deftypefnnewline (multiple_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_char, -2, 0},   /* documentdescription (unique_at_command) */
+{GOT_char, -2, "utf-8"},   /* documentencoding (multiple_at_command) */
+{GOT_char, -2, 0},   /* documentlanguage (multiple_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_char, -2, 0},   /* evenfooting (multiple_at_command) */
+{GOT_char, -2, 0},   /* evenfootingmarks (unique_at_command) */
+{GOT_char, -2, 0},   /* evenheading (multiple_at_command) */
+{GOT_char, -2, 0},   /* evenheadingmarks (unique_at_command) */
+{GOT_char, -2, 0},   /* everyfooting (multiple_at_command) */
+{GOT_char, -2, "bottom"},   /* everyfootingmarks (unique_at_command) */
+{GOT_char, -2, 0},   /* everyheading (multiple_at_command) */
+{GOT_char, -2, "bottom"},   /* everyheadingmarks (unique_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_char, -2, "5"},   /* exampleindent (multiple_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_char, -2, "none"},   /* firstparagraphindent (multiple_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_integer, 11, 0},   /* fonttextsize (unique_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_char, -2, "end"},   /* footnotestyle (unique_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_char, -2, "off"},   /* frenchspacing (multiple_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_char, -2, "on"},   /* headings (multiple_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_char, -2, "distinct"},   /* kbdinputstyle (multiple_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_char, -2, 0},   /* microtype (multiple_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_integer, 0, 0},   /* novalidate (unique_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_char, -2, 0},   /* oddfooting (multiple_at_command) */
+{GOT_char, -2, 0},   /* oddfootingmarks (unique_at_command) */
+{GOT_char, -2, 0},   /* oddheading (multiple_at_command) */
+{GOT_char, -2, 0},   /* oddheadingmarks (unique_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_char, -2, 0},   /* pagesizes (unique_at_command) */
+{GOT_char, -2, "3"},   /* paragraphindent (multiple_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_char, -2, "on"},   /* setchapternewpage (unique_at_command) */
+{GOT_char, -2, 0},   /* setfilename (unique_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_integer, 0, 0},   /* shortcontents (multiple_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_char, -2, 0},   /* smallbook (unique_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_integer, 0, 0},   /* summarycontents (multiple_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_char, -2, "after"},   /* urefbreakstyle (multiple_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_char, -2, "off"},   /* xrefautomaticsectiontitle (multiple_at_command) */
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+{GOT_NONE, -2, 0},
+};
+
diff --git a/tp/Texinfo/XS/main/options_types.h 
b/tp/Texinfo/XS/main/options_types.h
new file mode 100644
index 0000000000..f88de67bb0
--- /dev/null
+++ b/tp/Texinfo/XS/main/options_types.h
@@ -0,0 +1,276 @@
+/* Automatically generated from regenerate_C_options_info.pl */
+
+#ifndef OPTIONS_TYPES_H
+#define OPTIONS_TYPES_H
+
+#include "main/option_types.h"
+
+/* Undefine values set from autoconf as we use these as
+   customization variable names.  The original values are
+   available with a _CONFIG suffix, e.g. PACKAGE_CONFIG for
+   PACKAGE. */
+#undef PACKAGE
+#undef PACKAGE_NAME
+#undef PACKAGE_URL
+#undef PACKAGE_VERSION
+
+#define TXI_OPTIONS_NR 229
+
+typedef struct OPTIONS {
+    size_t BIT_user_function_number;
+
+/* array_cmdline */
+
+    OPTION CSS_FILES;
+    OPTION CSS_REFS;
+    OPTION EXPANDED_FORMATS;
+    OPTION INCLUDE_DIRECTORIES;
+    OPTION TEXINFO_LANGUAGE_DIRECTORIES;
+
+/* converter_cmdline */
+
+    OPTION SPLIT_SIZE;
+    OPTION FILLCOLUMN;
+    OPTION NUMBER_SECTIONS;
+    OPTION NUMBER_FOOTNOTES;
+    OPTION TRANSLITERATE_FILE_NAMES;
+    OPTION SPLIT;
+    OPTION HEADERS;
+    OPTION NODE_FILES;
+    OPTION VERBOSE;
+    OPTION OUTFILE;
+    OPTION SUBDIR;
+    OPTION ENABLE_ENCODING;
+
+/* converter_customization */
+
+    OPTION TOP_NODE_UP;
+    OPTION BASEFILENAME_LENGTH;
+    OPTION DOC_ENCODING_FOR_INPUT_FILE_NAME;
+    OPTION DOC_ENCODING_FOR_OUTPUT_FILE_NAME;
+    OPTION IMAGE_LINK_PREFIX;
+    OPTION CASE_INSENSITIVE_FILENAMES;
+    OPTION DEBUG;
+    OPTION HANDLER_FATAL_ERROR_LEVEL;
+    OPTION TEST;
+    OPTION TEXTCONTENT_COMMENT;
+    OPTION TEXINFO_DTD_VERSION;
+    OPTION USE_UNICODE_COLLATION;
+    OPTION AFTER_BODY_OPEN;
+    OPTION AFTER_SHORT_TOC_LINES;
+    OPTION AFTER_TOC_LINES;
+    OPTION ASCII_DASHES_AND_QUOTES;
+    OPTION ASCII_GLYPH;
+    OPTION ASCII_PUNCTUATION;
+    OPTION AUTO_MENU_DESCRIPTION_ALIGN_COLUMN;
+    OPTION AUTO_MENU_MAX_WIDTH;
+    OPTION BEFORE_SHORT_TOC_LINES;
+    OPTION BEFORE_TOC_LINES;
+    OPTION BIG_RULE;
+    OPTION BODY_ELEMENT_ATTRIBUTES;
+    OPTION CLASS_BEGIN_USEPACKAGE;
+    OPTION COPIABLE_LINKS;
+    OPTION CHAPTER_HEADER_LEVEL;
+    OPTION CHECK_HTMLXREF;
+    OPTION CLOSE_DOUBLE_QUOTE_SYMBOL;
+    OPTION CLOSE_QUOTE_SYMBOL;
+    OPTION COLLATION_LANGUAGE;
+    OPTION COMMAND_LINE_ENCODING;
+    OPTION INDENTED_BLOCK_COMMANDS_IN_TABLE;
+    OPTION CONTENTS_OUTPUT_LOCATION;
+    OPTION CONVERT_TO_LATEX_IN_MATH;
+    OPTION DATE_IN_HEADER;
+    OPTION DEFAULT_RULE;
+    OPTION DEF_TABLE;
+    OPTION DO_ABOUT;
+    OPTION DOCTYPE;
+    OPTION DOCUMENTLANGUAGE_COLLATION;
+    OPTION END_USEPACKAGE;
+    OPTION EPUB_CREATE_CONTAINER_FILE;
+    OPTION EPUB_KEEP_CONTAINER_FOLDER;
+    OPTION EXTENSION;
+    OPTION EXTERNAL_CROSSREF_EXTENSION;
+    OPTION EXTERNAL_CROSSREF_SPLIT;
+    OPTION EXTERNAL_DIR;
+    OPTION EXTRA_HEAD;
+    OPTION FOOTNOTE_END_HEADER_LEVEL;
+    OPTION FOOTNOTE_SEPARATE_HEADER_LEVEL;
+    OPTION HEADER_IN_TABLE;
+    OPTION HIGHLIGHT_SYNTAX;
+    OPTION HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE;
+    OPTION HTML_MATH;
+    OPTION HTML_ROOT_ELEMENT_ATTRIBUTES;
+    OPTION HTMLXREF_FILE;
+    OPTION HTMLXREF_MODE;
+    OPTION ICONS;
+    OPTION INDEX_ENTRY_COLON;
+    OPTION INDEX_SPECIAL_CHARS_WARNING;
+    OPTION INFO_JS_DIR;
+    OPTION INFO_SPECIAL_CHARS_QUOTE;
+    OPTION INFO_SPECIAL_CHARS_WARNING;
+    OPTION IGNORE_REF_TO_TOP_NODE_UP;
+    OPTION INLINE_CSS_STYLE;
+    OPTION INPUT_FILE_NAME_ENCODING;
+    OPTION JS_WEBLABELS;
+    OPTION JS_WEBLABELS_FILE;
+    OPTION LATEX_FLOATS_FILE_EXTENSION;
+    OPTION LOCALE_ENCODING;
+    OPTION L2H_CLEAN;
+    OPTION L2H_FILE;
+    OPTION L2H_HTML_VERSION;
+    OPTION L2H_L2H;
+    OPTION L2H_SKIP;
+    OPTION L2H_TMP;
+    OPTION MATHJAX_CONFIGURATION;
+    OPTION MATHJAX_SCRIPT;
+    OPTION MATHJAX_SOURCE;
+    OPTION MAX_HEADER_LEVEL;
+    OPTION MENU_ENTRY_COLON;
+    OPTION MENU_SYMBOL;
+    OPTION MESSAGE_ENCODING;
+    OPTION MONOLITHIC;
+    OPTION NO_CSS;
+    OPTION NO_NUMBER_FOOTNOTE_SYMBOL;
+    OPTION NO_CUSTOM_HTML_ATTRIBUTE;
+    OPTION NODE_NAME_IN_INDEX;
+    OPTION NODE_NAME_IN_MENU;
+    OPTION NO_TOP_NODE_OUTPUT;
+    OPTION OPEN_DOUBLE_QUOTE_SYMBOL;
+    OPTION OPEN_QUOTE_SYMBOL;
+    OPTION OUTPUT_CHARACTERS;
+    OPTION OUTPUT_ENCODING_NAME;
+    OPTION OUTPUT_FILE_NAME_ENCODING;
+    OPTION OUTPUT_PERL_ENCODING;
+    OPTION PACKAGE;
+    OPTION PACKAGE_AND_VERSION;
+    OPTION PACKAGE_NAME;
+    OPTION PACKAGE_URL;
+    OPTION PACKAGE_VERSION;
+    OPTION PRE_BODY_CLOSE;
+    OPTION PREFIX;
+    OPTION PROGRAM;
+    OPTION PROGRAM_NAME_IN_ABOUT;
+    OPTION PROGRAM_NAME_IN_FOOTER;
+    OPTION SECTION_NAME_IN_TITLE;
+    OPTION SHORT_TOC_LINK_TO_TOC;
+    OPTION SHOW_TITLE;
+    OPTION T4H_LATEX_CONVERSION;
+    OPTION T4H_MATH_CONVERSION;
+    OPTION T4H_TEX_CONVERSION;
+    OPTION TEXI2HTML;
+    OPTION TEXINFO_OUTPUT_FORMAT;
+    OPTION TXI_MARKUP_NO_SECTION_EXTENT;
+    OPTION TOC_LINKS;
+    OPTION TOP_FILE;
+    OPTION TOP_NODE_FILE_TARGET;
+    OPTION TOP_NODE_UP_URL;
+    OPTION USE_ACCESSKEY;
+    OPTION USE_ISO;
+    OPTION USE_LINKS;
+    OPTION USE_NEXT_HEADING_FOR_LONE_NODE;
+    OPTION USE_NODES;
+    OPTION USE_NODE_DIRECTIONS;
+    OPTION USE_NUMERIC_ENTITY;
+    OPTION USE_REL_REV;
+    OPTION USE_SETFILENAME_EXTENSION;
+    OPTION USE_TITLEPAGE_FOR_TITLE;
+    OPTION USE_UNIDECODE;
+    OPTION USE_XML_SYNTAX;
+    OPTION VERTICAL_HEAD_NAVIGATION;
+    OPTION WORDS_IN_PAGE;
+    OPTION XREF_USE_FLOAT_LABEL;
+    OPTION XREF_USE_NODE_NAME_ARG;
+    OPTION XS_EXTERNAL_CONVERSION;
+    OPTION XS_EXTERNAL_FORMATTING;
+    OPTION XS_STRXFRM_COLLATION_LOCALE;
+    OPTION _INLINE_STYLE_WIDTH;
+
+/* converter_other */
+
+    OPTION LINKS_BUTTONS;
+    OPTION TOP_BUTTONS;
+    OPTION TOP_FOOTER_BUTTONS;
+    OPTION SECTION_BUTTONS;
+    OPTION CHAPTER_FOOTER_BUTTONS;
+    OPTION SECTION_FOOTER_BUTTONS;
+    OPTION NODE_FOOTER_BUTTONS;
+    OPTION MISC_BUTTONS;
+    OPTION CHAPTER_BUTTONS;
+    OPTION ACTIVE_ICONS;
+    OPTION PASSIVE_ICONS;
+
+/* multiple_at_command */
+
+    OPTION allowcodebreaks;
+    OPTION clickstyle;
+    OPTION codequotebacktick;
+    OPTION codequoteundirected;
+    OPTION contents;
+    OPTION deftypefnnewline;
+    OPTION documentencoding;
+    OPTION documentlanguage;
+    OPTION evenfooting;
+    OPTION evenheading;
+    OPTION everyfooting;
+    OPTION everyheading;
+    OPTION exampleindent;
+    OPTION firstparagraphindent;
+    OPTION frenchspacing;
+    OPTION headings;
+    OPTION kbdinputstyle;
+    OPTION microtype;
+    OPTION oddheading;
+    OPTION oddfooting;
+    OPTION paragraphindent;
+    OPTION shortcontents;
+    OPTION summarycontents;
+    OPTION urefbreakstyle;
+    OPTION xrefautomaticsectiontitle;
+
+/* program_cmdline */
+
+    OPTION MACRO_EXPAND;
+    OPTION INTERNAL_LINKS;
+    OPTION ERROR_LIMIT;
+    OPTION FORCE;
+    OPTION NO_WARN;
+    OPTION SILENT;
+    OPTION TRACE_INCLUDES;
+    OPTION FORMAT_MENU;
+
+/* program_customization */
+
+    OPTION CHECK_NORMAL_MENU_STRUCTURE;
+    OPTION CHECK_MISSING_MENU_ENTRY;
+    OPTION DUMP_TREE;
+    OPTION DUMP_TEXI;
+    OPTION SHOW_BUILTIN_CSS_RULES;
+    OPTION SORT_ELEMENT_COUNT;
+    OPTION SORT_ELEMENT_COUNT_WORDS;
+    OPTION TEXI2DVI;
+    OPTION TREE_TRANSFORMATIONS;
+
+/* unique_at_command */
+
+    OPTION afivepaper;
+    OPTION afourpaper;
+    OPTION afourlatex;
+    OPTION afourwide;
+    OPTION bsixpaper;
+    OPTION documentdescription;
+    OPTION evenfootingmarks;
+    OPTION evenheadingmarks;
+    OPTION everyfootingmarks;
+    OPTION everyheadingmarks;
+    OPTION fonttextsize;
+    OPTION footnotestyle;
+    OPTION novalidate;
+    OPTION oddfootingmarks;
+    OPTION oddheadingmarks;
+    OPTION pagesizes;
+    OPTION setchapternewpage;
+    OPTION setfilename;
+    OPTION smallbook;
+} OPTIONS;
+
+#endif



reply via email to

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