From cc49a3c67454ea168c8a50a03e860c48d17aca41 Mon Sep 17 00:00:00 2001 From: Andreas Eversberg Date: Thu, 21 May 2020 12:14:20 +0200 Subject: [PATCH] Options with multiple parameters are now correctly shown at debug message --- src/liboptions/options.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/liboptions/options.c b/src/liboptions/options.c index f9cec12..171f257 100644 --- a/src/liboptions/options.c +++ b/src/liboptions/options.c @@ -154,6 +154,7 @@ done: int options_command_line(int argc, char *argv[], int (*handle_options)(int short_option, int argi, char *argv[])) { option_t *option; + char params[256]; int argi, i; int rc; @@ -167,9 +168,12 @@ int options_command_line(int argc, char *argv[], int (*handle_options)(int short /* -x */ for (option = option_head; option; option = option->next) { if (argv[argi][1] == option->short_option) { - if (option->parameter_count && argi + option->parameter_count < argc) - PDEBUG(DOPTIONS, DEBUG_INFO, "Command line option '%s' ('--%s'), parameter '%s'\n", argv[argi], option->long_option, argv[argi + 1]); - else + if (option->parameter_count && argi + option->parameter_count < argc) { + params[0] = '\0'; + for (i = 0; i < option->parameter_count; i++) + sprintf(strchr(params, '\0'), " '%s'", argv[argi + 1 + i]); + PDEBUG(DOPTIONS, DEBUG_INFO, "Command line option '%s' ('--%s'), parameter%s\n", argv[argi], option->long_option, params); + } else PDEBUG(DOPTIONS, DEBUG_INFO, "Command line option '%s' ('--%s')\n", argv[argi], option->long_option); break; } @@ -178,9 +182,12 @@ int options_command_line(int argc, char *argv[], int (*handle_options)(int short /* --xxxxxx */ for (option = option_head; option; option = option->next) { if (!strcmp(argv[argi] + 2, option->long_option)) { - if (option->parameter_count && argi + option->parameter_count < argc) - PDEBUG(DOPTIONS, DEBUG_INFO, "Command line option '%s', parameter '%s'\n", argv[argi], argv[argi + 1]); - else + if (option->parameter_count && argi + option->parameter_count < argc) { + params[0] = '\0'; + for (i = 0; i < option->parameter_count; i++) + sprintf(strchr(params, '\0'), " '%s'", argv[argi + 1 + i]); + PDEBUG(DOPTIONS, DEBUG_INFO, "Command line option '%s', parameter%s\n", argv[argi], params); + } else PDEBUG(DOPTIONS, DEBUG_INFO, "Command line option '%s'\n", argv[argi]); break; }