Revert "Use Linux man page formatting in arg_show_usage()"
This reverts commit 267e9b9dba4f45bbd1482c919df664c0eacdb940.
Reason for revert: I have a simpler solution.
Change-Id: Ie95758c5257775d92183efa1074d9550289f2e04
diff --git a/common/args.c b/common/args.c
index 7d110cc..068c8d2 100644
--- a/common/args.c
+++ b/common/args.c
@@ -201,37 +201,30 @@
return new_argv;
}
-// Use the formatting of the Linux man pages for cp, ls, mv, rm, etc.
void arg_show_usage(FILE *fp, const struct arg_def *const *defs) {
+ char option_text[40] = { 0 };
+
for (; *defs; defs++) {
const struct arg_def *def = *defs;
char *short_val = def->has_val ? " <arg>" : "";
char *long_val = def->has_val ? "=<arg>" : "";
- // Options start after 7 spaces.
- fputs(" ", fp);
- int n = 0;
if (def->short_name && def->long_name) {
- n = fprintf(fp, "-%s%s, --%s%s", def->short_name, short_val,
- def->long_name, long_val);
- } else if (def->short_name)
- n = fprintf(fp, "-%s%s", def->short_name, short_val);
- else if (def->long_name)
- n = fprintf(fp, "--%s%s", def->long_name, long_val);
+ char *comma = def->has_val ? "," : ", ";
- // Descriptions start after 14 spaces. If an option is shorter than 7
- // characters, its description starts on the same line.
- if (n < 7)
- for (int i = 0; i < 7 - n; i++) fputc(' ', fp);
- else
- fputs("\n ", fp);
- fprintf(fp, "%s\n", def->desc);
+ snprintf(option_text, 37, "-%s%s%s --%s%6s", def->short_name, short_val,
+ comma, def->long_name, long_val);
+ } else if (def->short_name)
+ snprintf(option_text, 37, "-%s%s", def->short_name, short_val);
+ else if (def->long_name)
+ snprintf(option_text, 37, " --%s%s", def->long_name, long_val);
+
+ fprintf(fp, " %-37s\t%s\n", option_text, def->desc);
if (def->enums) {
const struct arg_enum_list *listptr;
- // Enums start after 16 spaces.
- fputs(" ", fp);
+ fprintf(fp, " %-37s\t ", "");
for (listptr = def->enums; listptr->name; listptr++)
fprintf(fp, "%s%s", listptr->name, listptr[1].name ? ", " : "\n");