summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2012-05-09 19:55:21 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2012-05-09 19:56:41 +0200
commit35d2bb2151a11c029e9a98d97a1277d899611970 (patch)
treea3c4c326f8aa6b81b2fb21e6e6cdf18fa880dd74
parent80d17ae5e9e55f5abad0633325b6b494f896438a (diff)
downloadgnutls-35d2bb2151a11c029e9a98d97a1277d899611970.tar.gz
updated libopts
-rw-r--r--README-alpha2
-rw-r--r--src/libopts/Makefile.am10
-rw-r--r--src/libopts/ag-char-map.h535
-rw-r--r--src/libopts/ao-strs.c2
-rw-r--r--src/libopts/ao-strs.h2
-rw-r--r--src/libopts/autoopts.c19
-rw-r--r--src/libopts/autoopts.h17
-rw-r--r--src/libopts/autoopts/options.h81
-rw-r--r--src/libopts/autoopts/project.h4
-rw-r--r--src/libopts/autoopts/usage-txt.h320
-rw-r--r--src/libopts/boolean.c14
-rw-r--r--src/libopts/check.c32
-rw-r--r--src/libopts/compat/compat.h19
-rw-r--r--src/libopts/compat/pathfind.c4
-rw-r--r--src/libopts/configfile.c108
-rw-r--r--src/libopts/cook.c16
-rw-r--r--src/libopts/enum.c38
-rw-r--r--src/libopts/env.c11
-rw-r--r--src/libopts/find.c8
-rw-r--r--src/libopts/genshell.c79
-rw-r--r--src/libopts/genshell.h14
-rw-r--r--src/libopts/libopts.c4
-rw-r--r--src/libopts/load.c93
-rw-r--r--src/libopts/m4/libopts.m415
-rw-r--r--src/libopts/makeshell.c6
-rw-r--r--src/libopts/nested.c13
-rw-r--r--src/libopts/parse-duration.c6
-rw-r--r--src/libopts/pgusage.c15
-rw-r--r--src/libopts/proto.h11
-rw-r--r--src/libopts/putshell.c10
-rw-r--r--src/libopts/reset.c8
-rw-r--r--src/libopts/save.c6
-rw-r--r--src/libopts/stack.c16
-rw-r--r--src/libopts/streqvcmp.c6
-rw-r--r--src/libopts/tokenize.c16
-rw-r--r--src/libopts/usage.c62
-rw-r--r--src/libopts/value-type.h2
-rw-r--r--src/libopts/xat-attribute.h2
38 files changed, 998 insertions, 628 deletions
diff --git a/README-alpha b/README-alpha
index aa49b817c0..46ae6f2dec 100644
--- a/README-alpha
+++ b/README-alpha
@@ -10,7 +10,7 @@ We require several tools to check out and build the software, including:
- Make <http://www.gnu.org/software/make/>
- Automake <http://www.gnu.org/software/automake/>
- Autoconf <http://www.gnu.org/software/autoconf/>
-- Autogen <http://www.gnu.org/software/autogen/> (use 5.15pre15 or better)
+- Autogen <http://www.gnu.org/software/autogen/> (use 5.16 or better)
- Libtool <http://www.gnu.org/software/libtool/>
- Gettext <http://www.gnu.org/software/gettext/>
- Texinfo <http://www.gnu.org/software/texinfo/>
diff --git a/src/libopts/Makefile.am b/src/libopts/Makefile.am
index 33977a8e58..db754db417 100644
--- a/src/libopts/Makefile.am
+++ b/src/libopts/Makefile.am
@@ -7,14 +7,14 @@ noinst_LTLIBRARIES = libopts.la
endif
libopts_la_SOURCES = libopts.c
libopts_la_CPPFLAGS = -I$(top_srcdir)
-libopts_la_LDFLAGS = -version-info 36:3:11
+libopts_la_LDFLAGS = -version-info 36:4:11
EXTRA_DIST = \
ag-char-map.h alias.c ao-strs.c \
- ao-strs.h autoopts/project.h autoopts/options.h \
+ ao-strs.h autoopts/options.h autoopts/project.h \
autoopts/usage-txt.h autoopts.c autoopts.h \
- boolean.c check.c compat/pathfind.c \
- compat/strchr.c compat/windows-config.h compat/snprintf.c \
- compat/compat.h compat/strdup.c configfile.c \
+ boolean.c check.c compat/strchr.c \
+ compat/pathfind.c compat/strdup.c compat/windows-config.h \
+ compat/snprintf.c compat/compat.h configfile.c \
cook.c COPYING.gplv3 COPYING.lgplv3 \
COPYING.mbsd enum.c env.c \
file.c find.c genshell.c \
diff --git a/src/libopts/ag-char-map.h b/src/libopts/ag-char-map.h
index c06b46ac79..33d4fe63ec 100644
--- a/src/libopts/ag-char-map.h
+++ b/src/libopts/ag-char-map.h
@@ -1,5 +1,6 @@
/*
- * Character mapping generated 02/26/12 11:08:40
+ * 28 bits for 44 character classifications
+ * generated by char-mapper on 05/06/12 at 16:20:58
*
* This file contains the character classifications
* used by AutoGen and AutoOpts for identifying tokens.
@@ -46,159 +47,399 @@
//
// %guard
// %file ag-char-map.h
+// %backup
+// %optimize
//
// %comment -- see above
// %
//
-// lower-case "a-z"
-// upper-case "A-Z"
-// alphabetic +lower-case +upper-case
+// newline "\n"
+// nul-byte "\x00"
+// dir-sep "/\\"
+// percent "%"
+// comma ","
+// colon ":"
+// underscore "_"
+// plus "+"
+// dollar "$"
+//
+// horiz-white "\t "
+// alt-white "\v\f\r\b"
+// whitespace +horiz-white +newline +alt-white
+// non-nl-white +horiz-white +alt-white
+// quote "'\""
+// parentheses "()"
+//
+// graphic "!-~"
+// inversion "~-"
// oct-digit "0-7"
// dec-digit "89" +oct-digit
// hex-digit "a-fA-F" +dec-digit
+// lower-case "a-z"
+// upper-case "A-Z"
+// alphabetic +lower-case +upper-case
// alphanumeric +alphabetic +dec-digit
-// var-first "_" +alphabetic
+// var-first +underscore +alphabetic
// variable-name +var-first +dec-digit
// option-name "^-" +variable-name
-// value-name ":" +option-name
-// horiz-white "\t "
+// value-name +colon +option-name
// name-sep "[.]"
// compound-name +value-name +name-sep +horiz-white
-// whitespace "\v\f\r\n\b" +horiz-white
-// unquotable "!-~" -"\"#(),;<=>[\\]`{}?*'"
+// scheme-note +parentheses +quote
+//
+// unquotable "!-~" -"#,;<=>[\\]`{}?*" -quote -parentheses
// end-xml-token "/>" +whitespace
-// graphic "!-~"
-// plus-n-space "+" +whitespace
+// plus-n-space +plus +whitespace
// punctuation "!-~" -alphanumeric -"_"
// suffix "-._" +alphanumeric
-// suffix-fmt "%/" +suffix
-// false-type "nNfF0\x00"
-// file-name "/" +suffix
-// end-token "\x00" +whitespace
-// end-list-entry "," +end-token
+// suffix-fmt +percent +suffix +dir-sep
+// false-type "nNfF0" +nul-byte
+// file-name +dir-sep +suffix
+// end-token +nul-byte +whitespace
+// end-list-entry +comma +end-token
// set-separator "|+" +end-list-entry
+// signed-number +inversion +dec-digit
+// make-script +dollar +newline
//
#endif /* 0 -- mapping spec. source */
typedef uint32_t ag_char_map_mask_t;
-#define IS_LOWER_CASE_CHAR( _c) is_ag_char_map_char((char)( _c), 0x000001)
-#define SPN_LOWER_CASE_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x000001)
-#define BRK_LOWER_CASE_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x000001)
-#define IS_UPPER_CASE_CHAR( _c) is_ag_char_map_char((char)( _c), 0x000002)
-#define SPN_UPPER_CASE_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x000002)
-#define BRK_UPPER_CASE_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x000002)
-#define IS_ALPHABETIC_CHAR( _c) is_ag_char_map_char((char)( _c), 0x000003)
-#define SPN_ALPHABETIC_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x000003)
-#define BRK_ALPHABETIC_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x000003)
-#define IS_OCT_DIGIT_CHAR( _c) is_ag_char_map_char((char)( _c), 0x000004)
-#define SPN_OCT_DIGIT_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x000004)
-#define BRK_OCT_DIGIT_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x000004)
-#define IS_DEC_DIGIT_CHAR( _c) is_ag_char_map_char((char)( _c), 0x00000C)
-#define SPN_DEC_DIGIT_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x00000C)
-#define BRK_DEC_DIGIT_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x00000C)
-#define IS_HEX_DIGIT_CHAR( _c) is_ag_char_map_char((char)( _c), 0x00001C)
-#define SPN_HEX_DIGIT_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x00001C)
-#define BRK_HEX_DIGIT_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x00001C)
-#define IS_ALPHANUMERIC_CHAR( _c) is_ag_char_map_char((char)( _c), 0x00000F)
-#define SPN_ALPHANUMERIC_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x00000F)
-#define BRK_ALPHANUMERIC_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x00000F)
-#define IS_VAR_FIRST_CHAR( _c) is_ag_char_map_char((char)( _c), 0x000023)
-#define SPN_VAR_FIRST_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x000023)
-#define BRK_VAR_FIRST_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x000023)
-#define IS_VARIABLE_NAME_CHAR( _c) is_ag_char_map_char((char)( _c), 0x00002F)
-#define SPN_VARIABLE_NAME_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x00002F)
-#define BRK_VARIABLE_NAME_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x00002F)
-#define IS_OPTION_NAME_CHAR( _c) is_ag_char_map_char((char)( _c), 0x00006F)
-#define SPN_OPTION_NAME_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x00006F)
-#define BRK_OPTION_NAME_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x00006F)
-#define IS_VALUE_NAME_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0000EF)
-#define SPN_VALUE_NAME_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x0000EF)
-#define BRK_VALUE_NAME_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x0000EF)
-#define IS_HORIZ_WHITE_CHAR( _c) is_ag_char_map_char((char)( _c), 0x000100)
-#define SPN_HORIZ_WHITE_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x000100)
-#define BRK_HORIZ_WHITE_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x000100)
-#define IS_NAME_SEP_CHAR( _c) is_ag_char_map_char((char)( _c), 0x000200)
-#define SPN_NAME_SEP_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x000200)
-#define BRK_NAME_SEP_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x000200)
-#define IS_COMPOUND_NAME_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0003EF)
-#define SPN_COMPOUND_NAME_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x0003EF)
-#define BRK_COMPOUND_NAME_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x0003EF)
-#define IS_WHITESPACE_CHAR( _c) is_ag_char_map_char((char)( _c), 0x000500)
-#define SPN_WHITESPACE_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x000500)
-#define BRK_WHITESPACE_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x000500)
-#define IS_UNQUOTABLE_CHAR( _c) is_ag_char_map_char((char)( _c), 0x000800)
-#define SPN_UNQUOTABLE_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x000800)
-#define BRK_UNQUOTABLE_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x000800)
-#define IS_END_XML_TOKEN_CHAR( _c) is_ag_char_map_char((char)( _c), 0x001500)
-#define SPN_END_XML_TOKEN_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x001500)
-#define BRK_END_XML_TOKEN_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x001500)
-#define IS_GRAPHIC_CHAR( _c) is_ag_char_map_char((char)( _c), 0x002000)
-#define SPN_GRAPHIC_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x002000)
-#define BRK_GRAPHIC_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x002000)
-#define IS_PLUS_N_SPACE_CHAR( _c) is_ag_char_map_char((char)( _c), 0x004500)
-#define SPN_PLUS_N_SPACE_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x004500)
-#define BRK_PLUS_N_SPACE_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x004500)
-#define IS_PUNCTUATION_CHAR( _c) is_ag_char_map_char((char)( _c), 0x008000)
-#define SPN_PUNCTUATION_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x008000)
-#define BRK_PUNCTUATION_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x008000)
-#define IS_SUFFIX_CHAR( _c) is_ag_char_map_char((char)( _c), 0x01000F)
-#define SPN_SUFFIX_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x01000F)
-#define BRK_SUFFIX_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x01000F)
-#define IS_SUFFIX_FMT_CHAR( _c) is_ag_char_map_char((char)( _c), 0x03000F)
-#define SPN_SUFFIX_FMT_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x03000F)
-#define BRK_SUFFIX_FMT_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x03000F)
-#define IS_FALSE_TYPE_CHAR( _c) is_ag_char_map_char((char)( _c), 0x040000)
-#define SPN_FALSE_TYPE_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x040000)
-#define BRK_FALSE_TYPE_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x040000)
-#define IS_FILE_NAME_CHAR( _c) is_ag_char_map_char((char)( _c), 0x09000F)
-#define SPN_FILE_NAME_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x09000F)
-#define BRK_FILE_NAME_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x09000F)
-#define IS_END_TOKEN_CHAR( _c) is_ag_char_map_char((char)( _c), 0x100500)
-#define SPN_END_TOKEN_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x100500)
-#define BRK_END_TOKEN_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x100500)
-#define IS_END_LIST_ENTRY_CHAR( _c) is_ag_char_map_char((char)( _c), 0x300500)
-#define SPN_END_LIST_ENTRY_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x300500)
-#define BRK_END_LIST_ENTRY_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x300500)
-#define IS_SET_SEPARATOR_CHAR( _c) is_ag_char_map_char((char)( _c), 0x700500)
-#define SPN_SET_SEPARATOR_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0x700500)
-#define BRK_SET_SEPARATOR_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0x700500)
+#define IS_NEWLINE_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0000001)
+#define SPN_NEWLINE_CHARS(_s) spn_ag_char_map_chars((char *)_s, 0)
+#define BRK_NEWLINE_CHARS(_s) brk_ag_char_map_chars((char *)_s, 0)
+#define SPN_NEWLINE_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 0)
+#define BRK_NEWLINE_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 0)
+#define IS_NUL_BYTE_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0000002)
+#define SPN_NUL_BYTE_CHARS(_s) spn_ag_char_map_chars((char *)_s, 1)
+#define BRK_NUL_BYTE_CHARS(_s) brk_ag_char_map_chars((char *)_s, 1)
+#define SPN_NUL_BYTE_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 1)
+#define BRK_NUL_BYTE_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 1)
+#define IS_DIR_SEP_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0000004)
+#define SPN_DIR_SEP_CHARS(_s) spn_ag_char_map_chars((char *)_s, 2)
+#define BRK_DIR_SEP_CHARS(_s) brk_ag_char_map_chars((char *)_s, 2)
+#define SPN_DIR_SEP_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 2)
+#define BRK_DIR_SEP_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 2)
+#define IS_PERCENT_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0000008)
+#define SPN_PERCENT_CHARS(_s) spn_ag_char_map_chars((char *)_s, 3)
+#define BRK_PERCENT_CHARS(_s) brk_ag_char_map_chars((char *)_s, 3)
+#define SPN_PERCENT_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 3)
+#define BRK_PERCENT_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 3)
+#define IS_COMMA_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0000010)
+#define SPN_COMMA_CHARS(_s) spn_ag_char_map_chars((char *)_s, 4)
+#define BRK_COMMA_CHARS(_s) brk_ag_char_map_chars((char *)_s, 4)
+#define SPN_COMMA_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 4)
+#define BRK_COMMA_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 4)
+#define IS_COLON_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0000020)
+#define SPN_COLON_CHARS(_s) spn_ag_char_map_chars((char *)_s, 5)
+#define BRK_COLON_CHARS(_s) brk_ag_char_map_chars((char *)_s, 5)
+#define SPN_COLON_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 5)
+#define BRK_COLON_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 5)
+#define IS_UNDERSCORE_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0000040)
+#define SPN_UNDERSCORE_CHARS(_s) spn_ag_char_map_chars((char *)_s, 6)
+#define BRK_UNDERSCORE_CHARS(_s) brk_ag_char_map_chars((char *)_s, 6)
+#define SPN_UNDERSCORE_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 6)
+#define BRK_UNDERSCORE_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 6)
+#define IS_PLUS_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0000080)
+#define SPN_PLUS_CHARS(_s) spn_ag_char_map_chars((char *)_s, 7)
+#define BRK_PLUS_CHARS(_s) brk_ag_char_map_chars((char *)_s, 7)
+#define SPN_PLUS_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 7)
+#define BRK_PLUS_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 7)
+#define IS_DOLLAR_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0000100)
+#define SPN_DOLLAR_CHARS(_s) spn_ag_char_map_chars((char *)_s, 8)
+#define BRK_DOLLAR_CHARS(_s) brk_ag_char_map_chars((char *)_s, 8)
+#define SPN_DOLLAR_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 8)
+#define BRK_DOLLAR_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 8)
+#define IS_HORIZ_WHITE_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0000200)
+#define SPN_HORIZ_WHITE_CHARS(_s) spn_ag_char_map_chars((char *)_s, 9)
+#define BRK_HORIZ_WHITE_CHARS(_s) brk_ag_char_map_chars((char *)_s, 9)
+#define SPN_HORIZ_WHITE_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 9)
+#define BRK_HORIZ_WHITE_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 9)
+#define IS_ALT_WHITE_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0000400)
+#define SPN_ALT_WHITE_CHARS(_s) spn_ag_char_map_chars((char *)_s, 10)
+#define BRK_ALT_WHITE_CHARS(_s) brk_ag_char_map_chars((char *)_s, 10)
+#define SPN_ALT_WHITE_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 10)
+#define BRK_ALT_WHITE_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 10)
+#define IS_WHITESPACE_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0000601)
+#define SPN_WHITESPACE_CHARS(_s) spn_ag_char_map_chars((char *)_s, 11)
+#define BRK_WHITESPACE_CHARS(_s) brk_ag_char_map_chars((char *)_s, 11)
+#define SPN_WHITESPACE_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 11)
+#define BRK_WHITESPACE_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 11)
+#define IS_NON_NL_WHITE_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0000600)
+#define SPN_NON_NL_WHITE_CHARS(_s) spn_ag_char_map_chars((char *)_s, 12)
+#define BRK_NON_NL_WHITE_CHARS(_s) brk_ag_char_map_chars((char *)_s, 12)
+#define SPN_NON_NL_WHITE_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 12)
+#define BRK_NON_NL_WHITE_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 12)
+#define IS_QUOTE_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0000800)
+#define SPN_QUOTE_CHARS(_s) spn_ag_char_map_chars((char *)_s, 13)
+#define BRK_QUOTE_CHARS(_s) brk_ag_char_map_chars((char *)_s, 13)
+#define SPN_QUOTE_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 13)
+#define BRK_QUOTE_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 13)
+#define IS_PARENTHESES_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0001000)
+#define SPN_PARENTHESES_CHARS(_s) spn_ag_char_map_chars((char *)_s, 14)
+#define BRK_PARENTHESES_CHARS(_s) brk_ag_char_map_chars((char *)_s, 14)
+#define SPN_PARENTHESES_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 14)
+#define BRK_PARENTHESES_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 14)
+#define IS_GRAPHIC_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0002000)
+#define SPN_GRAPHIC_CHARS(_s) spn_ag_char_map_chars((char *)_s, 15)
+#define BRK_GRAPHIC_CHARS(_s) brk_ag_char_map_chars((char *)_s, 15)
+#define SPN_GRAPHIC_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 15)
+#define BRK_GRAPHIC_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 15)
+#define IS_INVERSION_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0004000)
+#define SPN_INVERSION_CHARS(_s) spn_ag_char_map_chars((char *)_s, 16)
+#define BRK_INVERSION_CHARS(_s) brk_ag_char_map_chars((char *)_s, 16)
+#define SPN_INVERSION_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 16)
+#define BRK_INVERSION_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 16)
+#define IS_OCT_DIGIT_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0008000)
+#define SPN_OCT_DIGIT_CHARS(_s) spn_ag_char_map_chars((char *)_s, 17)
+#define BRK_OCT_DIGIT_CHARS(_s) brk_ag_char_map_chars((char *)_s, 17)
+#define SPN_OCT_DIGIT_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 17)
+#define BRK_OCT_DIGIT_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 17)
+#define IS_DEC_DIGIT_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0018000)
+#define SPN_DEC_DIGIT_CHARS(_s) spn_ag_char_map_chars((char *)_s, 18)
+#define BRK_DEC_DIGIT_CHARS(_s) brk_ag_char_map_chars((char *)_s, 18)
+#define SPN_DEC_DIGIT_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 18)
+#define BRK_DEC_DIGIT_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 18)
+#define IS_HEX_DIGIT_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0038000)
+#define SPN_HEX_DIGIT_CHARS(_s) spn_ag_char_map_chars((char *)_s, 19)
+#define BRK_HEX_DIGIT_CHARS(_s) brk_ag_char_map_chars((char *)_s, 19)
+#define SPN_HEX_DIGIT_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 19)
+#define BRK_HEX_DIGIT_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 19)
+#define IS_LOWER_CASE_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0040000)
+#define SPN_LOWER_CASE_CHARS(_s) spn_ag_char_map_chars((char *)_s, 20)
+#define BRK_LOWER_CASE_CHARS(_s) brk_ag_char_map_chars((char *)_s, 20)
+#define SPN_LOWER_CASE_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 20)
+#define BRK_LOWER_CASE_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 20)
+#define IS_UPPER_CASE_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0080000)
+#define SPN_UPPER_CASE_CHARS(_s) spn_ag_char_map_chars((char *)_s, 21)
+#define BRK_UPPER_CASE_CHARS(_s) brk_ag_char_map_chars((char *)_s, 21)
+#define SPN_UPPER_CASE_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 21)
+#define BRK_UPPER_CASE_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 21)
+#define IS_ALPHABETIC_CHAR( _c) is_ag_char_map_char((char)( _c), 0x00C0000)
+#define SPN_ALPHABETIC_CHARS(_s) spn_ag_char_map_chars((char *)_s, 22)
+#define BRK_ALPHABETIC_CHARS(_s) brk_ag_char_map_chars((char *)_s, 22)
+#define SPN_ALPHABETIC_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 22)
+#define BRK_ALPHABETIC_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 22)
+#define IS_ALPHANUMERIC_CHAR( _c) is_ag_char_map_char((char)( _c), 0x00D8000)
+#define SPN_ALPHANUMERIC_CHARS(_s) spn_ag_char_map_chars((char *)_s, 23)
+#define BRK_ALPHANUMERIC_CHARS(_s) brk_ag_char_map_chars((char *)_s, 23)
+#define SPN_ALPHANUMERIC_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 23)
+#define BRK_ALPHANUMERIC_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 23)
+#define IS_VAR_FIRST_CHAR( _c) is_ag_char_map_char((char)( _c), 0x00C0040)
+#define SPN_VAR_FIRST_CHARS(_s) spn_ag_char_map_chars((char *)_s, 24)
+#define BRK_VAR_FIRST_CHARS(_s) brk_ag_char_map_chars((char *)_s, 24)
+#define SPN_VAR_FIRST_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 24)
+#define BRK_VAR_FIRST_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 24)
+#define IS_VARIABLE_NAME_CHAR( _c) is_ag_char_map_char((char)( _c), 0x00D8040)
+#define SPN_VARIABLE_NAME_CHARS(_s) spn_ag_char_map_chars((char *)_s, 25)
+#define BRK_VARIABLE_NAME_CHARS(_s) brk_ag_char_map_chars((char *)_s, 25)
+#define SPN_VARIABLE_NAME_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 25)
+#define BRK_VARIABLE_NAME_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 25)
+#define IS_OPTION_NAME_CHAR( _c) is_ag_char_map_char((char)( _c), 0x01D8040)
+#define SPN_OPTION_NAME_CHARS(_s) spn_ag_char_map_chars((char *)_s, 26)
+#define BRK_OPTION_NAME_CHARS(_s) brk_ag_char_map_chars((char *)_s, 26)
+#define SPN_OPTION_NAME_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 26)
+#define BRK_OPTION_NAME_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 26)
+#define IS_VALUE_NAME_CHAR( _c) is_ag_char_map_char((char)( _c), 0x01D8060)
+#define SPN_VALUE_NAME_CHARS(_s) spn_ag_char_map_chars((char *)_s, 27)
+#define BRK_VALUE_NAME_CHARS(_s) brk_ag_char_map_chars((char *)_s, 27)
+#define SPN_VALUE_NAME_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 27)
+#define BRK_VALUE_NAME_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 27)
+#define IS_NAME_SEP_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0200000)
+#define SPN_NAME_SEP_CHARS(_s) spn_ag_char_map_chars((char *)_s, 28)
+#define BRK_NAME_SEP_CHARS(_s) brk_ag_char_map_chars((char *)_s, 28)
+#define SPN_NAME_SEP_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 28)
+#define BRK_NAME_SEP_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 28)
+#define IS_COMPOUND_NAME_CHAR( _c) is_ag_char_map_char((char)( _c), 0x03D8260)
+#define SPN_COMPOUND_NAME_CHARS(_s) spn_ag_char_map_chars((char *)_s, 29)
+#define BRK_COMPOUND_NAME_CHARS(_s) brk_ag_char_map_chars((char *)_s, 29)
+#define SPN_COMPOUND_NAME_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 29)
+#define BRK_COMPOUND_NAME_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 29)
+#define IS_SCHEME_NOTE_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0001800)
+#define SPN_SCHEME_NOTE_CHARS(_s) spn_ag_char_map_chars((char *)_s, 30)
+#define BRK_SCHEME_NOTE_CHARS(_s) brk_ag_char_map_chars((char *)_s, 30)
+#define SPN_SCHEME_NOTE_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 30)
+#define BRK_SCHEME_NOTE_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 30)
+#define IS_UNQUOTABLE_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0400000)
+#define SPN_UNQUOTABLE_CHARS(_s) spn_ag_char_map_chars((char *)_s, 31)
+#define BRK_UNQUOTABLE_CHARS(_s) brk_ag_char_map_chars((char *)_s, 31)
+#define SPN_UNQUOTABLE_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 31)
+#define BRK_UNQUOTABLE_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 31)
+#define IS_END_XML_TOKEN_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0800601)
+#define SPN_END_XML_TOKEN_CHARS(_s) spn_ag_char_map_chars((char *)_s, 32)
+#define BRK_END_XML_TOKEN_CHARS(_s) brk_ag_char_map_chars((char *)_s, 32)
+#define SPN_END_XML_TOKEN_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 32)
+#define BRK_END_XML_TOKEN_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 32)
+#define IS_PLUS_N_SPACE_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0000681)
+#define SPN_PLUS_N_SPACE_CHARS(_s) spn_ag_char_map_chars((char *)_s, 33)
+#define BRK_PLUS_N_SPACE_CHARS(_s) brk_ag_char_map_chars((char *)_s, 33)
+#define SPN_PLUS_N_SPACE_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 33)
+#define BRK_PLUS_N_SPACE_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 33)
+#define IS_PUNCTUATION_CHAR( _c) is_ag_char_map_char((char)( _c), 0x1000000)
+#define SPN_PUNCTUATION_CHARS(_s) spn_ag_char_map_chars((char *)_s, 34)
+#define BRK_PUNCTUATION_CHARS(_s) brk_ag_char_map_chars((char *)_s, 34)
+#define SPN_PUNCTUATION_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 34)
+#define BRK_PUNCTUATION_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 34)
+#define IS_SUFFIX_CHAR( _c) is_ag_char_map_char((char)( _c), 0x20D8000)
+#define SPN_SUFFIX_CHARS(_s) spn_ag_char_map_chars((char *)_s, 35)
+#define BRK_SUFFIX_CHARS(_s) brk_ag_char_map_chars((char *)_s, 35)
+#define SPN_SUFFIX_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 35)
+#define BRK_SUFFIX_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 35)
+#define IS_SUFFIX_FMT_CHAR( _c) is_ag_char_map_char((char)( _c), 0x20D800C)
+#define SPN_SUFFIX_FMT_CHARS(_s) spn_ag_char_map_chars((char *)_s, 36)
+#define BRK_SUFFIX_FMT_CHARS(_s) brk_ag_char_map_chars((char *)_s, 36)
+#define SPN_SUFFIX_FMT_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 36)
+#define BRK_SUFFIX_FMT_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 36)
+#define IS_FALSE_TYPE_CHAR( _c) is_ag_char_map_char((char)( _c), 0x4000002)
+#define SPN_FALSE_TYPE_CHARS(_s) spn_ag_char_map_chars((char *)_s, 37)
+#define BRK_FALSE_TYPE_CHARS(_s) brk_ag_char_map_chars((char *)_s, 37)
+#define SPN_FALSE_TYPE_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 37)
+#define BRK_FALSE_TYPE_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 37)
+#define IS_FILE_NAME_CHAR( _c) is_ag_char_map_char((char)( _c), 0x20D8004)
+#define SPN_FILE_NAME_CHARS(_s) spn_ag_char_map_chars((char *)_s, 38)
+#define BRK_FILE_NAME_CHARS(_s) brk_ag_char_map_chars((char *)_s, 38)
+#define SPN_FILE_NAME_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 38)
+#define BRK_FILE_NAME_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 38)
+#define IS_END_TOKEN_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0000603)
+#define SPN_END_TOKEN_CHARS(_s) spn_ag_char_map_chars((char *)_s, 39)
+#define BRK_END_TOKEN_CHARS(_s) brk_ag_char_map_chars((char *)_s, 39)
+#define SPN_END_TOKEN_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 39)
+#define BRK_END_TOKEN_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 39)
+#define IS_END_LIST_ENTRY_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0000613)
+#define SPN_END_LIST_ENTRY_CHARS(_s) spn_ag_char_map_chars((char *)_s, 40)
+#define BRK_END_LIST_ENTRY_CHARS(_s) brk_ag_char_map_chars((char *)_s, 40)
+#define SPN_END_LIST_ENTRY_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 40)
+#define BRK_END_LIST_ENTRY_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 40)
+#define IS_SET_SEPARATOR_CHAR( _c) is_ag_char_map_char((char)( _c), 0x8000613)
+#define SPN_SET_SEPARATOR_CHARS(_s) spn_ag_char_map_chars((char *)_s, 41)
+#define BRK_SET_SEPARATOR_CHARS(_s) brk_ag_char_map_chars((char *)_s, 41)
+#define SPN_SET_SEPARATOR_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 41)
+#define BRK_SET_SEPARATOR_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 41)
+#define IS_SIGNED_NUMBER_CHAR( _c) is_ag_char_map_char((char)( _c), 0x001C000)
+#define SPN_SIGNED_NUMBER_CHARS(_s) spn_ag_char_map_chars((char *)_s, 42)
+#define BRK_SIGNED_NUMBER_CHARS(_s) brk_ag_char_map_chars((char *)_s, 42)
+#define SPN_SIGNED_NUMBER_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 42)
+#define BRK_SIGNED_NUMBER_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 42)
+#define IS_MAKE_SCRIPT_CHAR( _c) is_ag_char_map_char((char)( _c), 0x0000101)
+#define SPN_MAKE_SCRIPT_CHARS(_s) spn_ag_char_map_chars((char *)_s, 43)
+#define BRK_MAKE_SCRIPT_CHARS(_s) brk_ag_char_map_chars((char *)_s, 43)
+#define SPN_MAKE_SCRIPT_BACK(s,e) spn_ag_char_map_back((char *)s, (char *)e, 43)
+#define BRK_MAKE_SCRIPT_BACK(s,e) brk_ag_char_map_back((char *)s, (char *)e, 43)
static ag_char_map_mask_t const ag_char_map_table[128] = {
- /*NUL*/ 0x140000, /*x01*/ 0x000000, /*x02*/ 0x000000, /*x03*/ 0x000000,
- /*x04*/ 0x000000, /*x05*/ 0x000000, /*x06*/ 0x000000, /*BEL*/ 0x000000,
- /* BS*/ 0x000400, /* HT*/ 0x000100, /* NL*/ 0x000400, /* VT*/ 0x000400,
- /* FF*/ 0x000400, /* CR*/ 0x000400, /*x0E*/ 0x000000, /*x0F*/ 0x000000,
- /*x10*/ 0x000000, /*x11*/ 0x000000, /*x12*/ 0x000000, /*x13*/ 0x000000,
- /*x14*/ 0x000000, /*x15*/ 0x000000, /*x16*/ 0x000000, /*x17*/ 0x000000,
- /*x18*/ 0x000000, /*x19*/ 0x000000, /*x1A*/ 0x000000, /*ESC*/ 0x000000,
- /*x1C*/ 0x000000, /*x1D*/ 0x000000, /*x1E*/ 0x000000, /*x1F*/ 0x000000,
- /* */ 0x000100, /* ! */ 0x00A800, /* " */ 0x00A000, /* # */ 0x00A000,
- /* $ */ 0x00A800, /* % */ 0x02A800, /* & */ 0x00A800, /* ' */ 0x00A000,
- /* ( */ 0x00A000, /* ) */ 0x00A000, /* * */ 0x00A000, /* + */ 0x40E800,
- /* , */ 0x20A000, /* - */ 0x01A840, /* . */ 0x01AA00, /* / */ 0x0AB800,
- /* 0 */ 0x042804, /* 1 */ 0x002804, /* 2 */ 0x002804, /* 3 */ 0x002804,
- /* 4 */ 0x002804, /* 5 */ 0x002804, /* 6 */ 0x002804, /* 7 */ 0x002804,
- /* 8 */ 0x002808, /* 9 */ 0x002808, /* : */ 0x00A880, /* ; */ 0x00A000,
- /* < */ 0x00A000, /* = */ 0x00A000, /* > */ 0x00B000, /* ? */ 0x00A000,
- /* @ */ 0x00A800, /* A */ 0x002812, /* B */ 0x002812, /* C */ 0x002812,
- /* D */ 0x002812, /* E */ 0x002812, /* F */ 0x042812, /* G */ 0x002802,
- /* H */ 0x002802, /* I */ 0x002802, /* J */ 0x002802, /* K */ 0x002802,
- /* L */ 0x002802, /* M */ 0x002802, /* N */ 0x042802, /* O */ 0x002802,
- /* P */ 0x002802, /* Q */ 0x002802, /* R */ 0x002802, /* S */ 0x002802,
- /* T */ 0x002802, /* U */ 0x002802, /* V */ 0x002802, /* W */ 0x002802,
- /* X */ 0x002802, /* Y */ 0x002802, /* Z */ 0x002802, /* [ */ 0x00A200,
- /* \ */ 0x00A000, /* ] */ 0x00A200, /* ^ */ 0x00A840, /* _ */ 0x012820,
- /* ` */ 0x00A000, /* a */ 0x002811, /* b */ 0x002811, /* c */ 0x002811,
- /* d */ 0x002811, /* e */ 0x002811, /* f */ 0x042811, /* g */ 0x002801,
- /* h */ 0x002801, /* i */ 0x002801, /* j */ 0x002801, /* k */ 0x002801,
- /* l */ 0x002801, /* m */ 0x002801, /* n */ 0x042801, /* o */ 0x002801,
- /* p */ 0x002801, /* q */ 0x002801, /* r */ 0x002801, /* s */ 0x002801,
- /* t */ 0x002801, /* u */ 0x002801, /* v */ 0x002801, /* w */ 0x002801,
- /* x */ 0x002801, /* y */ 0x002801, /* z */ 0x002801, /* { */ 0x00A000,
- /* | */ 0x40A800, /* } */ 0x00A000, /* ~ */ 0x00A800, /*x7F*/ 0x000000
+ /*NUL*/ 0x0000002, /*x01*/ 0x0000000, /*x02*/ 0x0000000, /*x03*/ 0x0000000,
+ /*x04*/ 0x0000000, /*x05*/ 0x0000000, /*x06*/ 0x0000000, /*BEL*/ 0x0000000,
+ /* BS*/ 0x0000400, /* HT*/ 0x0000200, /* NL*/ 0x0000001, /* VT*/ 0x0000400,
+ /* FF*/ 0x0000400, /* CR*/ 0x0000400, /*x0E*/ 0x0000000, /*x0F*/ 0x0000000,
+ /*x10*/ 0x0000000, /*x11*/ 0x0000000, /*x12*/ 0x0000000, /*x13*/ 0x0000000,
+ /*x14*/ 0x0000000, /*x15*/ 0x0000000, /*x16*/ 0x0000000, /*x17*/ 0x0000000,
+ /*x18*/ 0x0000000, /*x19*/ 0x0000000, /*x1A*/ 0x0000000, /*ESC*/ 0x0000000,
+ /*x1C*/ 0x0000000, /*x1D*/ 0x0000000, /*x1E*/ 0x0000000, /*x1F*/ 0x0000000,
+ /* */ 0x0000200, /* ! */ 0x1402000, /* " */ 0x1002800, /* # */ 0x1002000,
+ /* $ */ 0x1402100, /* % */ 0x1402008, /* & */ 0x1402000, /* ' */ 0x1002800,
+ /* ( */ 0x1003000, /* ) */ 0x1003000, /* * */ 0x1002000, /* + */ 0x9402080,
+ /* , */ 0x1002010, /* - */ 0x3506000, /* . */ 0x3602000, /* / */ 0x1C02004,
+ /* 0 */ 0x440A000, /* 1 */ 0x040A000, /* 2 */ 0x040A000, /* 3 */ 0x040A000,
+ /* 4 */ 0x040A000, /* 5 */ 0x040A000, /* 6 */ 0x040A000, /* 7 */ 0x040A000,
+ /* 8 */ 0x0412000, /* 9 */ 0x0412000, /* : */ 0x1402020, /* ; */ 0x1002000,
+ /* < */ 0x1002000, /* = */ 0x1002000, /* > */ 0x1802000, /* ? */ 0x1002000,
+ /* @ */ 0x1402000, /* A */ 0x04A2000, /* B */ 0x04A2000, /* C */ 0x04A2000,
+ /* D */ 0x04A2000, /* E */ 0x04A2000, /* F */ 0x44A2000, /* G */ 0x0482000,
+ /* H */ 0x0482000, /* I */ 0x0482000, /* J */ 0x0482000, /* K */ 0x0482000,
+ /* L */ 0x0482000, /* M */ 0x0482000, /* N */ 0x4482000, /* O */ 0x0482000,
+ /* P */ 0x0482000, /* Q */ 0x0482000, /* R */ 0x0482000, /* S */ 0x0482000,
+ /* T */ 0x0482000, /* U */ 0x0482000, /* V */ 0x0482000, /* W */ 0x0482000,
+ /* X */ 0x0482000, /* Y */ 0x0482000, /* Z */ 0x0482000, /* [ */ 0x1202000,
+ /* \ */ 0x1002004, /* ] */ 0x1202000, /* ^ */ 0x1502000, /* _ */ 0x2402040,
+ /* ` */ 0x1002000, /* a */ 0x0462000, /* b */ 0x0462000, /* c */ 0x0462000,
+ /* d */ 0x0462000, /* e */ 0x0462000, /* f */ 0x4462000, /* g */ 0x0442000,
+ /* h */ 0x0442000, /* i */ 0x0442000, /* j */ 0x0442000, /* k */ 0x0442000,
+ /* l */ 0x0442000, /* m */ 0x0442000, /* n */ 0x4442000, /* o */ 0x0442000,
+ /* p */ 0x0442000, /* q */ 0x0442000, /* r */ 0x0442000, /* s */ 0x0442000,
+ /* t */ 0x0442000, /* u */ 0x0442000, /* v */ 0x0442000, /* w */ 0x0442000,
+ /* x */ 0x0442000, /* y */ 0x0442000, /* z */ 0x0442000, /* { */ 0x1002000,
+ /* | */ 0x9402000, /* } */ 0x1002000, /* ~ */ 0x1406000, /*x7F*/ 0x0000000
+};
+
+#include <stdlib.h>
+#include <string.h>
+
+static unsigned char const * ag_char_map_spanners[44];
+/**
+ * Character category masks. Some categories may have multiple bits,
+ * if their definition incorporates other character categories.
+ * This mask array is only used by calc_ag_char_map_spanners().
+ */
+static ag_char_map_mask_t const ag_char_map_masks[44] = {
+ 0x0000001, /* NEWLINE */
+ 0x0000002, /* NUL_BYTE */
+ 0x0000004, /* DIR_SEP */
+ 0x0000008, /* PERCENT */
+ 0x0000010, /* COMMA */
+ 0x0000020, /* COLON */
+ 0x0000040, /* UNDERSCORE */
+ 0x0000080, /* PLUS */
+ 0x0000100, /* DOLLAR */
+ 0x0000200, /* HORIZ_WHITE */
+ 0x0000400, /* ALT_WHITE */
+ 0x0000601, /* WHITESPACE */
+ 0x0000600, /* NON_NL_WHITE */
+ 0x0000800, /* QUOTE */
+ 0x0001000, /* PARENTHESES */
+ 0x0002000, /* GRAPHIC */
+ 0x0004000, /* INVERSION */
+ 0x0008000, /* OCT_DIGIT */
+ 0x0018000, /* DEC_DIGIT */
+ 0x0038000, /* HEX_DIGIT */
+ 0x0040000, /* LOWER_CASE */
+ 0x0080000, /* UPPER_CASE */
+ 0x00C0000, /* ALPHABETIC */
+ 0x00D8000, /* ALPHANUMERIC */
+ 0x00C0040, /* VAR_FIRST */
+ 0x00D8040, /* VARIABLE_NAME */
+ 0x01D8040, /* OPTION_NAME */
+ 0x01D8060, /* VALUE_NAME */
+ 0x0200000, /* NAME_SEP */
+ 0x03D8260, /* COMPOUND_NAME */
+ 0x0001800, /* SCHEME_NOTE */
+ 0x0400000, /* UNQUOTABLE */
+ 0x0800601, /* END_XML_TOKEN */
+ 0x0000681, /* PLUS_N_SPACE */
+ 0x1000000, /* PUNCTUATION */
+ 0x20D8000, /* SUFFIX */
+ 0x20D800C, /* SUFFIX_FMT */
+ 0x4000002, /* FALSE_TYPE */
+ 0x20D8004, /* FILE_NAME */
+ 0x0000603, /* END_TOKEN */
+ 0x0000613, /* END_LIST_ENTRY */
+ 0x8000613, /* SET_SEPARATOR */
+ 0x001C000, /* SIGNED_NUMBER */
+ 0x0000101, /* MAKE_SCRIPT */
};
+
+#define lock_ag_char_map_spanners()
+#define unlock_ag_char_map_spanners()
+
+static unsigned char const *
+calc_ag_char_map_spanners(unsigned int mask_ix)
+{
+ lock_ag_char_map_spanners();
+ if (ag_char_map_spanners[mask_ix] == NULL) {
+ int ix = 1;
+ ag_char_map_mask_t mask = ag_char_map_masks[mask_ix];
+ unsigned char * res = malloc(256 /* 1 << NBBY */);
+ memset(res, 0, 256);
+ for (; ix < 128; ix++)
+ if (ag_char_map_table[ix] & mask)
+ res[ix] = 1;
+ ag_char_map_spanners[mask_ix] = res;
+ }
+ unlock_ag_char_map_spanners();
+ return ag_char_map_spanners[mask_ix];
+}
+#define ag_char_map_masks POISONED_ag_char_map_masks
+
static inline int
is_ag_char_map_char(char ch, ag_char_map_mask_t mask)
{
@@ -207,16 +448,44 @@ is_ag_char_map_char(char ch, ag_char_map_mask_t mask)
}
static inline char *
-spn_ag_char_map_chars(char * p, ag_char_map_mask_t mask)
+spn_ag_char_map_chars(char * p, unsigned int mask_ix)
{
- while ((*p != '\0') && is_ag_char_map_char(*p, mask)) p++;
+ unsigned char const * v = ag_char_map_spanners[mask_ix];
+ if (v == NULL)
+ v = calc_ag_char_map_spanners(mask_ix);
+ while (v[(unsigned)*p]) p++;
return p;
}
static inline char *
-brk_ag_char_map_chars(char * p, ag_char_map_mask_t mask)
+brk_ag_char_map_chars(char * p, unsigned int mask_ix)
{
- while ((*p != '\0') && (! is_ag_char_map_char(*p, mask))) p++;
+ unsigned char const * v = ag_char_map_spanners[mask_ix];
+ if (v == NULL)
+ v = calc_ag_char_map_spanners(mask_ix);
+ while ((*p != '\0') && (! v[(unsigned)*p])) p++;
return p;
}
+
+static inline char *
+spn_ag_char_map_back(char * s, char * e, unsigned int mask_ix)
+{
+ unsigned char const * v = ag_char_map_spanners[mask_ix];
+ if (v == NULL)
+ v = calc_ag_char_map_spanners(mask_ix);
+ if (s >= e) e = s + strlen(s);
+ while ((e > s) && v[(unsigned)e[-1]]) e--;
+ return e;
+}
+
+static inline char *
+brk_ag_char_map_back(char * s, char * e, unsigned int mask_ix)
+{
+ unsigned char const * v = ag_char_map_spanners[mask_ix];
+ if (v == NULL)
+ v = calc_ag_char_map_spanners(mask_ix);
+ if (s == e) e += strlen(e);
+ while ((e > s) && (! v[(unsigned)e[-1]])) e--;
+ return e;
+}
#endif /* AG_CHAR_MAP_H_GUARD */
diff --git a/src/libopts/ao-strs.c b/src/libopts/ao-strs.c
index d0f4d1cb2c..30bcbe53fa 100644
--- a/src/libopts/ao-strs.c
+++ b/src/libopts/ao-strs.c
@@ -2,7 +2,7 @@
*
* DO NOT EDIT THIS FILE (ao-strs.c)
*
- * It has been AutoGen-ed February 26, 2012 at 11:08:40 AM by AutoGen 5.15pre14
+ * It has been AutoGen-ed May 6, 2012 at 04:20:58 PM by AutoGen 5.16pre36
* From the definitions ao-strs.def
* and the template file strings
*
diff --git a/src/libopts/ao-strs.h b/src/libopts/ao-strs.h
index f14cc2560e..30bbc3bfc5 100644
--- a/src/libopts/ao-strs.h
+++ b/src/libopts/ao-strs.h
@@ -2,7 +2,7 @@
*
* DO NOT EDIT THIS FILE (ao-strs.h)
*
- * It has been AutoGen-ed February 26, 2012 at 11:08:40 AM by AutoGen 5.15pre14
+ * It has been AutoGen-ed May 6, 2012 at 04:20:58 PM by AutoGen 5.16pre36
* From the definitions ao-strs.def
* and the template file strings
*
diff --git a/src/libopts/autoopts.c b/src/libopts/autoopts.c
index df9e3cb927..1eff7002fa 100644
--- a/src/libopts/autoopts.c
+++ b/src/libopts/autoopts.c
@@ -2,7 +2,7 @@
/**
* \file autoopts.c
*
- * Time-stamp: "2012-01-29 09:58:30 bkorb"
+ * Time-stamp: "2012-03-04 19:44:56 bkorb"
*
* This file contains all of the routines that must be linked into
* an executable to use the generated option processing. The optional
@@ -37,7 +37,7 @@
static char const zNil[] = "";
static arg_types_t argTypes = { NULL };
static char line_fmt_buf[32];
-static ag_bool displayEnum = AG_FALSE;
+static bool displayEnum = false;
static char const pkgdatadir_default[] = PKGDATADIR;
static char const * program_pkgdatadir = pkgdatadir_default;
static tOptionLoadMode option_load_mode = OPTION_LOAD_UNCOOKED;
@@ -50,7 +50,7 @@ static tSuccess
next_opt_arg_must(tOptions * pOpts, tOptState* pOptState);
static tSuccess
-next_opt_arg_may(tOptions * pOpts, tOptState* pOptState);
+next_opt_arg_may(tOptions * pOpts, tOptState * pOptState);
static tSuccess
next_opt_arg_none(tOptions * pOpts, tOptState* pOptState);
@@ -295,9 +295,18 @@ next_opt_arg_must(tOptions * pOpts, tOptState* pOptState)
return SUCCESS;
}
-
+/**
+ * Process an optional option argument. For short options, it looks at the
+ * character after the option character, or it consumes the next full argument.
+ * For long options, it looks for an '=' character attachment to the long
+ * option name before deciding to take the next command line argument.
+ *
+ * @param pOpts the option descriptor
+ * @param pOptState a structure for managing the current processing state
+ * @returns SUCCESS or does not return
+ */
static tSuccess
-next_opt_arg_may(tOptions * pOpts, tOptState* pOptState)
+next_opt_arg_may(tOptions * pOpts, tOptState * pOptState)
{
/*
* An option argument is optional.
diff --git a/src/libopts/autoopts.h b/src/libopts/autoopts.h
index 6c3fee767b..194ea5a839 100644
--- a/src/libopts/autoopts.h
+++ b/src/libopts/autoopts.h
@@ -2,7 +2,7 @@
/*
* \file autoopts.h
*
- * Time-stamp: "2012-02-12 09:04:40 bkorb"
+ * Time-stamp: "2012-03-04 19:05:01 bkorb"
*
* This file defines all the global structures and special values
* used in the automated option processing library.
@@ -31,9 +31,6 @@
#ifndef AUTOGEN_AUTOOPTS_H
#define AUTOGEN_AUTOOPTS_H
-#include "compat/compat.h"
-#include "ag-char-map.h"
-
#define AO_NAME_LIMIT 127
#define AO_NAME_SIZE ((size_t)(AO_NAME_LIMIT + 1))
@@ -59,15 +56,19 @@
# define DIRCH '/'
#endif
+#define AO_EXIT_REQ_USAGE 64
#ifndef EX_NOINPUT
+ /**
+ * option state was requested from a file that cannot be loaded.
+ */
# define EX_NOINPUT 66
#endif
#ifndef EX_SOFTWARE
+ /**
+ * AutoOpts Software failure.
+ */
# define EX_SOFTWARE 70
#endif
-#ifndef EX_CONFIG
-# define EX_CONFIG 78
-#endif
#define NL '\n'
@@ -199,8 +200,6 @@ ao_realloc(void *p, size_t sz);
static char *
ao_strdup(char const *str);
-#define TAGMEM(m, t)
-
/*
* DO option handling?
*
diff --git a/src/libopts/autoopts/options.h b/src/libopts/autoopts/options.h
index 35d9aa79e2..356e7e9ff5 100644
--- a/src/libopts/autoopts/options.h
+++ b/src/libopts/autoopts/options.h
@@ -2,7 +2,7 @@
*
* DO NOT EDIT THIS FILE (options.h)
*
- * It has been AutoGen-ed February 26, 2012 at 11:08:44 AM by AutoGen 5.15pre14
+ * It has been AutoGen-ed May 6, 2012 at 04:21:03 PM by AutoGen 5.16pre36
* From the definitions funcs.def
* and the template file options_h
*
@@ -29,25 +29,46 @@
#include <sys/types.h>
#include <stdio.h>
-#if defined(HAVE_STDINT_H)
-# include <stdint.h>
-#elif defined(HAVE_INTTYPES_H)
-# include <inttypes.h>
-#endif /* HAVE_STDINT/INTTYPES_H */
-
-#if defined(HAVE_LIMITS_H)
-# include <limits.h>
-#elif defined(HAVE_SYS_LIMITS_H)
-# include <sys/limits.h>
-#endif /* HAVE_LIMITS/SYS_LIMITS_H */
-
-#if defined(HAVE_SYSEXITS_H)
-# include <sysexits.h>
-#endif /* HAVE_SYSEXITS_H */
+#ifndef COMPAT_H_GUARD
+/*
+ * This is needed for test compilations where the "compat.h"
+ * header is not usually available.
+ */
+# if defined(HAVE_STDINT_H)
+# include <stdint.h>
+# elif defined(HAVE_INTTYPES_H)
+# include <inttypes.h>
+# endif /* HAVE_STDINT/INTTYPES_H */
+
+# if defined(HAVE_LIMITS_H)
+# include <limits.h>
+# elif defined(HAVE_SYS_LIMITS_H)
+# include <sys/limits.h>
+# endif /* HAVE_LIMITS/SYS_LIMITS_H */
+
+# if defined(HAVE_SYSEXITS_H)
+# include <sysexits.h>
+# endif /* HAVE_SYSEXITS_H */
+
+# if defined(HAVE_STDBOOL_H)
+# include <stdbool.h>
+# else
+ typedef enum { false = 0, true = 1 } _Bool;
+# define bool _Bool
+
+ /* The other macros must be usable in preprocessor directives. */
+# define false 0
+# define true 1
+# endif /* HAVE_SYSEXITS_H */
+#endif /* COMPAT_H_GUARD */
// END-CONFIGURED-HEADERS
-#ifndef EX_USAGE
-# define EX_USAGE 64
-#endif
+
+/**
+ * Defined to normal value of EX_USAGE. Used to indicate that paged usage
+ * was requested. It is used to distinguish a --usage from a --help request.
+ * --usage is abbreviated and --help gives as much help as possible.
+ */
+#define AO_EXIT_REQ_USAGE 64
/*
* PUBLIC DEFINES
@@ -65,8 +86,8 @@
* See the relevant generated header file to determine which and what
* values for "opt_name" are available.
*/
-#define OPTIONS_STRUCT_VERSION 147459
-#define OPTIONS_VERSION_STRING "36:3:11"
+#define OPTIONS_STRUCT_VERSION 147460
+#define OPTIONS_VERSION_STRING "36:4:11"
#define OPTIONS_MINIMUM_VERSION 102400
#define OPTIONS_MIN_VER_STRING "25:0:0"
#define OPTIONS_VER_TO_NUM(_v, _r) (((_v) * 4096) + (_r))
@@ -302,7 +323,7 @@ typedef enum {
OPTPROC_NXLAT_OPT | OPTPROC_NXLAT_OPT_CFG \
/* 0x00030000U */ )
-#define STMTS(s) do { s; } while (0)
+#define STMTS(s) do { s; } while (false)
/*
* The following must be #defined instead of typedef-ed
@@ -534,7 +555,7 @@ CPLUSPLUS_OPENER
* The following routines may be coded into AutoOpts client code:
*/
-/* From: tokenize.c line 166
+/* From: tokenize.c line 164
*
* ao_string_tokenize - tokenize an input string
*
@@ -598,7 +619,7 @@ extern token_list_t* ao_string_tokenize(char const*);
extern const tOptionValue* configFileLoad(char const*);
-/* From: configfile.c line 1059
+/* From: configfile.c line 1066
*
* optionFileLoad - Load the locatable config files, in order
*
@@ -697,7 +718,7 @@ extern void optionFree(tOptions*);
extern const tOptionValue* optionGetValue(const tOptionValue*, char const*);
-/* From: load.c line 476
+/* From: load.c line 475
*
* optionLoadLine - process a string for an option name and value
*
@@ -740,7 +761,7 @@ extern void optionLoadLine(tOptions*, char const*);
extern const tOptionValue* optionNextValue(const tOptionValue*, const tOptionValue*);
-/* From: usage.c line 202
+/* From: usage.c line 201
*
* optionOnlyUsage - Print usage text for just the options
*
@@ -755,7 +776,7 @@ extern const tOptionValue* optionNextValue(const tOptionValue*, const tOptionVal
extern void optionOnlyUsage(tOptions*, int);
-/* From: autoopts.c line 598
+/* From: autoopts.c line 607
*
* optionProcess - this is the main option processing routine
*
@@ -849,7 +870,7 @@ extern void optionSaveFile(tOptions*);
extern void optionSaveState(tOptions*);
-/* From: nested.c line 562
+/* From: nested.c line 563
*
* optionUnloadNested - Deallocate the memory for a nested value
*
@@ -1028,6 +1049,8 @@ extern unsigned int ao_string_cook_escape_char(char const*, char*, unsigned int)
extern void genshelloptUsage(tOptions*, int);
+extern int optionAlias(tOptions*, tOptDesc*, unsigned int);
+
extern void optionBooleanVal(tOptions*, tOptDesc*);
extern uintptr_t optionEnumerationVal(tOptions*, tOptDesc*, char const * const *, unsigned int);
@@ -1038,7 +1061,7 @@ extern char const * optionKeywordName(tOptDesc*, unsigned int);
extern void optionLoadOpt(tOptions*, tOptDesc*);
-extern ag_bool optionMakePath(char*, int, char const*, char const*);
+extern bool optionMakePath(char*, int, char const*, char const*);
extern void optionNestedVal(tOptions*, tOptDesc*);
diff --git a/src/libopts/autoopts/project.h b/src/libopts/autoopts/project.h
index b01affbc19..c0df391bc1 100644
--- a/src/libopts/autoopts/project.h
+++ b/src/libopts/autoopts/project.h
@@ -3,6 +3,8 @@
#define AUTOGEN_PROJECT_H
#include "config.h"
+#include "compat/compat.h"
+#include "ag-char-map.h"
/*
* Procedure success codes
@@ -37,8 +39,6 @@ typedef int tSuccess;
# define STR(s) __STR(s)
#endif
-#define STRSIZE(s) (sizeof(s)-1)
-
#ifdef DEFINING
# define VALUE(s) = s
# define MODE
diff --git a/src/libopts/autoopts/usage-txt.h b/src/libopts/autoopts/usage-txt.h
index 7f9999aae1..3ed7f3b4f0 100644
--- a/src/libopts/autoopts/usage-txt.h
+++ b/src/libopts/autoopts/usage-txt.h
@@ -2,12 +2,12 @@
*
* DO NOT EDIT THIS FILE (usage-txt.h)
*
- * It has been AutoGen-ed February 26, 2012 at 11:08:42 AM by AutoGen 5.15pre14
+ * It has been AutoGen-ed May 6, 2012 at 04:21:00 PM by AutoGen 5.16pre36
* From the definitions usage-txt.def
* and the template file usage-txt.tpl
*
* This file handles all the bookkeeping required for tracking all the little
- * tiny strings used by the AutoOpts library. There are 144
+ * tiny strings used by the AutoOpts library. There are 145
* of them. This is not versioned because it is entirely internal to the
* library and accessed by client code only in a very well-controlled way:
* they may substitute translated strings using a procedure that steps through
@@ -50,7 +50,7 @@ typedef struct {
char* utpz_GnuTimeArg;
char* utpz_GnuNumArg;
char* utpz_GnuStrArg;
- cch_t* apz_str[ 137 ];
+ cch_t* apz_str[ 138 ];
} usage_text_t;
/*
@@ -202,11 +202,12 @@ extern usage_text_t option_usage_text;
#define zTabHypAnd (option_usage_text.apz_str[129])
#define zTabout (option_usage_text.apz_str[130])
#define zThreeSpaces (option_usage_text.apz_str[131])
-#define zTwoSpaces (option_usage_text.apz_str[132])
-#define zUpTo (option_usage_text.apz_str[133])
-#define zValidKeys (option_usage_text.apz_str[134])
-#define zVendOptsAre (option_usage_text.apz_str[135])
-#define zVendIntro (option_usage_text.apz_str[136])
+#define zTooLarge (option_usage_text.apz_str[132])
+#define zTwoSpaces (option_usage_text.apz_str[133])
+#define zUpTo (option_usage_text.apz_str[134])
+#define zValidKeys (option_usage_text.apz_str[135])
+#define zVendOptsAre (option_usage_text.apz_str[136])
+#define zVendIntro (option_usage_text.apz_str[137])
/*
* First, set up the strings. Some of these are writable. These are all in
@@ -221,7 +222,7 @@ extern usage_text_t option_usage_text;
static char eng_zGnuTimeArg[] = "=Tim";
static char eng_zGnuNumArg[] = "=num";
static char eng_zGnuStrArg[] = "=str";
-static char const usage_txt[4575] =
+static char const usage_txt[4631] =
/* 0 */ "malloc of %d bytes failed\n\0"
/* 27 */ "AutoOpts function called without option descriptor\n\0"
/* 79 */ "\tThis exceeds the compiled library version: \0"
@@ -242,141 +243,142 @@ static char const usage_txt[4575] =
/* 707 */ " %s%s\n\0"
/* 715 */ "%s: Command line arguments required\n\0"
/* 752 */ "%d %s%s options allowed\n\0"
-/* 777 */ "version and help options:\0"
-/* 803 */ "Error %d (%s) from the pipe(2) syscall\n\0"
-/* 843 */ "ERROR: version option argument '%c' invalid. Use:\n"
+/* 777 */ "version, usage and configuration options:\0"
+/* 819 */ "Error %d (%s) from the pipe(2) syscall\n\0"
+/* 859 */ "ERROR: version option argument '%c' invalid. Use:\n"
"\t'v' - version only\n"
"\t'c' - version and copyright\n"
"\t'n' - version and copyright notice\n\0"
-/* 980 */ "ERROR: %s option conflicts with the %s option\n\0"
-/* 1028 */ "%s(optionSaveState): error: cannot allocate %d bytes\n\0"
-/* 1082 */ "auto-options\0"
-/* 1095 */ "program\0"
-/* 1103 */ "\t\t\t\t- default option for unnamed options\n\0"
-/* 1145 */ "\t\t\t\t- disabled as --%s\n\0"
-/* 1169 */ "%s: The ``%s'' option has been disabled\0"
-/* 1209 */ " --- %-14s %s\n\0"
-/* 1224 */ "This option has been disabled\0"
-/* 1254 */ "\t\t\t\t- enabled by default\n\0"
-/* 1280 */ "-equivalence\0"
-/* 1293 */ "ERROR: only \0"
-/* 1307 */ " - examining environment variables named %s_*\n\0"
-/* 1354 */ " \0"
-/* 1360 */ "Options are specified by doubled hyphens and their name or by a single\n"
+/* 996 */ "ERROR: %s option conflicts with the %s option\n\0"
+/* 1044 */ "%s(optionSaveState): error: cannot allocate %d bytes\n\0"
+/* 1098 */ "auto-options\0"
+/* 1111 */ "program\0"
+/* 1119 */ "\t\t\t\t- default option for unnamed options\n\0"
+/* 1161 */ "\t\t\t\t- disabled as --%s\n\0"
+/* 1185 */ "%s: The ``%s'' option has been disabled\0"
+/* 1225 */ " --- %-14s %s\n\0"
+/* 1240 */ "This option has been disabled\0"
+/* 1270 */ "\t\t\t\t- enabled by default\n\0"
+/* 1296 */ "-equivalence\0"
+/* 1309 */ "ERROR: only \0"
+/* 1323 */ " - examining environment variables named %s_*\n\0"
+/* 1370 */ " \0"
+/* 1376 */ "Options are specified by doubled hyphens and their name or by a single\n"
"hyphen and the flag character.\n\0"
-/* 1463 */ "%%-%ds %%s\n\0"
-/* 1475 */ "fs error %d (%s) on fork - cannot obtain %s usage\n\0"
-/* 1526 */ "fs error %d (%s) on freopen\n\0"
-/* 1555 */ "File error %d (%s) opening %s for loading options\n\0"
-/* 1606 */ "fs error %d (%s) reading file %s\n\0"
-/* 1640 */ "fs error %d (%s) on %s %s for option %s\n\0"
-/* 1681 */ "stat-ing for directory\0"
-/* 1704 */ "stat-ing for regular file\0"
-/* 1730 */ "stat-ing for non-existant file\0"
-/* 1761 */ "open-ing file\0"
-/* 1775 */ "fopen-ing file\0"
-/* 1790 */ "\t\t\t\t- file must not pre-exist\n\0"
-/* 1821 */ "\t\t\t\t- file must pre-exist\n\0"
-/* 1848 */ "\n"
+/* 1479 */ "%%-%ds %%s\n\0"
+/* 1491 */ "fs error %d (%s) on fork - cannot obtain %s usage\n\0"
+/* 1542 */ "fs error %d (%s) on freopen\n\0"
+/* 1571 */ "File error %d (%s) opening %s for loading options\n\0"
+/* 1622 */ "fs error %d (%s) reading file %s\n\0"
+/* 1656 */ "fs error %d (%s) on %s %s for option %s\n\0"
+/* 1697 */ "stat-ing for directory\0"
+/* 1720 */ "stat-ing for regular file\0"
+/* 1746 */ "stat-ing for non-existant file\0"
+/* 1777 */ "open-ing file\0"
+/* 1791 */ "fopen-ing file\0"
+/* 1806 */ "\t\t\t\t- file must not pre-exist\n\0"
+/* 1837 */ "\t\t\t\t- file must pre-exist\n\0"
+/* 1864 */ "\n"
"= = = = = = = =\n\n"
"This incarnation of genshell will produce\n"
"a shell script to parse the options for %s:\n\n\0"
-/* 1954 */ "\n"
+/* 1970 */ "\n"
"%s\n\n\0"
-/* 1960 */ "=Cplx\0"
-/* 1966 */ "[=arg]\0"
-/* 1973 */ "--%2$s%1$s\0"
-/* 1984 */ "%s: illegal option -- %c\n\0"
-/* 2010 */ "%s: illegal option -- %s\n\0"
-/* 2036 */ "%s: unknown vendor extension option -- %s\n\0"
-/* 2079 */ " or an integer from %d through %d\n\0"
-/* 2115 */ "AutoOpts ERROR: invalid option descriptor for %s\n\0"
-/* 2166 */ " or an integer mask with any of the lower %d bits set\n\0"
-/* 2222 */ "\t\t\t\t- is a set membership option\n\0"
-/* 2256 */ "%s: option `%s' requires an argument\n\0"
-/* 2294 */ "Equivalenced option '%s' was equivalenced to both\n"
+/* 1976 */ "=Cplx\0"
+/* 1982 */ "[=arg]\0"
+/* 1989 */ "--%2$s%1$s\0"
+/* 2000 */ "%s: illegal option -- %c\n\0"
+/* 2026 */ "%s: illegal option -- %s\n\0"
+/* 2052 */ "%s: unknown vendor extension option -- %s\n\0"
+/* 2095 */ " or an integer from %d through %d\n\0"
+/* 2131 */ "AutoOpts ERROR: invalid option descriptor for %s\n\0"
+/* 2182 */ " or an integer mask with any of the lower %d bits set\n\0"
+/* 2238 */ "\t\t\t\t- is a set membership option\n\0"
+/* 2272 */ "%s: option `%s' requires an argument\n\0"
+/* 2310 */ "Equivalenced option '%s' was equivalenced to both\n"
"\t'%s' and '%s'\0"
-/* 2359 */ "\t\t\t\t- must appear between %d and %d times\n\0"
-/* 2402 */ "ERROR: The %s option is required\n\0"
-/* 2437 */ "%s: option `%s' cannot have an argument\n\0"
-/* 2478 */ "%s: Command line arguments not allowed\n\0"
-/* 2518 */ "error %d (%s) creating %s\n\0"
-/* 2545 */ "Options are specified by single or double hyphens and their name.\n\0"
-/* 2612 */ "%s error: `%s' does not match any %s keywords\n\0"
-/* 2660 */ "\t\t\t\t- may appear multiple times\n\0"
-/* 2693 */ "\t\t\t\t- may not be preset\n\0"
-/* 2718 */ "The 'reset-option' option requires an argument\n\0"
-/* 2766 */ " Arg Option-Name Description\n\0"
-/* 2801 */ " Flg Arg Option-Name Description\n\0"
-/* 2839 */ "error %d (%s) stat-ing %s\n\0"
-/* 2866 */ "%s(optionRestore): error: no saved option state\n\0"
-/* 2915 */ "none\0"
-/* 2920 */ "'%s' not defined\n\0"
-/* 2938 */ "'%s' is not a command line option\n\0"
-/* 2973 */ "ERROR: The %s option must appear %d times\n\0"
-/* 3017 */ "error: cannot load options from non-regular file %s\n\0"
-/* 3071 */ "%s error: `%s' is not a recognizable number\n\0"
-/* 3117 */ "%s error: `%s' is not a recognizable date/time\n\0"
-/* 3166 */ "%s error: `%s' is not a recognizable time duration\n\0"
-/* 3219 */ " %3s %s\0"
-/* 3227 */ "The '-#<number>' option may omit the hash char\n\0"
-/* 3275 */ "one %s%s option allowed\n\0"
-/* 3300 */ "All arguments are named options.\n\0"
-/* 3334 */ "Write failure to output file\0"
-/* 3363 */ " - reading file %s\0"
-/* 3382 */ "\n"
+/* 2375 */ "\t\t\t\t- must appear between %d and %d times\n\0"
+/* 2418 */ "ERROR: The %s option is required\n\0"
+/* 2453 */ "%s: option `%s' cannot have an argument\n\0"
+/* 2494 */ "%s: Command line arguments not allowed\n\0"
+/* 2534 */ "error %d (%s) creating %s\n\0"
+/* 2561 */ "Options are specified by single or double hyphens and their name.\n\0"
+/* 2628 */ "%s error: `%s' does not match any %s keywords\n\0"
+/* 2676 */ "\t\t\t\t- may appear multiple times\n\0"
+/* 2709 */ "\t\t\t\t- may not be preset\n\0"
+/* 2734 */ "The 'reset-option' option requires an argument\n\0"
+/* 2782 */ " Arg Option-Name Description\n\0"
+/* 2817 */ " Flg Arg Option-Name Description\n\0"
+/* 2855 */ "error %d (%s) stat-ing %s\n\0"
+/* 2882 */ "%s(optionRestore): error: no saved option state\n\0"
+/* 2931 */ "none\0"
+/* 2936 */ "'%s' not defined\n\0"
+/* 2954 */ "'%s' is not a command line option\n\0"
+/* 2989 */ "ERROR: The %s option must appear %d times\n\0"
+/* 3033 */ "error: cannot load options from non-regular file %s\n\0"
+/* 3087 */ "%s error: `%s' is not a recognizable number\n\0"
+/* 3133 */ "%s error: `%s' is not a recognizable date/time\n\0"
+/* 3182 */ "%s error: `%s' is not a recognizable time duration\n\0"
+/* 3235 */ " %3s %s\0"
+/* 3243 */ "The '-#<number>' option may omit the hash char\n\0"
+/* 3291 */ "one %s%s option allowed\n\0"
+/* 3316 */ "All arguments are named options.\n\0"
+/* 3350 */ "Write failure to output file\0"
+/* 3379 */ " - reading file %s\0"
+/* 3398 */ "\n"
"please send bug reports to: %s\n\0"
-/* 3416 */ "\t\t\t\t- may NOT appear - preset only\n\0"
-/* 3452 */ "# preset/initialization file\n"
+/* 3432 */ "\t\t\t\t- may NOT appear - preset only\n\0"
+/* 3468 */ "# preset/initialization file\n"
"# %s#\n\0"
-/* 3490 */ "\n"
+/* 3506 */ "\n"
"The following option preset mechanisms are supported:\n\0"
-/* 3546 */ "prohibits these options:\n\0"
-/* 3572 */ "Operands and options may be intermixed. They will be reordered.\n\0"
-/* 3638 */ "%s%ld to %ld\0"
-/* 3651 */ "%sgreater than or equal to %ld\0"
-/* 3682 */ "%sIt must lie in one of the ranges:\n\0"
-/* 3719 */ "%sIt must be in the range:\n\0"
-/* 3747 */ ", or\n\0"
-/* 3753 */ "%s error: %s option value %ld is out of range.\n\0"
-/* 3802 */ "%s%ld exactly\0"
-/* 3816 */ "%sis scalable with a suffix: k/K/m/M/g/G/t/T\n\0"
-/* 3862 */ "%sless than or equal to %ld\0"
-/* 3890 */ "The --reset-option has not been configured.\n\0"
-/* 3935 */ "ERROR: %s option requires the %s option\n\0"
-/* 3977 */ " %3s %-14s %s\0"
-/* 3991 */ "requires these options:\n\0"
-/* 4016 */ " Arg Option-Name Req? Description\n\0"
-/* 4056 */ " Flg Arg Option-Name Req? Description\n\0"
-/* 4099 */ "-_^\0"
-/* 4103 */ "or you may use a numeric representation. Preceding these with a '!' will\n"
+/* 3562 */ "prohibits these options:\n\0"
+/* 3588 */ "Operands and options may be intermixed. They will be reordered.\n\0"
+/* 3654 */ "%s%ld to %ld\0"
+/* 3667 */ "%sgreater than or equal to %ld\0"
+/* 3698 */ "%sIt must lie in one of the ranges:\n\0"
+/* 3735 */ "%sIt must be in the range:\n\0"
+/* 3763 */ ", or\n\0"
+/* 3769 */ "%s error: %s option value %ld is out of range.\n\0"
+/* 3818 */ "%s%ld exactly\0"
+/* 3832 */ "%sis scalable with a suffix: k/K/m/M/g/G/t/T\n\0"
+/* 3878 */ "%sless than or equal to %ld\0"
+/* 3906 */ "The --reset-option has not been configured.\n\0"
+/* 3951 */ "ERROR: %s option requires the %s option\n\0"
+/* 3993 */ " %3s %-14s %s\0"
+/* 4007 */ "requires these options:\n\0"
+/* 4032 */ " Arg Option-Name Req? Description\n\0"
+/* 4072 */ " Flg Arg Option-Name Req? Description\n\0"
+/* 4115 */ "-_^\0"
+/* 4119 */ "or you may use a numeric representation. Preceding these with a '!' will\n"
"clear the bits, specifying 'none' will clear all bits, and 'all' will set them\n"
"all. Multiple entries may be passed as an option argument list.\n\0"
-/* 4322 */ "%s\0"
-/* 4325 */ " \0"
-/* 4332 */ "T/F\0"
-/* 4336 */ "\n"
+/* 4338 */ "%s\0"
+/* 4341 */ " \0"
+/* 4348 */ "T/F\0"
+/* 4352 */ "\n"
"%s\n\n"
"%s\0"
-/* 4344 */ "Fil\0"
-/* 4348 */ "KWd\0"
-/* 4352 */ "Mbr\0"
-/* 4356 */ "Tim\0"
-/* 4360 */ "Cpx\0"
-/* 4364 */ "no \0"
-/* 4368 */ "Num\0"
-/* 4372 */ "opt\0"
-/* 4376 */ "YES\0"
-/* 4380 */ "Str\0"
-/* 4384 */ "\t\t\t\t- \0"
-/* 4391 */ "\t\t\t\t-- and \0"
-/* 4403 */ "\t\t\t\t%s\n\0"
-/* 4411 */ " \0"
-/* 4415 */ " \0"
-/* 4418 */ "\t\t\t\t- may appear up to %d times\n\0"
-/* 4451 */ "The valid \"%s\" option keywords are:\n\0"
-/* 4488 */ "These additional options are:\0"
-/* 4518 */ "The next option supports vendor supported extra options:";
+/* 4360 */ "Fil\0"
+/* 4364 */ "KWd\0"
+/* 4368 */ "Mbr\0"
+/* 4372 */ "Tim\0"
+/* 4376 */ "Cpx\0"
+/* 4380 */ "no \0"
+/* 4384 */ "Num\0"
+/* 4388 */ "opt\0"
+/* 4392 */ "YES\0"
+/* 4396 */ "Str\0"
+/* 4400 */ "\t\t\t\t- \0"
+/* 4407 */ "\t\t\t\t-- and \0"
+/* 4419 */ "\t\t\t\t%s\n\0"
+/* 4427 */ " \0"
+/* 4431 */ "%s error: %s exceeds %s keyword count\n\0"
+/* 4471 */ " \0"
+/* 4474 */ "\t\t\t\t- may appear up to %d times\n\0"
+/* 4507 */ "The valid \"%s\" option keywords are:\n\0"
+/* 4544 */ "These additional options are:\0"
+/* 4574 */ "The next option supports vendor supported extra options:";
/*
@@ -385,7 +387,7 @@ static char const usage_txt[4575] =
* Aren't you glad you don't maintain this by hand?
*/
usage_text_t option_usage_text = {
- 144,
+ 145,
eng_zGnuBoolArg, eng_zGnuKeyArg, eng_zGnuFileArg, eng_zGnuKeyLArg,
eng_zGnuTimeArg, eng_zGnuNumArg, eng_zGnuStrArg,
{
@@ -393,37 +395,37 @@ static char const usage_txt[4575] =
usage_txt + 224, usage_txt + 260, usage_txt + 310, usage_txt + 343,
usage_txt + 434, usage_txt + 493, usage_txt + 543, usage_txt + 547,
usage_txt + 574, usage_txt + 623, usage_txt + 655, usage_txt + 707,
- usage_txt + 715, usage_txt + 752, usage_txt + 777, usage_txt + 803,
- usage_txt + 843, usage_txt + 980, usage_txt +1028, usage_txt +1082,
- usage_txt +1095, usage_txt +1103, usage_txt +1145, usage_txt +1169,
- usage_txt +1209, usage_txt +1224, usage_txt +1254, usage_txt +1280,
- usage_txt +1293, usage_txt +1307, usage_txt +1354, usage_txt +1360,
- usage_txt +1463, usage_txt +1475, usage_txt +1526, usage_txt +1555,
- usage_txt +1606, usage_txt +1640, usage_txt +1681, usage_txt +1704,
- usage_txt +1730, usage_txt +1761, usage_txt +1775, usage_txt +1790,
- usage_txt +1821, usage_txt +1848, usage_txt +1954, usage_txt +1960,
- usage_txt +1966, usage_txt +1973, usage_txt +1984, usage_txt +2010,
- usage_txt +2036, usage_txt +2079, usage_txt +2115, usage_txt +2166,
- usage_txt +2222, usage_txt +2256, usage_txt +2294, usage_txt +2359,
- usage_txt +2402, usage_txt +2437, usage_txt +2478, usage_txt +2518,
- usage_txt +2545, usage_txt +2612, usage_txt +2660, usage_txt +2693,
- usage_txt +2718, usage_txt +2766, usage_txt +2801, usage_txt +2839,
- usage_txt +2866, usage_txt +2915, usage_txt +2920, usage_txt +2938,
- usage_txt +2973, usage_txt +3017, usage_txt +3071, usage_txt +3117,
- usage_txt +3166, usage_txt +3219, usage_txt +3227, usage_txt +3275,
- usage_txt +3300, usage_txt +3334, usage_txt +3363, usage_txt +3382,
- usage_txt +3416, usage_txt +3452, usage_txt +3490, usage_txt +3546,
- usage_txt +3572, usage_txt +3638, usage_txt +3651, usage_txt +3682,
- usage_txt +3719, usage_txt +3747, usage_txt +3753, usage_txt +3802,
- usage_txt +3816, usage_txt +3862, usage_txt +3890, usage_txt +3935,
- usage_txt +3977, usage_txt +3991, usage_txt +4016, usage_txt +4056,
- usage_txt +4099, usage_txt +4103, usage_txt +4322, usage_txt +4325,
- usage_txt +4332, usage_txt +4336, usage_txt +4344, usage_txt +4348,
- usage_txt +4352, usage_txt +4356, usage_txt +4360, usage_txt +4364,
+ usage_txt + 715, usage_txt + 752, usage_txt + 777, usage_txt + 819,
+ usage_txt + 859, usage_txt + 996, usage_txt +1044, usage_txt +1098,
+ usage_txt +1111, usage_txt +1119, usage_txt +1161, usage_txt +1185,
+ usage_txt +1225, usage_txt +1240, usage_txt +1270, usage_txt +1296,
+ usage_txt +1309, usage_txt +1323, usage_txt +1370, usage_txt +1376,
+ usage_txt +1479, usage_txt +1491, usage_txt +1542, usage_txt +1571,
+ usage_txt +1622, usage_txt +1656, usage_txt +1697, usage_txt +1720,
+ usage_txt +1746, usage_txt +1777, usage_txt +1791, usage_txt +1806,
+ usage_txt +1837, usage_txt +1864, usage_txt +1970, usage_txt +1976,
+ usage_txt +1982, usage_txt +1989, usage_txt +2000, usage_txt +2026,
+ usage_txt +2052, usage_txt +2095, usage_txt +2131, usage_txt +2182,
+ usage_txt +2238, usage_txt +2272, usage_txt +2310, usage_txt +2375,
+ usage_txt +2418, usage_txt +2453, usage_txt +2494, usage_txt +2534,
+ usage_txt +2561, usage_txt +2628, usage_txt +2676, usage_txt +2709,
+ usage_txt +2734, usage_txt +2782, usage_txt +2817, usage_txt +2855,
+ usage_txt +2882, usage_txt +2931, usage_txt +2936, usage_txt +2954,
+ usage_txt +2989, usage_txt +3033, usage_txt +3087, usage_txt +3133,
+ usage_txt +3182, usage_txt +3235, usage_txt +3243, usage_txt +3291,
+ usage_txt +3316, usage_txt +3350, usage_txt +3379, usage_txt +3398,
+ usage_txt +3432, usage_txt +3468, usage_txt +3506, usage_txt +3562,
+ usage_txt +3588, usage_txt +3654, usage_txt +3667, usage_txt +3698,
+ usage_txt +3735, usage_txt +3763, usage_txt +3769, usage_txt +3818,
+ usage_txt +3832, usage_txt +3878, usage_txt +3906, usage_txt +3951,
+ usage_txt +3993, usage_txt +4007, usage_txt +4032, usage_txt +4072,
+ usage_txt +4115, usage_txt +4119, usage_txt +4338, usage_txt +4341,
+ usage_txt +4348, usage_txt +4352, usage_txt +4360, usage_txt +4364,
usage_txt +4368, usage_txt +4372, usage_txt +4376, usage_txt +4380,
- usage_txt +4384, usage_txt +4391, usage_txt +4403, usage_txt +4411,
- usage_txt +4415, usage_txt +4418, usage_txt +4451, usage_txt +4488,
- usage_txt +4518
+ usage_txt +4384, usage_txt +4388, usage_txt +4392, usage_txt +4396,
+ usage_txt +4400, usage_txt +4407, usage_txt +4419, usage_txt +4427,
+ usage_txt +4431, usage_txt +4471, usage_txt +4474, usage_txt +4507,
+ usage_txt +4544, usage_txt +4574
}
};
diff --git a/src/libopts/boolean.c b/src/libopts/boolean.c
index 37d18e12b3..f0e5498a88 100644
--- a/src/libopts/boolean.c
+++ b/src/libopts/boolean.c
@@ -2,7 +2,7 @@
/**
* \file boolean.c
*
- * Time-stamp: "2010-07-10 11:02:10 bkorb"
+ * Time-stamp: "2012-03-31 13:46:19 bkorb"
*
* Automated Options Paged Usage module.
*
@@ -43,16 +43,18 @@
* it is an empty string or it is a number that evaluates to zero.
=*/
void
-optionBooleanVal( tOptions* pOpts, tOptDesc* pOD )
+optionBooleanVal(tOptions * pOpts, tOptDesc * pOD )
{
char* pz;
- ag_bool res = AG_TRUE;
+ bool res = true;
+
+ (void)pOpts;
if ((pOD->fOptState & OPTST_RESET) != 0)
return;
if (pOD->optArg.argString == NULL) {
- pOD->optArg.argBool = AG_FALSE;
+ pOD->optArg.argBool = false;
return;
}
@@ -69,12 +71,12 @@ optionBooleanVal( tOptions* pOpts, tOptDesc* pOD )
case 'F':
case 'f':
case NUL:
- res = AG_FALSE;
+ res = false;
break;
case '#':
if (pOD->optArg.argString[1] != 'f')
break;
- res = AG_FALSE;
+ res = false;
}
if (pOD->fOptState & OPTST_ALLOC_ARG) {
diff --git a/src/libopts/check.c b/src/libopts/check.c
index 003fe1363e..019a23505a 100644
--- a/src/libopts/check.c
+++ b/src/libopts/check.c
@@ -3,7 +3,7 @@
*
* @brief consistency checks.
*
- * Time-stamp: "2011-05-24 17:50:10 bkorb"
+ * Time-stamp: "2012-03-31 13:46:35 bkorb"
*
* This file contains the routines that deal with processing quoted strings
* into an internal format.
@@ -32,7 +32,7 @@
/**
* Check for conflicts based on "must" and "cannot" attributes.
*/
-static ag_bool
+static bool
has_conflict(tOptions * pOpts, tOptDesc * pOD)
{
if (pOD->pOptMust != NULL) {
@@ -43,7 +43,7 @@ has_conflict(tOptions * pOpts, tOptDesc * pOD)
if (UNUSED_OPT(p)) {
const tOptDesc * pN = pOpts->pOptDesc + pMust[-1];
fprintf(stderr, zReqFmt, pOD->pz_Name, pN->pz_Name);
- return AG_TRUE;
+ return true;
}
}
}
@@ -56,26 +56,28 @@ has_conflict(tOptions * pOpts, tOptDesc * pOD)
if (SELECTED_OPT(p)) {
const tOptDesc* pN = pOpts->pOptDesc + pCant[-1];
fprintf(stderr, zCantFmt, pOD->pz_Name, pN->pz_Name);
- return AG_TRUE;
+ return true;
}
}
}
- return AG_FALSE;
+ return false;
}
/**
* Check that the option occurs often enough. Too often is already checked.
*/
-static ag_bool
+static bool
occurs_enough(tOptions * pOpts, tOptDesc * pOD)
{
+ (void)pOpts;
+
/*
* IF the occurrence counts have been satisfied,
* THEN there is no problem.
*/
if (pOD->optOccCt >= pOD->optMinCt)
- return AG_TRUE;
+ return true;
/*
* IF MUST_SET means SET and PRESET are okay,
@@ -83,12 +85,12 @@ occurs_enough(tOptions * pOpts, tOptDesc * pOD)
*/
if ( (pOD->fOptState & OPTST_MUST_SET)
&& (pOD->fOptState & (OPTST_PRESET | OPTST_SET)) )
- return AG_TRUE;
+ return true;
if (pOD->optMinCt > 1)
fprintf(stderr, zNotEnough, pOD->pz_Name, pOD->optMinCt);
else fprintf(stderr, zNeedOne, pOD->pz_Name);
- return AG_FALSE;
+ return false;
}
/**
@@ -96,7 +98,7 @@ occurs_enough(tOptions * pOpts, tOptDesc * pOD)
*
* Make sure that the argument list passes our consistency tests.
*/
-LOCAL ag_bool
+LOCAL bool
is_consistent(tOptions * pOpts)
{
tOptDesc * pOD = pOpts->pOptDesc;
@@ -114,7 +116,7 @@ is_consistent(tOptions * pOpts)
*/
if (SELECTED_OPT(pOD)) {
if (has_conflict(pOpts, pOD))
- return AG_FALSE;
+ return false;
}
/*
@@ -126,7 +128,7 @@ is_consistent(tOptions * pOpts)
|| (pOD->optEquivIndex == pOD->optIndex) )
if (! occurs_enough(pOpts, pOD))
- return AG_FALSE;
+ return false;
if (--oCt <= 0)
break;
@@ -145,7 +147,7 @@ is_consistent(tOptions * pOpts)
if ((pOpts->fOptSet & OPTPROC_NO_ARGS) != 0) {
if (pOpts->origArgCt > pOpts->curOptIdx) {
fprintf(stderr, zNoArgs, pOpts->pzProgName);
- return AG_FALSE;
+ return false;
}
}
@@ -155,10 +157,10 @@ is_consistent(tOptions * pOpts)
else if ((pOpts->fOptSet & OPTPROC_ARGS_REQ) != 0) {
if (pOpts->origArgCt <= pOpts->curOptIdx) {
fprintf(stderr, zArgsMust, pOpts->pzProgName);
- return AG_FALSE;
+ return false;
}
}
}
- return AG_TRUE;
+ return true;
}
diff --git a/src/libopts/compat/compat.h b/src/libopts/compat/compat.h
index 9fe9b29938..9d1c02ac4a 100644
--- a/src/libopts/compat/compat.h
+++ b/src/libopts/compat/compat.h
@@ -3,7 +3,7 @@
/**
* \file compat.h --- fake the preprocessor into handlng portability
*
- * Time-stamp: "2012-02-12 09:00:09 bkorb"
+ * Time-stamp: "2012-02-28 19:40:44 bkorb"
*
* compat.h is free software.
* This file is part of AutoGen.
@@ -181,15 +181,15 @@
#include <setjmp.h>
#include <signal.h>
-#if defined( HAVE_STDINT_H )
+#if defined(HAVE_STDINT_H)
# include <stdint.h>
-#elif defined( HAVE_INTTYPES_H )
+
+#elif defined(HAVE_INTTYPES_H)
# include <inttypes.h>
#endif
#include <stdlib.h>
#include <string.h>
-
#include <time.h>
#ifdef HAVE_UTIME_H
@@ -200,6 +200,17 @@
# include <unistd.h>
#endif
+#ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+#else
+ typedef enum { false = 0, true = 1 } _Bool;
+# define bool _Bool
+
+ /* The other macros must be usable in preprocessor directives. */
+# define false 0
+# define true 1
+#endif
+
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* FIXUPS and CONVIENCE STUFF:
diff --git a/src/libopts/compat/pathfind.c b/src/libopts/compat/pathfind.c
index 2d5b27d913..2e6f881ec9 100644
--- a/src/libopts/compat/pathfind.c
+++ b/src/libopts/compat/pathfind.c
@@ -4,7 +4,7 @@
/*
* Author: Gary V Vaughan <gvaughan@oranda.demon.co.uk>
- * Time-stamp: "2010-07-17 09:50:32 bkorb"
+ * Time-stamp: "2012-03-31 13:44:42 bkorb"
*/
/* Code: */
@@ -309,7 +309,7 @@ extract_colon_unit( char* pzDir, char const *string, int *p_index )
goto copy_done;
}
- if ((pzDest - pzDir) >= AG_PATH_MAX)
+ if ((unsigned long)(pzDest - pzDir) >= AG_PATH_MAX)
break;
} copy_done:;
diff --git a/src/libopts/configfile.c b/src/libopts/configfile.c
index e3da1bb0c4..56e22b5db7 100644
--- a/src/libopts/configfile.c
+++ b/src/libopts/configfile.c
@@ -1,7 +1,7 @@
/**
* \file configfile.c
*
- * Time-stamp: "2012-02-25 12:54:32 bkorb"
+ * Time-stamp: "2012-03-31 13:56:11 bkorb"
*
* configuration/rc/ini file handling.
*
@@ -52,7 +52,7 @@ static int
parse_xml_encoding(char ** ppz);
static char *
-trim_xml_text(char * pztxt, char const * pznm, tOptionLoadMode mode);
+trim_xml_text(char * intxt, char const * pznm, tOptionLoadMode mode);
static void
cook_xml_text(char * pzData);
@@ -202,7 +202,7 @@ optionFindValue(const tOptDesc* pOptDesc, char const* pzName,
}
if (pRes == NULL)
errno = ENOENT;
- } while (0);
+ } while (false);
return pRes;
}
@@ -210,6 +210,8 @@ optionFindValue(const tOptDesc* pOptDesc, char const* pzName,
/*=export_func optionFindNextValue
*
+ * FIXME: the handling of 'pzName' and 'pzVal' is just wrong.
+ *
* what: find a hierarcicaly valued option instance
* arg: + const tOptDesc* + pOptDesc + an option with a nested arg type +
* arg: + const tOptionValue* + pPrevVal + the last entry +
@@ -238,9 +240,12 @@ tOptionValue const *
optionFindNextValue(const tOptDesc * pOptDesc, const tOptionValue * pPrevVal,
char const * pzName, char const * pzVal)
{
- int foundOldVal = 0;
+ bool old_found = false;
tOptionValue* pRes = NULL;
+ (void)pzName;
+ (void)pzVal;
+
if ( (pOptDesc == NULL)
|| (OPTST_GET_ARGTYPE(pOptDesc->fOptState) != OPARG_TYPE_HIERARCHY)) {
errno = EINVAL;
@@ -255,23 +260,18 @@ optionFindNextValue(const tOptDesc * pOptDesc, const tOptionValue * pPrevVal,
int ct = pAL->useCt;
void** ppOV = (void**)pAL->apzArgs;
- if (ct == 0) {
- errno = ENOENT;
- break;
- }
-
while (--ct >= 0) {
tOptionValue* pOV = *(ppOV++);
- if (foundOldVal) {
+ if (old_found) {
pRes = pOV;
break;
}
if (pOV == pPrevVal)
- foundOldVal = 1;
+ old_found = true;
}
if (pRes == NULL)
errno = ENOENT;
- } while (0);
+ } while (false);
return pRes;
}
@@ -431,7 +431,7 @@ file_preset(tOptions * opts, char const * fname, int dir)
do {
optst.flags = st_flags;
- while (IS_WHITESPACE_CHAR(*ftext)) ftext++;
+ ftext = SPN_WHITESPACE_CHARS(ftext);
if (IS_VAR_FIRST_CHAR(*ftext)) {
ftext = handle_cfg(opts, &optst, ftext, dir);
@@ -508,8 +508,8 @@ handle_cfg(tOptions * pOpts, tOptState * pOS, char * pzText, int dir)
if (pzEnd == NULL)
return pzText + strlen(pzText);
- while (IS_VALUE_NAME_CHAR(*pzText)) pzText++;
- while (IS_WHITESPACE_CHAR(*pzText)) pzText++;
+ pzText = SPN_VALUE_NAME_CHARS(pzText);
+ pzText = SPN_WHITESPACE_CHARS(pzText);
if (pzText > pzEnd) {
name_only:
*pzEnd++ = NUL;
@@ -523,7 +523,7 @@ handle_cfg(tOptions * pOpts, tOptState * pOS, char * pzText, int dir)
* is an invalid format and we give up parsing the text.
*/
if ((*pzText == '=') || (*pzText == ':')) {
- while (IS_WHITESPACE_CHAR(*++pzText)) ;
+ pzText = SPN_WHITESPACE_CHARS(pzText+1);
if (pzText > pzEnd)
goto name_only;
} else if (! IS_WHITESPACE_CHAR(pzText[-1]))
@@ -630,9 +630,9 @@ handle_directive(tOptions * pOpts, char * pzText)
static char *
aoflags_directive(tOptions * pOpts, char * pzText)
{
- char * pz = pzText;
+ char * pz;
- while (IS_WHITESPACE_CHAR(*++pz)) ;
+ pz = SPN_WHITESPACE_CHARS(pzText+1);
pzText = strchr(pz, '>');
if (pzText != NULL) {
@@ -665,7 +665,7 @@ program_directive(tOptions * pOpts, char * pzText)
memcpy(ttl + sizeof(ttlfmt) - 1, zCfgProg, ttl_len - (sizeof(ttlfmt) - 1));
do {
- while (IS_WHITESPACE_CHAR(*++pzText)) ;
+ pzText = SPN_WHITESPACE_CHARS(pzText+1);
if ( (strneqvcmp(pzText, pOpts->pzProgName, (int)name_len) == 0)
&& (IS_END_XML_TOKEN_CHAR(pzText[name_len])) ) {
@@ -809,28 +809,35 @@ parse_xml_encoding(char ** ppz)
* except for OPTION_LOAD_UNCOOKED.
*/
static char *
-trim_xml_text(char * pztxt, char const * pznm, tOptionLoadMode mode)
+trim_xml_text(char * intxt, char const * pznm, tOptionLoadMode mode)
{
static char const fmt[] = "</%s>";
- char z[64], *pz = z;
size_t len = strlen(pznm) + sizeof(fmt) - 2 /* for %s */;
+ char * etext;
- if (len > sizeof(z))
- pz = AGALOC(len, "scan name");
+ {
+ char z[64], *pz = z;
+ if (len >= sizeof(z))
+ pz = AGALOC(len, "scan name");
+
+ len = sprintf(pz, fmt, pznm);
+ *intxt = ' ';
+ etext = strstr(intxt, pz);
+ if (pz != z) AGFREE(pz);
+ }
- sprintf(pz, fmt, pznm);
- *pztxt = ' ';
- pztxt = strstr(pztxt, pz);
- if (pz != z) AGFREE(pz);
+ if (etext == NULL)
+ return etext;
- if (pztxt == NULL)
- return pztxt;
+ {
+ char * result = etext + len;
- if (mode != OPTION_LOAD_UNCOOKED)
- while (IS_WHITESPACE_CHAR(pztxt[-1])) len++, pztxt--;
+ if (mode != OPTION_LOAD_UNCOOKED)
+ etext = SPN_WHITESPACE_BACK(intxt, etext);
- *pztxt = NUL;
- return pztxt + len - 1 /* for NUL byte */;
+ *etext = NUL;
+ return result;
+ }
}
/**
@@ -889,14 +896,14 @@ handle_struct(tOptions * pOpts, tOptState * pOS, char * pzText, int dir)
char* pzData;
char* pcNulPoint;
- while (IS_VALUE_NAME_CHAR(*pzText)) pzText++;
+ pzText = SPN_VALUE_NAME_CHARS(pzText);
pcNulPoint = pzText;
valu.valType = OPARG_TYPE_STRING;
switch (*pzText) {
case ' ':
case '\t':
- pzText = parseAttributes(pOpts, pzText, &mode, &valu);
+ pzText = parse_attrs(pOpts, pzText, &mode, &valu);
if (*pzText == '>')
break;
if (*pzText != '/')
@@ -933,7 +940,7 @@ handle_struct(tOptions * pOpts, tOptState * pOS, char * pzText, int dir)
/*
* Rejoin the name and value for parsing by "loadOptionLine()".
- * Erase any attributes parsed by "parseAttributes()".
+ * Erase any attributes parsed by "parse_attrs()".
*/
memset(pcNulPoint, ' ', pzData - pcNulPoint);
@@ -1159,11 +1166,8 @@ optionLoadOpt(tOptions * pOpts, tOptDesc * pOptDesc)
* Parse the various attributes of an XML-styled config file entry
*/
LOCAL char*
-parseAttributes(
- tOptions* pOpts,
- char* pzText,
- tOptionLoadMode* pMode,
- tOptionValue* pType )
+parse_attrs(tOptions * pOpts, char * pzText, tOptionLoadMode * pMode,
+ tOptionValue * pType)
{
size_t len;
@@ -1177,9 +1181,8 @@ parseAttributes(
case NUL: return NULL;
}
- while (IS_WHITESPACE_CHAR(*++pzText)) ;
- len = 0;
- while (IS_LOWER_CASE_CHAR(pzText[len])) len++;
+ pzText = SPN_WHITESPACE_CHARS(pzText+1);
+ len = SPN_LOWER_CASE_CHARS(pzText) - pzText;
switch (find_xat_attribute_id(pzText, len)) {
case XAT_KWD_TYPE:
@@ -1237,6 +1240,9 @@ parseAttributes(
static char*
parse_keyword(tOptions * pOpts, char * pzText, tOptionValue * pType)
{
+ (void)pOpts;
+ (void)pType;
+
return skip_unkn(pzText);
}
@@ -1249,6 +1255,9 @@ parse_keyword(tOptions * pOpts, char * pzText, tOptionValue * pType)
static char*
parse_set_mem(tOptions * pOpts, char * pzText, tOptionValue * pType)
{
+ (void)pOpts;
+ (void)pType;
+
return skip_unkn(pzText);
}
@@ -1264,16 +1273,15 @@ parse_value(char * pzText, tOptionValue * pType)
if (*(pzText++) != '=')
goto woops;
- while (IS_OPTION_NAME_CHAR(pzText[len])) len++;
- pzText += len;
+ len = SPN_OPTION_NAME_CHARS(pzText) - pzText;
- if ((len == 0) || (! IS_END_XML_TOKEN_CHAR(*pzText))) {
+ if ((len == 0) || (! IS_END_XML_TOKEN_CHAR(pzText[len]))) {
woops:
pType->valType = OPARG_TYPE_NONE;
- return skip_unkn(pzText);
+ return skip_unkn(pzText + len);
}
- switch (find_value_type_id(pzText - len, len)) {
+ switch (find_value_type_id(pzText, len)) {
default:
case VTP_KWD_INVALID: goto woops;
@@ -1304,7 +1312,7 @@ parse_value(char * pzText, tOptionValue * pType)
pType->valType = OPARG_TYPE_HIERARCHY;
}
- return pzText;
+ return pzText + len;
}
diff --git a/src/libopts/cook.c b/src/libopts/cook.c
index c681ea317c..f34a6edd78 100644
--- a/src/libopts/cook.c
+++ b/src/libopts/cook.c
@@ -1,7 +1,7 @@
/**
* \file cook.c
*
- * Time-stamp: "2012-02-12 09:00:47 bkorb"
+ * Time-stamp: "2012-02-28 19:40:47 bkorb"
*
* This file contains the routines that deal with processing quoted strings
* into an internal format.
@@ -28,7 +28,7 @@
*/
/* = = = START-STATIC-FORWARD = = = */
-static ag_bool
+static bool
contiguous_quote(char ** pps, char * pq, int * lnct_p);
/* = = = END-STATIC-FORWARD = = = */
@@ -130,7 +130,7 @@ ao_string_cook_escape_char(char const* pzIn, char* pRes, uint_t nl)
* A quoted string has been found.
* Find the end of it and compress any escape sequences.
*/
-static ag_bool
+static bool
contiguous_quote(char ** pps, char * pq, int * lnct_p)
{
char * ps = *pps + 1;
@@ -149,7 +149,7 @@ contiguous_quote(char ** pps, char * pq, int * lnct_p)
case '\'':
*pq = *(ps++); /* assign new quote character and return */
*pps = ps;
- return AG_TRUE;
+ return true;
case '/':
/*
@@ -158,7 +158,7 @@ contiguous_quote(char ** pps, char * pq, int * lnct_p)
switch (ps[1]) {
default:
*pps = NULL;
- return AG_FALSE;
+ return false;
case '/':
/*
@@ -167,7 +167,7 @@ contiguous_quote(char ** pps, char * pq, int * lnct_p)
ps = strchr(ps, NL);
if (ps == NULL) {
*pps = NULL;
- return AG_FALSE;
+ return false;
}
break;
@@ -179,7 +179,7 @@ contiguous_quote(char ** pps, char * pq, int * lnct_p)
*/
if (p == NULL) {
*pps = NULL;
- return AG_FALSE;
+ return false;
}
while (ps < p) {
@@ -198,7 +198,7 @@ contiguous_quote(char ** pps, char * pq, int * lnct_p)
* The series of quoted strings has come to an end.
*/
*pps = ps;
- return AG_FALSE;
+ return false;
}
}
}
diff --git a/src/libopts/enum.c b/src/libopts/enum.c
index 6ce6b4bfb9..2a9f9bc2b5 100644
--- a/src/libopts/enum.c
+++ b/src/libopts/enum.c
@@ -2,7 +2,7 @@
/**
* \file enumeration.c
*
- * Time-stamp: "2012-01-29 19:07:59 bkorb"
+ * Time-stamp: "2012-03-31 13:22:33 bkorb"
*
* Automated Options Paged Usage module.
*
@@ -166,7 +166,16 @@ enum_err(tOptions * pOpts, tOptDesc * pOD,
}
}
-
+/**
+ * Convert a name or number into a binary number.
+ * "~0" and "-1" will be converted to the largest value in the enumeration.
+ *
+ * @param pzName the keyword name (number) to convert
+ * @param pOpts the program's option descriptor
+ * @param pOD the option descriptor for this option
+ * @param paz_names the list of keywords for this option
+ * @param name_ct the count of keywords
+ */
static uintptr_t
find_name(char const * pzName, tOptions * pOpts, tOptDesc * pOD,
char const * const * paz_names, unsigned int name_ct)
@@ -184,10 +193,19 @@ find_name(char const * pzName, tOptions * pOpts, tOptDesc * pOD,
unsigned long val = strtoul(pz, &pz, 0);
if ((*pz == NUL) && (val < name_ct))
return (uintptr_t)val;
+ pz_enum_err_fmt = zTooLarge;
+ option_usage_fp = stderr;
enum_err(pOpts, pOD, paz_names, (int)name_ct);
return name_ct;
}
+ if (IS_INVERSION_CHAR(*pzName) && (pzName[2] == NUL)) {
+ if ( ((pzName[0] == '~') && (pzName[1] == '0'))
+ || ((pzName[0] == '-') && (pzName[1] == '1')))
+ return (uintptr_t)(name_ct - 1);
+ goto oops;
+ }
+
/*
* Look for an exact match, but remember any partial matches.
* Multiple partial matches means we have an ambiguous match.
@@ -197,13 +215,18 @@ find_name(char const * pzName, tOptions * pOpts, tOptDesc * pOD,
if (paz_names[idx][len] == NUL)
return idx; /* full match */
- res = (res != name_ct) ? ~0 : idx; /* save partial match */
+ if (res == name_ct)
+ res = idx; /* save partial match */
+ else
+ res = ~0; /* may yet find full match */
}
}
if (res < name_ct)
return res; /* partial match */
+oops:
+
pz_enum_err_fmt = (res == name_ct) ? zNoKey : zAmbigKey;
option_usage_fp = stderr;
enum_err(pOpts, pOD, paz_names, (int)name_ct);
@@ -226,9 +249,9 @@ find_name(char const * pzName, tOptions * pOpts, tOptDesc * pOD,
char const *
optionKeywordName(tOptDesc * pOD, unsigned int enum_val)
{
- tOptDesc od;
+ tOptDesc od = {
+ .optArg.argEnum = enum_val };
- od.optArg.argEnum = enum_val;
(*(pOD->pOptProc))(OPTPROC_RETURN_VALNAME, &od );
return od.optArg.argString;
}
@@ -317,6 +340,7 @@ set_memb_usage(tOptions * pOpts, tOptDesc * pOD, char const * const * paz_names,
/*
* print the list of enumeration names.
*/
+ (void)pOpts;
enum_err(OPTPROC_EMIT_USAGE, pOD, paz_names, (int)name_ct );
}
@@ -331,6 +355,7 @@ set_memb_shell(tOptions * pOpts, tOptDesc * pOD, char const * const * paz_names,
uintptr_t bits = (uintptr_t)pOD->optCookie;
size_t len = 0;
+ (void)pOpts;
bits &= ((uintptr_t)1 << (uintptr_t)name_ct) - (uintptr_t)1;
while (bits != 0) {
@@ -352,6 +377,7 @@ set_memb_names(tOptions * pOpts, tOptDesc * pOD, char const * const * paz_names,
unsigned int ix = 0;
size_t len = NONE_STR_LEN + 1;
+ (void)pOpts;
bits &= ((uintptr_t)1 << (uintptr_t)name_ct) - (uintptr_t)1;
/*
@@ -494,7 +520,7 @@ optionSetMembers(tOptions * pOpts, tOptDesc * pOD,
if (iv)
res &= ~bit;
else res |= bit;
- } while (0);
+ } while (false);
if (pzArg[len] == NUL)
break;
diff --git a/src/libopts/env.c b/src/libopts/env.c
index 60e8a037f7..4dd18faaba 100644
--- a/src/libopts/env.c
+++ b/src/libopts/env.c
@@ -2,7 +2,7 @@
/**
* \file environment.c
*
- * Time-stamp: "2011-07-19 17:43:34 bkorb"
+ * Time-stamp: "2012-04-01 05:59:15 bkorb"
*
* This file contains all of the routines that must be linked into
* an executable to use the generated option processing. The optional
@@ -45,11 +45,11 @@ do_env_opt(tOptState * os, char * env_name,
LOCAL void
doPrognameEnv(tOptions * pOpts, teEnvPresetType type)
{
- char const* pczOptStr = getenv(pOpts->pzPROGNAME);
+ char const * pczOptStr = getenv(pOpts->pzPROGNAME);
token_list_t* pTL;
int sv_argc;
tAoUI sv_flag;
- char** sv_argv;
+ char ** sv_argv;
/*
* No such beast? Then bail now.
@@ -78,7 +78,10 @@ doPrognameEnv(tOptions * pOpts, teEnvPresetType type)
* The option scanning code will skip the "program name" at the start
* of this list of tokens, so we accommodate this way ....
*/
- pOpts->origArgVect = (char**)(pTL->tkn_list - 1);
+ {
+ uintptr_t v = (uintptr_t)(pTL->tkn_list);
+ pOpts->origArgVect = (void *)(v - sizeof(char *));
+ }
pOpts->origArgCt = pTL->tkn_ct + 1;
pOpts->fOptSet &= ~OPTPROC_ERRSTOP;
diff --git a/src/libopts/find.c b/src/libopts/find.c
index aa730c6fd9..f6510ee745 100644
--- a/src/libopts/find.c
+++ b/src/libopts/find.c
@@ -99,7 +99,7 @@ opt_ambiguities(tOptions * opts, char const * name, int nm_len)
*/
static int
opt_match_ct(tOptions * opts, char const * name, int nm_len,
- int * ixp, ag_bool * disable)
+ int * ixp, bool * disable)
{
int matchCt = 0;
int idx = 0;
@@ -136,7 +136,7 @@ opt_match_ct(tOptions * opts, char const * name, int nm_len,
else if ( (pOD->pz_DisableName != NULL)
&& (strneqvcmp(name, pOD->pz_DisableName, nm_len) == 0)
) {
- *disable = AG_TRUE;
+ *disable = true;
/*
* IF we have a complete match
@@ -173,7 +173,7 @@ opt_match_ct(tOptions * opts, char const * name, int nm_len,
* @param st state about current option
*/
static tSuccess
-opt_set(tOptions * opts, char * arg, int idx, ag_bool disable, tOptState * st)
+opt_set(tOptions * opts, char * arg, int idx, bool disable, tOptState * st)
{
tOptDesc * pOD = opts->pOptDesc + idx;
@@ -335,7 +335,7 @@ opt_find_long(tOptions * pOpts, char const * opt_name, tOptState * pOptState)
int nm_len = parse_opt(&opt_name, &opt_arg, name_buf, sizeof(name_buf));
int matchIdx = 0;
- ag_bool disable = AG_FALSE;
+ bool disable = false;
int match_ct =
opt_match_ct(pOpts, opt_name, nm_len, &matchIdx, &disable);
diff --git a/src/libopts/genshell.c b/src/libopts/genshell.c
index c8d3047073..16ca245081 100644
--- a/src/libopts/genshell.c
+++ b/src/libopts/genshell.c
@@ -2,11 +2,11 @@
*
* DO NOT EDIT THIS FILE (genshell.c)
*
- * It has been AutoGen-ed February 26, 2012 at 11:08:41 AM by AutoGen 5.15pre14
+ * It has been AutoGen-ed May 6, 2012 at 04:20:59 PM by AutoGen 5.16pre36
* From the definitions genshell.def
* and the template file options
*
- * Generated from AutoOpts 36:3:11 templates.
+ * Generated from AutoOpts 36:4:11 templates.
*
* AutoOpts is a copyrighted work. This source file is not encumbered
* by AutoOpts licensing, but is provided under the licensing terms chosen
@@ -39,6 +39,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#ifndef __doxygen__
#define OPTION_CODE_COMPILE 1
#include "genshell.h"
#include <sys/types.h>
@@ -66,7 +67,7 @@ extern tUsageProc genshelloptUsage;
/*
* genshellopt option static const strings
*/
-static char const genshellopt_opt_strs[1691] =
+static char const genshellopt_opt_strs[1690] =
/* 0 */ "genshellopt 1\n"
"Copyright (C) 1999-2012 Bruce Korb, all rights reserved.\n"
"This is free software. It is licensed for use, modification and\n"
@@ -74,13 +75,13 @@ static char const genshellopt_opt_strs[1691] =
"GNU General Public License, version 3 or later\n"
" <http://gnu.org/licenses/gpl.html>\n\0"
/* 260 */ "genshellopt is free software: you can redistribute it and/or modify it\n"
- "under the terms of the GNU General Public License as published by the\n"
- "Free Software Foundation, either version 3 of the License, or (at your\n"
- "option) any later version.\n\n"
+ "under the terms of the GNU General Public License as published by the Free\n"
+ "Software Foundation, either version 3 of the License, or (at your option)\n"
+ "any later version.\n\n"
"genshellopt is distributed in the hope that it will be useful, but WITHOUT\n"
"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n"
- "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License\n"
- "for more details.\n\n"
+ "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\n"
+ "more details.\n\n"
"You should have received a copy of the GNU General Public License along\n"
"with this program. If not, see <http://www.gnu.org/licenses/>.\n\0"
/* 871 */ "Output Script File\0"
@@ -102,13 +103,13 @@ static char const genshellopt_opt_strs[1691] =
/* 1235 */ "autogen-users@lists.sourceforge.net\0"
/* 1271 */ "\n"
"Note that ``shell'' is only useful if the output file does not already\n"
- "exist. If it does, then the shell name and optional first argument will\n"
- "be extracted from the script file.\n\0"
+ "exist. If it does, then the shell name and optional first argument will be\n"
+ "extracted from the script file.\n\0"
/* 1452 */ "\n"
"If the script file already exists and contains Automated Option Processing\n"
"text, the second line of the file through the ending tag will be replaced\n"
- "by the newly generated text. The first ``#!'' line will be regenerated.\n\0"
-/* 1677 */ "genshellopt 1";
+ "by the newly generated text. The first ``#!'' line will be regenerated.\n\0"
+/* 1676 */ "genshellopt 1";
/*
* script option description:
@@ -164,9 +165,11 @@ static tOptProc
doUsageOpt;
#define VER_PROC optionPrintVersion
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Define the Genshellopt Option Descriptions.
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * Define the genshellopt Option Descriptions.
+ * This is an array of GENSHELL_OPTION_CT entries, one for each
+ * option that the genshellopt program responds to.
*/
static tOptDesc optDesc[GENSHELL_OPTION_CT] = {
{ /* entry idx, value */ 0, VALUE_GENSHELL_OPT_SCRIPT,
@@ -235,7 +238,7 @@ static tOptDesc optDesc[GENSHELL_OPTION_CT] = {
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Define the Genshellopt Option Environment
+ * Define the genshellopt Option Environment
*/
#define zPROGNAME (genshellopt_opt_strs+1102)
#define zUsageTitle (genshellopt_opt_strs+1114)
@@ -244,8 +247,8 @@ static tOptDesc optDesc[GENSHELL_OPTION_CT] = {
#define zBugsAddr (genshellopt_opt_strs+1235)
#define zExplain (genshellopt_opt_strs+1271)
#define zDetail (genshellopt_opt_strs+1452)
-#define zFullVersion (genshellopt_opt_strs+1677)
-/* extracted from optcode.tlib near line 349 */
+#define zFullVersion (genshellopt_opt_strs+1676)
+/* extracted from optcode.tlib near line 350 */
#if defined(ENABLE_NLS)
# define OPTPROC_BASE OPTPROC_TRANSLATE
@@ -260,27 +263,39 @@ static tOptDesc optDesc[GENSHELL_OPTION_CT] = {
#define genshellopt_short_usage (NULL)
+#endif /* not defined __doxygen__ */
+
/*
* Create the static procedure(s) declared above.
*/
/**
- * The callout function that invokes the GENSHELL_USAGE() macro.
+ * The callout function that invokes the genshelloptUsage function.
*
* @param pOptions the AutoOpts option description structure
* @param pOptDesc the descriptor for the "help" (usage) option.
+ * @noreturn
*/
static void
doUsageOpt(tOptions * pOptions, tOptDesc * pOptDesc)
{
+ genshelloptUsage(&genshelloptOptions, GENSHELLOPT_EXIT_SUCCESS);
+ /* NOTREACHED */
+ (void)pOptDesc;
(void)pOptions;
- GENSHELL_USAGE(GENSHELLOPT_EXIT_SUCCESS);
}
-/* extracted from optmain.tlib near line 1093 */
+/* extracted from optmain.tlib near line 1113 */
+/**
+ * The directory containing the data associated with genshellopt.
+ */
#ifndef PKGDATADIR
# define PKGDATADIR ""
#endif
+/**
+ * Information about the person or institution that packaged genshellopt
+ * for the current distribution.
+ */
#ifndef WITH_PACKAGER
# define genshellopt_packager_info NULL
#else
@@ -296,7 +311,13 @@ static char const genshellopt_packager_info[] =
# endif
"\n";
#endif
+#ifndef __doxygen__
+#endif /* __doxygen__ */
+/**
+ * The option definitions for genshellopt. The one structure that
+ * binds them all.
+ */
tOptions genshelloptOptions = {
OPTIONS_STRUCT_VERSION,
0, NULL, /* original argc + argv */
@@ -340,7 +361,16 @@ tOptions genshelloptOptions = {
static char* AO_gettext(char const* pz);
static void coerce_it(void** s);
-static char*
+/**
+ * AutoGen specific wrapper function for gettext.
+ * It relies on the macro _() to convert from English to the target
+ * language, then strdup-duplicates the result string.
+ *
+ * @param[in] pz the input text used as a lookup key.
+ * @returns the translated text (if there is one),
+ * or the original text (if not).
+ */
+static char *
AO_gettext(char const* pz)
{
char* pzRes;
@@ -360,8 +390,9 @@ AO_gettext(char const* pz)
static void coerce_it(void** s) { *s = AO_gettext(*s);
}
-/*
- * This invokes the translation code (e.g. gettext(3)).
+/**
+ * Translate all the translatable strings in the genshelloptOptions
+ * structure defined above. This is done only once.
*/
static void
translate_option_strings(void)
diff --git a/src/libopts/genshell.h b/src/libopts/genshell.h
index 1115d8fd6b..d91c069e1e 100644
--- a/src/libopts/genshell.h
+++ b/src/libopts/genshell.h
@@ -2,11 +2,11 @@
*
* DO NOT EDIT THIS FILE (genshell.h)
*
- * It has been AutoGen-ed February 26, 2012 at 11:08:41 AM by AutoGen 5.15pre14
+ * It has been AutoGen-ed May 6, 2012 at 04:20:59 PM by AutoGen 5.16pre36
* From the definitions genshell.def
* and the template file options
*
- * Generated from AutoOpts 36:3:11 templates.
+ * Generated from AutoOpts 36:4:11 templates.
*
* AutoOpts is a copyrighted work. This header file is not encumbered
* by AutoOpts licensing, but is provided under the licensing terms chosen
@@ -55,7 +55,7 @@
* tolerable version is at least as old as what was current when the header
* template was released.
*/
-#define AO_TEMPLATE_VERSION 147459
+#define AO_TEMPLATE_VERSION 147460
#if (AO_TEMPLATE_VERSION < OPTIONS_MINIMUM_VERSION) \
|| (AO_TEMPLATE_VERSION > OPTIONS_STRUCT_VERSION)
# error option template version mismatches autoopts/options.h header
@@ -104,7 +104,8 @@ typedef enum {
*/
typedef enum {
GENSHELLOPT_EXIT_SUCCESS = 0,
- GENSHELLOPT_EXIT_FAILURE = 1
+ GENSHELLOPT_EXIT_FAILURE = 1,
+ GENSHELLOPT_EXIT_LIBOPTS_FAILURE = 70
} genshellopt_exit_code_t;
/* * * * * *
*
@@ -125,7 +126,7 @@ typedef enum {
genshelloptOptions.pzCurOpt = NULL )
#define START_GENSHELL_OPT RESTART_GENSHELL_OPT(1)
#define GENSHELL_USAGE(c) (*genshelloptOptions.pUsageProc)(&genshelloptOptions, c)
-/* extracted from opthead.tlib near line 469 */
+/* extracted from opthead.tlib near line 484 */
#ifdef __cplusplus
extern "C" {
@@ -140,9 +141,6 @@ extern tOptions genshelloptOptions;
#if defined(ENABLE_NLS)
# ifndef _
-# if defined(HAVE_GETTEXT)
-# include <libintl.h>
-# endif
# include <stdio.h>
static inline char* aoGetsText(char const* pz) {
if (pz == NULL) return NULL;
diff --git a/src/libopts/libopts.c b/src/libopts/libopts.c
index bd5f87244f..07cc035781 100644
--- a/src/libopts/libopts.c
+++ b/src/libopts/libopts.c
@@ -1,6 +1,5 @@
-#include "autoopts/project.h"
#define AUTOOPTS_INTERNAL 1
-#include "compat/compat.h"
+#include "autoopts/project.h"
#define LOCAL static
#include "ao-strs.h"
#include "autoopts/options.h"
@@ -11,7 +10,6 @@
#include "ao-strs.h"
#include "ag-char-map.h"
#include "autoopts.h"
-#include "parse-duration.h"
#include "proto.h"
#include "parse-duration.c"
#include "ao-strs.c"
diff --git a/src/libopts/load.c b/src/libopts/load.c
index a1380709bb..1ea7808061 100644
--- a/src/libopts/load.c
+++ b/src/libopts/load.c
@@ -1,7 +1,7 @@
/**
* \file load.c
- * Time-stamp: "2012-01-29 19:37:15 bkorb"
+ * Time-stamp: "2012-03-31 13:13:34 bkorb"
*
* This file contains the routines that deal with processing text strings
* for options, either from a NUL-terminated string passed in or from an
@@ -29,13 +29,12 @@
*/
/* = = = START-STATIC-FORWARD = = = */
-static ag_bool
+static bool
add_prog_path(char * pzBuf, int bufSize, char const * pzName,
char const * pzProgPath);
-static ag_bool
-add_env_val(char * pzBuf, int bufSize, char const * pzName,
- char const * pzProgPath);
+static bool
+add_env_val(char * pzBuf, int bufSize, char const * pzName);
static char *
assemble_arg_val(char * pzTxt, tOptionLoadMode mode);
@@ -50,8 +49,8 @@ assemble_arg_val(char * pzTxt, tOptionLoadMode mode);
* arg: + char const* + pzName + The input name +
* arg: + char const* + pzProgPath + The full path of the current program +
*
- * ret-type: ag_bool
- * ret-desc: AG_TRUE if the name was handled, otherwise AG_FALSE.
+ * ret-type: bool
+ * ret-desc: true if the name was handled, otherwise false.
* If the name does not start with ``$'', then it is handled
* simply by copying the input name to the output buffer and
* resolving the name with either
@@ -77,7 +76,7 @@ assemble_arg_val(char * pzTxt, tOptionLoadMode mode);
* @code{pzName} string and must either be the entire string or be followed
* by the @code{'/'} (backslash on windows) character.
*
- * err: @code{AG_FALSE} is returned if:
+ * err: @code{false} is returned if:
* @*
* @bullet{} The input name exceeds @code{bufSize} bytes.
* @*
@@ -92,14 +91,14 @@ assemble_arg_val(char * pzTxt, tOptionLoadMode mode);
* @bullet{} @code{canonicalize_file_name} or @code{realpath} return
* errors (cannot resolve the resulting path).
=*/
-ag_bool
+bool
optionMakePath(char * pzBuf, int bufSize, char const * pzName,
char const * pzProgPath)
{
size_t name_len = strlen(pzName);
if (((size_t)bufSize <= name_len) || (name_len == 0))
- return AG_FALSE;
+ return false;
/*
* IF not an environment variable, just copy the data
@@ -113,7 +112,7 @@ optionMakePath(char * pzBuf, int bufSize, char const * pzName,
if ( (*(pzD++) = *(pzS++)) == NUL)
break;
if (--ct <= 0)
- return AG_FALSE;
+ return false;
}
}
@@ -124,37 +123,37 @@ optionMakePath(char * pzBuf, int bufSize, char const * pzName,
*/
else switch (pzName[1]) {
case NUL:
- return AG_FALSE;
+ return false;
case '$':
if (! add_prog_path(pzBuf, bufSize, pzName, pzProgPath))
- return AG_FALSE;
+ return false;
break;
case '@':
if (program_pkgdatadir[0] == NUL)
- return AG_FALSE;
+ return false;
if (snprintf(pzBuf, bufSize, "%s%s", program_pkgdatadir, pzName + 2)
>= bufSize)
- return AG_FALSE;
+ return false;
break;
default:
- if (! add_env_val(pzBuf, bufSize, pzName, pzProgPath))
- return AG_FALSE;
+ if (! add_env_val(pzBuf, bufSize, pzName))
+ return false;
}
#if defined(HAVE_CANONICALIZE_FILE_NAME)
{
char * pz = canonicalize_file_name(pzBuf);
if (pz == NULL)
- return AG_FALSE;
+ return false;
name_len = strlen(pz);
- if (name_len >= bufSize) {
+ if (name_len >= (size_t)bufSize) {
free(pz);
- return AG_FALSE;
+ return false;
}
memcpy(pzBuf, pz, name_len + 1);
@@ -166,20 +165,20 @@ optionMakePath(char * pzBuf, int bufSize, char const * pzName,
char z[PATH_MAX+1];
if (realpath(pzBuf, z) == NULL)
- return AG_FALSE;
+ return false;
name_len = strlen(z);
if (name_len >= bufSize)
- return AG_FALSE;
+ return false;
memcpy(pzBuf, z, name_len + 1);
}
#endif
- return AG_TRUE;
+ return true;
}
-static ag_bool
+static bool
add_prog_path(char * pzBuf, int bufSize, char const * pzName,
char const * pzProgPath)
{
@@ -193,7 +192,7 @@ add_prog_path(char * pzBuf, int bufSize, char const * pzName,
case NUL:
break;
default:
- return AG_FALSE;
+ return false;
}
/*
@@ -207,7 +206,7 @@ add_prog_path(char * pzBuf, int bufSize, char const * pzName,
pzPath = pathfind(getenv("PATH"), (char*)pzProgPath, "rx");
if (pzPath == NULL)
- return AG_FALSE;
+ return false;
}
pz = strrchr(pzPath, DIRCH);
@@ -217,7 +216,7 @@ add_prog_path(char * pzBuf, int bufSize, char const * pzName,
* THEN we do not have a path name to our executable file.
*/
if (pz == NULL)
- return AG_FALSE;
+ return false;
pzName += skip;
@@ -226,7 +225,7 @@ add_prog_path(char * pzBuf, int bufSize, char const * pzName,
* The result may be either a file or a directory.
*/
if ((pz - pzPath)+1 + strlen(pzName) >= (unsigned)bufSize)
- return AG_FALSE;
+ return false;
memcpy(pzBuf, pzPath, (size_t)((pz - pzPath)+1));
strcpy(pzBuf + (pz - pzPath) + 1, pzName);
@@ -237,15 +236,14 @@ add_prog_path(char * pzBuf, int bufSize, char const * pzName,
*/
if (pzPath != pzProgPath)
AGFREE(pzPath);
- return AG_TRUE;
+ return true;
}
-static ag_bool
-add_env_val(char * pzBuf, int bufSize, char const * pzName,
- char const * pzProgPath)
+static bool
+add_env_val(char * pzBuf, int bufSize, char const * pzName)
{
- char* pzDir = pzBuf;
+ char * pzDir = pzBuf;
for (;;) {
int ch = (int)*++pzName;
@@ -255,7 +253,7 @@ add_env_val(char * pzBuf, int bufSize, char const * pzName,
}
if (pzDir == pzBuf)
- return AG_FALSE;
+ return false;
*pzDir = NUL;
@@ -265,34 +263,34 @@ add_env_val(char * pzBuf, int bufSize, char const * pzName,
* Environment value not found -- skip the home list entry
*/
if (pzDir == NULL)
- return AG_FALSE;
+ return false;
if (strlen(pzDir) + 1 + strlen(pzName) >= (unsigned)bufSize)
- return AG_FALSE;
+ return false;
sprintf(pzBuf, "%s%s", pzDir, pzName);
- return AG_TRUE;
+ return true;
}
LOCAL void
mungeString(char* pzTxt, tOptionLoadMode mode)
{
- char* pzE;
+ char * pzE;
if (mode == OPTION_LOAD_KEEP)
return;
if (IS_WHITESPACE_CHAR(*pzTxt)) {
- char* pzS = pzTxt;
- char* pzD = pzTxt;
- while (IS_WHITESPACE_CHAR(*++pzS)) ;
- while ((*(pzD++) = *(pzS++)) != NUL) ;
- pzE = pzD-1;
+ char * pzS = SPN_WHITESPACE_CHARS(pzTxt+1);
+ size_t l = strlen(pzS) + 1;
+ memmove(pzTxt, pzS, l);
+ pzE = pzTxt + l - 1;
+
} else
pzE = pzTxt + strlen(pzTxt);
- while ((pzE > pzTxt) && IS_WHITESPACE_CHAR(pzE[-1])) pzE--;
+ pzE = SPN_WHITESPACE_BACK(pzTxt, pzE);
*pzE = NUL;
if (mode == OPTION_LOAD_UNCOOKED)
@@ -343,9 +341,10 @@ assemble_arg_val(char * pzTxt, tOptionLoadMode mode)
*/
space_break = IS_WHITESPACE_CHAR(*pzEnd);
*(pzEnd++) = NUL;
- while (IS_WHITESPACE_CHAR(*pzEnd)) pzEnd++;
+
+ pzEnd = SPN_WHITESPACE_CHARS(pzEnd);
if (space_break && ((*pzEnd == ':') || (*pzEnd == '=')))
- while (IS_WHITESPACE_CHAR(*++pzEnd)) ;
+ pzEnd = SPN_WHITESPACE_CHARS(pzEnd+1);
return pzEnd;
}
@@ -365,7 +364,7 @@ loadOptionLine(
tDirection direction,
tOptionLoadMode load_mode )
{
- while (IS_WHITESPACE_CHAR(*pzLine)) pzLine++;
+ pzLine = SPN_WHITESPACE_CHARS(pzLine);
{
char* pzArg = assemble_arg_val(pzLine, load_mode);
diff --git a/src/libopts/m4/libopts.m4 b/src/libopts/m4/libopts.m4
index d9a117399c..ce083de1f7 100644
--- a/src/libopts/m4/libopts.m4
+++ b/src/libopts/m4/libopts.m4
@@ -2,7 +2,7 @@ dnl -*- buffer-read-only: t -*- vi: set ro:
dnl
dnl DO NOT EDIT THIS FILE (libopts.m4)
dnl
-dnl It has been AutoGen-ed February 26, 2012 at 11:08:37 AM by AutoGen 5.15pre14
+dnl It has been AutoGen-ed May 6, 2012 at 04:20:55 PM by AutoGen 5.16pre36
dnl From the definitions libopts.def
dnl and the template file conftest.tpl
dnl
@@ -16,11 +16,12 @@ AC_DEFUN([INVOKE_LIBOPTS_MACROS_FIRST],[
# AC_CHECK_HEADERS
# =================
AC_CHECK_HEADERS([ \
- dlfcn.h errno.h fcntl.h libgen.h \
- memory.h netinet/in.h setjmp.h sys/mman.h \
- sys/param.h sys/poll.h sys/procset.h sys/select.h \
- sys/socket.h sys/stropts.h sys/time.h sys/un.h \
- sys/wait.h unistd.h utime.h sysexits.h ])
+ sys/mman.h sys/param.h sys/poll.h sys/procset.h \
+ sys/select.h sys/socket.h sys/stropts.h sys/time.h \
+ sys/un.h sys/wait.h dlfcn.h errno.h \
+ fcntl.h libgen.h memory.h netinet/in.h \
+ setjmp.h stdbool.h sysexits.h unistd.h \
+ utime.h])
AC_CHECK_HEADERS([stdarg.h varargs.h],
[lo_have_arg_hdr=true;break],
@@ -100,7 +101,7 @@ AC_DEFUN([INVOKE_LIBOPTS_MACROS_FIRST],[
AC_FUNC_VPRINTF
AC_FUNC_FORK
AC_CHECK_FUNCS([mmap canonicalize_file_name snprintf strdup strchr \
- strrchr strsignal])
+ strrchr strsignal fchmod fstat chmod])
AC_PROG_SED
[while :
do
diff --git a/src/libopts/makeshell.c b/src/libopts/makeshell.c
index a2b0a2e101..79edb7022b 100644
--- a/src/libopts/makeshell.c
+++ b/src/libopts/makeshell.c
@@ -2,7 +2,7 @@
/**
* \file makeshell.c
*
- * Time-stamp: "2012-01-29 19:01:07 bkorb"
+ * Time-stamp: "2012-04-07 09:03:16 bkorb"
*
* This module will interpret the options set in the tOptions
* structure and create a Bourne shell script capable of parsing them.
@@ -163,11 +163,11 @@ optionParseShell(tOptions * pOpts)
else if (ENABLED_GENSHELL_OPT(SHELL))
printf(SHOW_PROG_ENV, pOpts->pzPROGNAME);
- fflush(stdout);
#ifdef HAVE_FCHMOD
fchmod(STDOUT_FILENO, 0755);
#endif
fclose(stdout);
+
if (ferror(stdout)) {
fputs(zOutputFail, stderr);
exit(EXIT_FAILURE);
@@ -718,7 +718,7 @@ open_out(char const * pzFile)
*/
script_trailer = pzScan + END_MARK_LEN;
script_leader = pzData;
- } while (AG_FALSE);
+ } while (false);
if (freopen(pzFile, "w" FOPEN_BINARY_FLAG, stdout) != stdout) {
fprintf(stderr, zFreopenFail, errno, strerror(errno));
diff --git a/src/libopts/nested.c b/src/libopts/nested.c
index b7f15866e1..ed23fd2036 100644
--- a/src/libopts/nested.c
+++ b/src/libopts/nested.c
@@ -2,7 +2,7 @@
/**
* \file nested.c
*
- * Time-stamp: "2012-01-29 07:00:04 bkorb"
+ * Time-stamp: "2012-03-04 13:30:07 bkorb"
*
* Automated Options Nested Values module.
*
@@ -397,7 +397,8 @@ scan_name(char const* pzName, tOptionValue* pRes)
static char const*
scan_xml(char const* pzName, tOptionValue* pRes)
{
- size_t nameLen = 1, valLen = 0;
+ size_t nameLen;
+ size_t valLen;
char const* pzScan = ++pzName;
char const* pzVal;
tOptionValue valu;
@@ -425,8 +426,8 @@ scan_xml(char const* pzName, tOptionValue* pRes)
return pzName;
}
- pzScan++;
- while (IS_VALUE_NAME_CHAR((int)*pzScan)) { pzScan++; nameLen++; }
+ pzScan = SPN_VALUE_NAME_CHARS(pzName+1);
+ nameLen = pzScan - pzName;
if (nameLen > 64)
return NULL;
valu.valType = OPARG_TYPE_STRING;
@@ -434,7 +435,7 @@ scan_xml(char const* pzName, tOptionValue* pRes)
switch (*pzScan) {
case ' ':
case '\t':
- pzScan = parseAttributes(
+ pzScan = parse_attrs(
NULL, (char*)pzScan, &option_load_mode, &valu );
if (*pzScan == '>') {
pzScan++;
@@ -489,7 +490,7 @@ scan_xml(char const* pzName, tOptionValue* pRes)
}
valLen = (pzScan - pzVal);
pzScan += nameLen + 3;
- while (IS_WHITESPACE_CHAR(*pzScan)) pzScan++;
+ pzScan = SPN_WHITESPACE_CHARS(pzScan);
}
switch (valu.valType) {
diff --git a/src/libopts/parse-duration.c b/src/libopts/parse-duration.c
index e49060aec3..655a5e542b 100644
--- a/src/libopts/parse-duration.c
+++ b/src/libopts/parse-duration.c
@@ -54,14 +54,14 @@ typedef enum {
#define TIME_MAX 0x7FFFFFFF
/* Wrapper around strtoul that does not require a cast. */
-static unsigned long inline
+inline static unsigned long
str_const_to_ul (cch_t * str, cch_t ** ppz, int base)
{
return strtoul (str, (char **)ppz, base);
}
/* Wrapper around strtol that does not require a cast. */
-static long inline
+inline static long
str_const_to_l (cch_t * str, cch_t ** ppz, int base)
{
return strtol (str, (char **)ppz, base);
@@ -70,7 +70,7 @@ str_const_to_l (cch_t * str, cch_t ** ppz, int base)
/* Returns BASE + VAL * SCALE, interpreting BASE = BAD_TIME
with errno set as an error situation, and returning BAD_TIME
with errno set in an error situation. */
-static time_t inline
+inline static time_t
scale_n_add (time_t base, time_t val, int scale)
{
if (base == BAD_TIME)
diff --git a/src/libopts/pgusage.c b/src/libopts/pgusage.c
index 4dbbd53be1..7eae2b0f5b 100644
--- a/src/libopts/pgusage.c
+++ b/src/libopts/pgusage.c
@@ -2,7 +2,7 @@
/**
* \file pgusage.c
*
- * Time-stamp: "2012-01-29 16:09:14 bkorb"
+ * Time-stamp: "2012-02-28 19:49:32 bkorb"
*
* Automated Options Paged Usage module.
*
@@ -43,7 +43,7 @@
* This is disabled on platforms without a working fork() function.
=*/
void
-optionPagedUsage(tOptions* pOptions, tOptDesc* pOD)
+optionPagedUsage(tOptions * pOptions, tOptDesc * pOD)
{
#if ! defined(HAVE_WORKING_FORK)
if ((pOD->fOptState & OPTST_RESET) != 0)
@@ -66,11 +66,7 @@ optionPagedUsage(tOptions* pOptions, tOptDesc* pOD)
return;
my_pid = getpid();
-#ifdef HAVE_SNPRINTF
snprintf(zPageUsage, sizeof(zPageUsage), TMP_USAGE_FMT, (tAoUL)my_pid);
-#else
- sprintf(zPageUsage, TMP_USAGE_FMT, (tAoUL)my_pid);
-#endif
unlink(zPageUsage);
/*
@@ -110,11 +106,8 @@ optionPagedUsage(tOptions* pOptions, tOptDesc* pOD)
/*
* Page the file and remove it when done.
*/
-#ifdef HAVE_SNPRINTF
- snprintf(zPageUsage, sizeof(zPageUsage), PAGE_USAGE_FMT, pzPager, (tAoUL)my_pid);
-#else
- sprintf(zPageUsage, PAGE_USAGE_FMT, pzPager, (tAoUL)my_pid);
-#endif
+ snprintf(zPageUsage, sizeof(zPageUsage), PAGE_USAGE_FMT, pzPager,
+ (tAoUL)my_pid);
fclose(stderr);
dup2(STDOUT_FILENO, STDERR_FILENO);
diff --git a/src/libopts/proto.h b/src/libopts/proto.h
index 9f4bbff175..ae1a110a65 100644
--- a/src/libopts/proto.h
+++ b/src/libopts/proto.h
@@ -1,7 +1,7 @@
/* -*- buffer-read-only: t -*- vi: set ro:
*
* Prototypes for autoopts
- * Generated Sun Feb 26 11:08:49 PST 2012
+ * Generated Sun May 6 16:21:08 PDT 2012
*/
#ifndef AUTOOPTS_PROTO_H_GUARD
#define AUTOOPTS_PROTO_H_GUARD 1
@@ -36,7 +36,7 @@ regular_opts(tOptions * pOpts);
/*
* Extracted from check.c
*/
-LOCAL ag_bool
+LOCAL bool
is_consistent(tOptions * pOpts);
/*
@@ -46,11 +46,8 @@ LOCAL void
intern_file_load(tOptions* pOpts);
LOCAL char*
-parseAttributes(
- tOptions* pOpts,
- char* pzText,
- tOptionLoadMode* pMode,
- tOptionValue* pType );
+parse_attrs(tOptions * pOpts, char * pzText, tOptionLoadMode * pMode,
+ tOptionValue * pType);
LOCAL tSuccess
validate_struct(tOptions * pOpts, char const * pzProgram);
diff --git a/src/libopts/putshell.c b/src/libopts/putshell.c
index 2c9dde569d..d8e2d91aea 100644
--- a/src/libopts/putshell.c
+++ b/src/libopts/putshell.c
@@ -2,7 +2,7 @@
/**
* \file putshell.c
*
- * Time-stamp: "2012-02-12 09:14:49 bkorb"
+ * Time-stamp: "2012-03-31 13:14:18 bkorb"
*
* This module will interpret the options set in the tOptions
* structure and print them to standard out in a fashion that
@@ -142,7 +142,7 @@ print_membership(tOptions * pOpts, tOptDesc * pOD)
pz = pOD->optArg.argString + 7;
while (*pz != NUL) {
printf("typeset -x -i %s_", pOD->pz_NAME);
- while (IS_PLUS_N_SPACE_CHAR(*pz)) pz++;
+ pz = SPN_PLUS_N_SPACE_CHARS(pz);
for (;;) {
int ch = *(pz++);
@@ -182,11 +182,13 @@ print_stacked_arg(tOptions * pOpts, tOptDesc * pOD)
static void
print_reordering(tOptions * pOpts)
{
- int optIx;
+ unsigned int optIx;
fputs(set_dash, stdout);
- for (optIx = pOpts->curOptIdx; optIx < pOpts->origArgCt; optIx++) {
+ for (optIx = pOpts->curOptIdx;
+ optIx < pOpts->origArgCt;
+ optIx++) {
char* pzArg = pOpts->origArgVect[ optIx ];
diff --git a/src/libopts/reset.c b/src/libopts/reset.c
index 2345d51e3c..b8c5b9e274 100644
--- a/src/libopts/reset.c
+++ b/src/libopts/reset.c
@@ -69,7 +69,7 @@ optionResetEverything(tOptions * pOpts)
void
optionResetOpt( tOptions* pOpts, tOptDesc* pOD )
{
- static ag_bool reset_active = AG_FALSE;
+ static bool reset_active = false;
tOptState opt_state = OPTSTATE_INITIALIZER(DEFINED);
char const * pzArg = pOD->optArg.argString;
@@ -91,12 +91,12 @@ optionResetOpt( tOptions* pOpts, tOptDesc* pOD )
assert(0 == 1);
}
- reset_active = AG_TRUE;
+ reset_active = true;
if (pzArg[1] == NUL) {
if (*pzArg == '*') {
optionResetEverything(pOpts);
- reset_active = AG_FALSE;
+ reset_active = false;
return;
}
@@ -124,7 +124,7 @@ optionResetOpt( tOptions* pOpts, tOptDesc* pOD )
* Finally, clear the reset flag, too.
*/
optionReset(pOpts, opt_state.pOD);
- reset_active = AG_FALSE;
+ reset_active = false;
}
/*
* Local Variables:
diff --git a/src/libopts/save.c b/src/libopts/save.c
index a1357ffece..9e95056bab 100644
--- a/src/libopts/save.c
+++ b/src/libopts/save.c
@@ -2,7 +2,7 @@
/*
* \file save.c
*
- * Time-stamp: "2012-01-29 19:30:39 bkorb"
+ * Time-stamp: "2012-03-31 13:15:19 bkorb"
*
* This module's routines will take the currently set options and
* store them into an ".rc" file for re-interpretation the next
@@ -192,7 +192,7 @@ find_file_name(tOptions * pOpts, int * p_free_name)
break; /* found directory -- viz., "." */
}
- if ((dirchp - pzDir) >= sizeof(z))
+ if ((size_t)(dirchp - pzDir) >= sizeof(z))
goto bogus_name;
memcpy(z, pzDir, (size_t)(dirchp - pzDir));
@@ -201,7 +201,7 @@ find_file_name(tOptions * pOpts, int * p_free_name)
if ((stat(z, &stBuf) != 0) || ! S_ISDIR(stBuf.st_mode))
goto bogus_name;
stBuf.st_mode = S_IFREG; /* file within this directory */
- } while (0);
+ } while (false);
/*
* IF what we found was a directory,
diff --git a/src/libopts/stack.c b/src/libopts/stack.c
index bb962f78a2..094b2a1de3 100644
--- a/src/libopts/stack.c
+++ b/src/libopts/stack.c
@@ -2,7 +2,7 @@
/**
* \file stack.c
*
- * Time-stamp: "2012-01-29 09:42:12 bkorb"
+ * Time-stamp: "2012-03-31 13:16:41 bkorb"
*
* This is a special option processing routine that will save the
* argument to an option in a FIFO queue.
@@ -43,11 +43,11 @@
* Invoked for options that are equivalenced to stacked options.
=*/
void
-optionUnstackArg(
- tOptions* pOpts,
- tOptDesc* pOptDesc )
+optionUnstackArg(tOptions * pOpts, tOptDesc * pOptDesc)
{
- tArgList* pAL;
+ tArgList * pAL;
+
+ (void)pOpts;
if ((pOptDesc->fOptState & OPTST_RESET) != 0)
return;
@@ -230,12 +230,12 @@ addArgListEntry(void** ppAL, void* entry)
* Keep an entry-ordered list of option arguments.
=*/
void
-optionStackArg(
- tOptions* pOpts,
- tOptDesc* pOD )
+optionStackArg(tOptions * pOpts, tOptDesc * pOD)
{
char * pz;
+ (void)pOpts;
+
if ((pOD->fOptState & OPTST_RESET) != 0) {
tArgList* pAL = (void*)pOD->optCookie;
int ix;
diff --git a/src/libopts/streqvcmp.c b/src/libopts/streqvcmp.c
index d08f9c9dc1..54a063affc 100644
--- a/src/libopts/streqvcmp.c
+++ b/src/libopts/streqvcmp.c
@@ -2,7 +2,7 @@
/**
* \file streqvcmp.c
*
- * Time-stamp: "2012-01-29 19:03:24 bkorb"
+ * Time-stamp: "2012-03-31 13:17:39 bkorb"
*
* String Equivalence Comparison
*
@@ -192,8 +192,8 @@ streqvmap(char From, char To, int ct)
}
else {
- int chTo = (int)To & 0xFF;
- int chFrom = (int)From & 0xFF;
+ unsigned int chTo = (int)To & 0xFF;
+ unsigned int chFrom = (int)From & 0xFF;
do {
charmap[chFrom] = (unsigned char)chTo;
diff --git a/src/libopts/tokenize.c b/src/libopts/tokenize.c
index ca0ad53ab3..9563713e80 100644
--- a/src/libopts/tokenize.c
+++ b/src/libopts/tokenize.c
@@ -1,6 +1,6 @@
/*
* This file defines the string_tokenize interface
- * Time-stamp: "2012-01-29 19:02:51 bkorb"
+ * Time-stamp: "2012-03-04 13:23:50 bkorb"
*
* This file is part of AutoOpts, a companion to AutoGen.
* AutoOpts is free software.
@@ -128,7 +128,7 @@ alloc_token_list(char const * str)
* Trim leading white space. Use "ENOENT" and a NULL return to indicate
* an empty string was passed.
*/
- while (IS_WHITESPACE_CHAR(*str)) str++;
+ str = SPN_WHITESPACE_CHARS(str);
if (*str == NUL) goto enoent_res;
/*
@@ -137,17 +137,15 @@ alloc_token_list(char const * str)
* high and we'll squander the space for a few extra pointers.
*/
{
- cc_t* pz = (cc_t*)str;
+ char const * pz = str;
do {
max_token_ct++;
- while (! IS_WHITESPACE_CHAR(*++pz))
- if (*pz == NUL) goto found_nul;
- while (IS_WHITESPACE_CHAR(*pz)) pz++;
+ pz = BRK_WHITESPACE_CHARS(pz+1);
+ pz = SPN_WHITESPACE_CHARS(pz);
} while (*pz != NUL);
- found_nul:
- res = malloc(sizeof(*res) + (pz - (cc_t*)str)
+ res = malloc(sizeof(*res) + (pz - str)
+ (max_token_ct * sizeof(ch_t*)));
}
@@ -249,7 +247,7 @@ ao_string_tokenize(char const* str)
int ch = (ch_t)*str;
if (IS_WHITESPACE_CHAR(ch)) {
found_white_space:
- while (IS_WHITESPACE_CHAR(*++str)) ;
+ str = SPN_WHITESPACE_CHARS(str+1);
break;
}
diff --git a/src/libopts/usage.c b/src/libopts/usage.c
index 8634cfce53..ebdc46ae86 100644
--- a/src/libopts/usage.c
+++ b/src/libopts/usage.c
@@ -2,7 +2,7 @@
/*
* \file usage.c
*
- * Time-stamp: "2012-01-29 09:57:43 bkorb"
+ * Time-stamp: "2012-03-31 19:19:26 bkorb"
*
* This module implements the default usage procedure for
* Automated Options. It may be overridden, of course.
@@ -38,10 +38,10 @@
#define OPTPROC_L_N_S (OPTPROC_LONGOPT | OPTPROC_SHORTOPT)
/* = = = START-STATIC-FORWARD = = = */
-static inline ag_bool
+static inline bool
do_gnu_usage(tOptions * pOpts);
-static inline ag_bool
+static inline bool
skip_misuse_usage(tOptions * pOpts);
static void
@@ -55,14 +55,14 @@ prt_one_vendor(tOptions * pOptions, tOptDesc * pOD,
arg_types_t * pAT, char const * usefmt);
static void
-prt_vendor_opts(tOptions * pOpts, arg_types_t * pAT, char const * pOptTitle);
+prt_vendor_opts(tOptions * pOpts, char const * pOptTitle);
static void
prt_extd_usage(tOptions * pOpts, tOptDesc * pOD,
- arg_types_t * pAT, char const * pOptTitle);
+ char const * pOptTitle);
static void
-prt_ini_list(char const * const * papz, ag_bool * pInitIntro,
+prt_ini_list(char const * const * papz, bool * pInitIntro,
char const * pzRc, char const * pzPN);
static void
@@ -116,14 +116,14 @@ set_usage_flags(tOptions * opts, char const * flg_txt)
};
# undef _aof_
- ao_flags_t flg = 0;
+ unsigned int flg = (ao_flags_t)0;
if (flg_txt == NULL) {
flg_txt = getenv("AUTOOPTS_USAGE");
if (flg_txt == NULL) return;
}
- while (IS_WHITESPACE_CHAR(*flg_txt)) flg_txt++;
+ flg_txt = SPN_WHITESPACE_CHARS(flg_txt);
if (*flg_txt == NUL)
return;
@@ -147,8 +147,7 @@ set_usage_flags(tOptions * opts, char const * flg_txt)
return;
flg |= 1 << ix;
- flg_txt += fnt->fnm_len;
- while (IS_WHITESPACE_CHAR(*flg_txt)) flg_txt++;
+ flg_txt = SPN_WHITESPACE_CHARS(flg_txt + fnt->fnm_len);
if (*flg_txt == NUL)
break;
@@ -157,7 +156,7 @@ set_usage_flags(tOptions * opts, char const * flg_txt)
/*
* skip the comma and following white space
*/
- while (IS_WHITESPACE_CHAR(*++flg_txt)) ;
+ flg_txt = SPN_WHITESPACE_CHARS(flg_txt + 1);
if (*flg_txt == NUL)
break;
}
@@ -182,20 +181,20 @@ set_usage_flags(tOptions * opts, char const * flg_txt)
* Figure out if we should try to format usage text sort-of like
* the way many GNU programs do.
*/
-static inline ag_bool
+static inline bool
do_gnu_usage(tOptions * pOpts)
{
- return (pOpts->fOptSet & OPTPROC_GNUUSAGE) ? AG_TRUE : AG_FALSE;
+ return (pOpts->fOptSet & OPTPROC_GNUUSAGE) ? true : false;
}
/*
* Figure out if we should try to format usage text sort-of like
* the way many GNU programs do.
*/
-static inline ag_bool
+static inline bool
skip_misuse_usage(tOptions * pOpts)
{
- return (pOpts->fOptSet & OPTPROC_MISUSE) ? AG_TRUE : AG_FALSE;
+ return (pOpts->fOptSet & OPTPROC_MISUSE) ? true : false;
}
@@ -326,16 +325,16 @@ print_usage_details(tOptions * opts, int exit_code)
* over-ride this, providing the value of it is set to either "gnu" or
* "autoopts". This routine will @strong{not} return.
*
- * If "exitCode" is "EX_USAGE" (normally 64), then output will to to stdout
- * and the actual exit code will be "EXIT_SUCCESS".
+ * If "exitCode" is "AO_EXIT_REQ_USAGE" (normally 64), then output will to
+ * to stdout and the actual exit code will be "EXIT_SUCCESS".
=*/
void
optionUsage(tOptions * pOptions, int usage_exit_code)
{
- int exit_code =
- (usage_exit_code == EX_USAGE) ? EXIT_SUCCESS : usage_exit_code;
+ int exit_code = (usage_exit_code == AO_EXIT_REQ_USAGE)
+ ? EXIT_SUCCESS : usage_exit_code;
- displayEnum = AG_FALSE;
+ displayEnum = false;
/*
* Paged usage will preset option_usage_fp to an output file.
@@ -467,7 +466,7 @@ prt_one_vendor(tOptions * pOptions, tOptDesc * pOD,
default: goto bogus_desc;
}
- while (IS_WHITESPACE_CHAR(*pzArgType)) pzArgType++;
+ pzArgType = SPN_WHITESPACE_CHARS(pzArgType);
if (*pzArgType == NUL)
snprintf(z, sizeof(z), "%s", pOD->pz_Name);
else
@@ -477,7 +476,7 @@ prt_one_vendor(tOptions * pOptions, tOptDesc * pOD,
switch (OPTST_GET_ARGTYPE(pOD->fOptState)) {
case OPARG_TYPE_ENUMERATION:
case OPARG_TYPE_MEMBERSHIP:
- displayEnum = (pOD->pOptProc != NULL) ? AG_TRUE : displayEnum;
+ displayEnum = (pOD->pOptProc != NULL) ? true : displayEnum;
}
}
@@ -494,10 +493,9 @@ bogus_desc:
*
* @param pOptions the program option descriptor
* @param pOD the option descriptor
- * @param pAT names of the option argument types
*/
static void
-prt_vendor_opts(tOptions * pOpts, arg_types_t * pAT, char const * pOptTitle)
+prt_vendor_opts(tOptions * pOpts, char const * pOptTitle)
{
static unsigned int const not_vended_mask =
OPTST_NO_USAGE_MASK | OPTST_DOCUMENT;
@@ -535,7 +533,7 @@ prt_vendor_opts(tOptions * pOpts, arg_types_t * pAT, char const * pOptTitle)
continue;
prt_one_vendor(pOpts, pOD, &argTypes, vfmt);
- prt_extd_usage(pOpts, pOD, &argTypes, pOptTitle);
+ prt_extd_usage(pOpts, pOD, pOptTitle);
} while (pOD++, (--ct > 0));
}
@@ -549,11 +547,11 @@ prt_vendor_opts(tOptions * pOpts, arg_types_t * pAT, char const * pOptTitle)
*/
static void
prt_extd_usage(tOptions * pOpts, tOptDesc * pOD,
- arg_types_t * pAT, char const * pOptTitle)
+ char const * pOptTitle)
{
if ( ((pOpts->fOptSet & OPTPROC_VENDOR_OPT) != 0)
&& (pOD->optActualValue == VENDOR_OPTION_VALUE)) {
- prt_vendor_opts(pOpts, pAT, pOptTitle);
+ prt_vendor_opts(pOpts, pOptTitle);
return;
}
@@ -666,7 +664,7 @@ prt_extd_usage(tOptions * pOpts, tOptDesc * pOD,
* squishy, but important to tell users how to find these files.
*/
static void
-prt_ini_list(char const * const * papz, ag_bool * pInitIntro,
+prt_ini_list(char const * const * papz, bool * pInitIntro,
char const * pzRc, char const * pzPN)
{
char zPath[AG_PATH_MAX+1];
@@ -675,7 +673,7 @@ prt_ini_list(char const * const * papz, ag_bool * pInitIntro,
return;
fputs(zPresetIntro, option_usage_fp);
- *pInitIntro = AG_FALSE;
+ *pInitIntro = false;
for (;;) {
char const * pzPath = *(papz++);
@@ -792,7 +790,7 @@ prt_one_usage(tOptions * pOptions, tOptDesc * pOD, arg_types_t * pAT)
switch (OPTST_GET_ARGTYPE(pOD->fOptState)) {
case OPARG_TYPE_ENUMERATION:
case OPARG_TYPE_MEMBERSHIP:
- displayEnum = (pOD->pOptProc != NULL) ? AG_TRUE : displayEnum;
+ displayEnum = (pOD->pOptProc != NULL) ? true : displayEnum;
}
}
@@ -880,7 +878,7 @@ prt_opt_usage(tOptions * pOpts, int ex_code, char const * pOptTitle)
* THEN print all the extra info
*/
if (ex_code == EXIT_SUCCESS)
- prt_extd_usage(pOpts, pOD, &argTypes, pOptTitle);
+ prt_extd_usage(pOpts, pOD, pOptTitle);
} while (pOD++, optNo++, (--ct > 0));
@@ -895,7 +893,7 @@ prt_opt_usage(tOptions * pOpts, int ex_code, char const * pOptTitle)
static void
prt_prog_detail(tOptions* pOptions)
{
- ag_bool initIntro = AG_TRUE;
+ bool initIntro = true;
/*
* Display all the places we look for config files
diff --git a/src/libopts/value-type.h b/src/libopts/value-type.h
index bc5fc26d04..d91b0fe616 100644
--- a/src/libopts/value-type.h
+++ b/src/libopts/value-type.h
@@ -1,5 +1,5 @@
/*
- * Generated header for gperf generated source Sun Feb 26 11:08:41 PST 2012
+ * Generated header for gperf generated source Sun May 6 16:20:59 PDT 2012
* This file enumerates the list of names and declares the
* procedure for mapping string names to the enum value.
*/
diff --git a/src/libopts/xat-attribute.h b/src/libopts/xat-attribute.h
index 527cac260e..e12bd4a323 100644
--- a/src/libopts/xat-attribute.h
+++ b/src/libopts/xat-attribute.h
@@ -1,5 +1,5 @@
/*
- * Generated header for gperf generated source Sun Feb 26 11:08:41 PST 2012
+ * Generated header for gperf generated source Sun May 6 16:20:59 PDT 2012
* This file enumerates the list of names and declares the
* procedure for mapping string names to the enum value.
*/