X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=adu.c;h=b3ec80e2377c49e8df37ee2288530212a0e200fa;hb=8ea3d2b618aee3a4b0992e31ed2d94294273bd1f;hp=757054d168e80dbef3ce6c506d6e867fdf5d07dd;hpb=de525e7c5b6592b41f8681f919d5d53406801861;p=adu.git diff --git a/adu.c b/adu.c index 757054d..b3ec80e 100644 --- a/adu.c +++ b/adu.c @@ -1,3 +1,4 @@ +/** \file adu.c The main functions used by all modes of operation. */ #include "adu.h" #include /* readdir() */ #include @@ -178,7 +179,7 @@ static struct osl_column_description user_table_cols[] = { * The log function. * * \param ll Loglevel. - * \param fml Usual format string. + * \param fmt Usual format string. * * All XXX_LOG() macros use this function. */ @@ -468,18 +469,56 @@ static int check_args(void) return 1; } +static int print_complete_help_and_die(void) +{ + const char **line; + select_cmdline_parser_init(&select_conf); + + printf("%s-%s\n", CMDLINE_PARSER_PACKAGE, CMDLINE_PARSER_VERSION); + printf("%s\n\n", gengetopt_args_info_purpose); + printf("%s\n\n", gengetopt_args_info_usage); + + if (conf.help_given) + line = gengetopt_args_info_help; + else + line = gengetopt_args_info_detailed_help; + for (; *line; line++) + printf("%s\n", *line); + + if (conf.help_given) + line = select_args_info_help; + else + line = select_args_info_detailed_help; + printf("Select options:\n"); + for (; *line; line++) + printf("%s\n", *line); + + printf("Interactive commands:\n"); + print_interactive_help(); + exit(EXIT_FAILURE); +} + int main(int argc, char **argv) { int ret; struct cmdline_parser_params params = { .override = 0, .initialize = 1, - .check_required = 1, - .check_ambiguity = 1, - .print_errors = 1 + .check_required = 0, + .check_ambiguity = 0, + .print_errors = 0 }; + /* ignore errors and print complete help if --help was given */ + cmdline_parser_ext(argc, argv, &conf, ¶ms); + if (conf.help_given || conf.detailed_help_given) + print_complete_help_and_die(); + params.check_required = 1; + params.check_ambiguity = 1; + params.print_errors = 1; + ret = cmdline_parser_ext(argc, argv, &conf, ¶ms); + if (ret) + exit(EXIT_FAILURE); - cmdline_parser_ext(argc, argv, &conf, ¶ms); /* aborts on errors */ ret = check_args(); if (ret < 0) goto out;