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.
- * Copyright © 2021-2022 Nick Bowler
+ * Copyright © 2021-2023 Nick Bowler
*
* Helper functions for formatting --help program output.
*
*
* Helper functions for formatting --help program output.
*
if (opt)
s = pgettext_expr(opt->name, s);
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);
for (; *s; w = 0) {
const char *nl = strchr(s, '\n');
int n = (nl ? nl-s : -1);
-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.
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.
AT_BANNER([Help formatting functions])
AT_SETUP([help_print_desc])
AT_BANNER([Help formatting functions])
AT_SETUP([help_print_desc])
AT_SKIP_IF([test ! -x "$builddir/t/helpdesc"])
AT_SKIP_IF([test ! -x "$builddir/t/helpdesc"])
+AT_SETUP([help_print_desc (empty description)])
+AT_KEYWORDS([help])
+
+AT_SKIP_IF([test ! -x "$builddir/t/helpdesc"])
+
+AT_CHECK(["$builddir/t/helpdesc" 0 0 0 20 </dev/null])
+AT_CHECK(["$builddir/t/helpdesc" 1 20 </dev/null], [0], [
+])
+
+AT_CLEANUP
+
AT_SETUP([help_print_optstring])
AT_SETUP([help_print_optstring])
AT_SKIP_IF([test ! -x "$builddir/t/helpopt"])
AT_SKIP_IF([test ! -x "$builddir/t/helpopt"])
AT_CLEANUP
AT_SETUP([help_print_optstring (getopt_long_only)])
AT_CLEANUP
AT_SETUP([help_print_optstring (getopt_long_only)])
AT_SKIP_IF([test ! -x "$builddir/t/helpopt2"])
AT_SKIP_IF([test ! -x "$builddir/t/helpopt2"])