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");
