summaryrefslogtreecommitdiff
path: root/help.c
diff options
context:
space:
mode:
Diffstat (limited to 'help.c')
-rw-r--r--help.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/help.c b/help.c
index 99097db8..311a4320 100644
--- a/help.c
+++ b/help.c
@@ -128,12 +128,32 @@ static int do_usage_one_command(const char * const *usagestr,
unsigned int flags, FILE *outf)
{
int pad = 4;
+ const char *prefix = "usage: ";
+ const char *pad_listing = " ";
if (!usagestr || !*usagestr)
return -1;
- fprintf(outf, "%s%s", (flags & USAGE_LISTING) ? " " : "usage: ",
- *usagestr++);
+ if (flags & USAGE_LISTING)
+ prefix = pad_listing;
+
+ fputs(prefix, outf);
+ if (strchr(*usagestr, '\n') == NULL) {
+ fputs(*usagestr, outf);
+ } else {
+ const char *c = *usagestr;
+ const char *nprefix = " ";
+
+ if (flags & USAGE_LISTING)
+ nprefix = pad_listing;
+
+ for (c = *usagestr; *c; c++) {
+ fputc(*c, outf);
+ if (*c == '\n')
+ fputs(nprefix, outf);
+ }
+ }
+ usagestr++;
/* a short one-line description (mandatory) */
if ((flags & USAGE_SHORT) == 0)