+/** \file adu.c The main functions used by all modes of operation. */
#include "adu.h"
#include <dirent.h> /* readdir() */
#include <pwd.h>
+#include "format.h"
+#include "select.h"
#include "gcc-compat.h"
#include "cmdline.h"
* The log function.
*
* \param ll Loglevel.
- * \param fml Usual format string.
+ * \param fmt Usual format string.
*
* All XXX_LOG() macros use this function.
*/
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;