From: Nick Bowler Date: Thu, 13 Apr 2023 01:11:38 +0000 (-0400) Subject: help_print_desc: Ensure newline is printed for empty description. X-Git-Url: https://git.draconx.ca/gitweb/dxcommon.git/commitdiff_plain/54f9ce81ef444d6e869f7b32066928ed82c17dff help_print_desc: Ensure newline is printed for empty description. Callers expect help_print_desc to always end on a new line, so that the next option can be printed at the start of a new line. Currently, however, this function does nothing for an empty description string, leading to incorrect output unless the option name was long enough that help_print_optstring took care of it. Add a special case to fix that up, and a new test case. --- diff --git a/src/help.c b/src/help.c index 43bb266..f96025f 100644 --- a/src/help.c +++ b/src/help.c @@ -1,5 +1,5 @@ /* - * Copyright © 2021-2022 Nick Bowler + * Copyright © 2021-2023 Nick Bowler * * Helper functions for formatting --help program output. * @@ -188,6 +188,9 @@ void help_print_desc(const struct option *opt, const char *s, int i, int w) if (opt) s = pgettext_expr(opt->name, s); + if (i && s[0] == '\0') + putchar('\n'); + for (; *s; w = 0) { const char *nl = strchr(s, '\n'); int n = (nl ? nl-s : -1); diff --git a/tests/functions.at b/tests/functions.at index cfd5408..d2006df 100644 --- a/tests/functions.at +++ b/tests/functions.at @@ -1,4 +1,4 @@ -dnl Copyright © 2015, 2021-2022 Nick Bowler +dnl Copyright © 2015, 2021-2023 Nick Bowler dnl dnl License WTFPL2: Do What The Fuck You Want To Public License, version 2. dnl This is free software: you are free to do what the fuck you want to. @@ -32,6 +32,7 @@ TEST_TAP_SIMPLE([64-bit unsigned unpacking], [packtestu64], [], [pack]) AT_BANNER([Help formatting functions]) AT_SETUP([help_print_desc]) +AT_KEYWORDS([help]) AT_SKIP_IF([test ! -x "$builddir/t/helpdesc"]) @@ -52,7 +53,19 @@ AT_CHECK(["$builddir/t/helpdesc" 0 0 10 5 30 20 40 40