+2010-02-05 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Argp: fix recognition of short alias options.
+
+ * lib/argp-parse.c (convert_options): Fix improper use of
+ `|' between character values.
+ * tests/test-argp.c (group1_option): New alias option
+ --read (-r).
+ (group1_parser): Special handling for 'r'.
+ (test15): New test case.
+ (test_fun): Add test15.
+ * tests/test-argp-2.sh: Update expected --help and --usage
+ outputs.
+
2010-02-05 Sergey Poznyakoff <gray@gnu.org.ua>
* tests/test-argp.c: Fix indentation.
* tests/test-xalloc-die.sh: Use $EXEEXT.
2010-01-12 Simon Josefsson <simon@josefsson.org>
- Bruno Haible <bruno@clisp.org>
+ Bruno Haible <bruno@clisp.org>
getlogin, getlogin_r: Avoid test failure.
* tests/test-getlogin.c: Include <stdio.h>.
values (the sign of the lower bits is preserved
however)... */
cvt->long_end->val =
- ((opt->key | real->key) & USER_MASK)
+ ((opt->key ? opt->key : real->key) & USER_MASK)
+ (((group - cvt->parser->groups) + 1) << USER_BITS);
/* Keep the LONG_OPTS list terminated. */
####
# Test --usage output
cat > $TMP <<EOT
-Usage: test-argp [-tvCSOlp?V] [-f FILE] [-o[ARG]] [--test] [--file=FILE]
- [--input=FILE] [--verbose] [--cantiga] [--sonet] [--option]
- [--optional[=ARG]] [--limerick] [--poem] [--help] [--usage]
- [--version] ARGS...
+Usage: test-argp [-tvCSOlp?V] [-f FILE] [-r FILE] [-o[ARG]] [--test]
+ [--file=FILE] [--input=FILE] [--read=FILE] [--verbose] [--cantiga]
+ [--sonet] [--option] [--optional[=ARG]] [--limerick] [--poem]
+ [--help] [--usage] [--version] ARGS...
EOT
./test-argp$EXEEXT --usage | func_compare || ERR=1
# Test working usage-indent format
cat > $TMP <<EOT
-Usage: test-argp [-tvCSOlp?V] [-f FILE] [-o[ARG]] [--test] [--file=FILE]
-[--input=FILE] [--verbose] [--cantiga] [--sonet] [--option] [--optional[=ARG]]
-[--limerick] [--poem] [--help] [--usage] [--version] ARGS...
+Usage: test-argp [-tvCSOlp?V] [-f FILE] [-r FILE] [-o[ARG]] [--test]
+[--file=FILE] [--input=FILE] [--read=FILE] [--verbose] [--cantiga] [--sonet]
+[--option] [--optional[=ARG]] [--limerick] [--poem] [--help] [--usage]
+[--version] ARGS...
EOT
ARGP_HELP_FMT='usage-indent=0' ./test-argp$EXEEXT --usage | func_compare || ERR=1
-t, --test
Option Group 1
- -f, --file=FILE, --input=FILE Option with a mandatory argument
+ -f, -r, --file=FILE, --input=FILE, --read=FILE
+ Option with a mandatory argument
-v, --verbose Simple option without arguments
Option Group 1.1
int test;
int verbose;
char *file;
+ int read;
char *hidden;
int opt;
char *optional;
{ "verbose", 'v', NULL, 0, "Simple option without arguments", 1 },
{ "file", 'f', "FILE", 0, "Option with a mandatory argument", 1 },
{ "input", 0, NULL, OPTION_ALIAS, NULL, 1 },
+ { "read", 'r', NULL, OPTION_ALIAS, NULL, 1 },
{ "hidden", 'H', "FILE", OPTION_HIDDEN, "Hidden option", 1 },
{ NULL, 0, NULL, 0, NULL, 0 }
};
args->verbose++;
break;
+ case 'r':
+ args->read = 1;
+ /* fall through */
case 'f':
args->file = arg;
break;
fail ("option not processed");
}
+void
+test15 (struct argp *argp)
+{
+ INIT_TEST2 (1, "-r", "FILE");
+ test_file (argp, argc, argv, &test_args);
+ if (!test_args.read)
+ fail ("short alias not recognized properly");
+}
typedef void (*test_fp) (struct argp *argp);
test1, test2, test3, test4,
test5, test6, test7, test8,
test9, test10, test11, test12,
- test13, test14,
+ test13, test14, test15,
NULL
};