Add --missing-help to list command
authorRich Salz <rsalz@openssl.org>
Sat, 10 Sep 2016 19:46:48 +0000 (15:46 -0400)
committerRich Salz <rsalz@openssl.org>
Tue, 13 Sep 2016 14:14:01 +0000 (10:14 -0400)
Reviewed-by: Andy Polyakov <appro@openssl.org>
apps/openssl.c

index 0f7176f..4f4175c 100644 (file)
@@ -296,12 +296,30 @@ static void list_md_fn(const EVP_MD *m,
     }
 }
 
+static void list_missing_help(void)
+{
+    const FUNCTION *fp;
+    const OPTIONS *o;
+
+    for (fp = functions; fp->name != NULL; fp++) {
+        if ((o = fp->help) == NULL) {
+            BIO_printf(bio_out, "%s *\n", fp->name);
+            continue;
+        }
+        for ( ; o->name != NULL; o++) {
+            if (o->helpstr == NULL)
+                BIO_printf(bio_out, "%s %s\n", fp->name, o->name);
+        }
+    }
+}
+
+
 /* Unified enum for help and list commands. */
 typedef enum HELPLIST_CHOICE {
     OPT_ERR = -1, OPT_EOF = 0, OPT_HELP,
     OPT_COMMANDS, OPT_DIGEST_COMMANDS,
     OPT_DIGEST_ALGORITHMS, OPT_CIPHER_COMMANDS, OPT_CIPHER_ALGORITHMS,
-    OPT_PK_ALGORITHMS, OPT_DISABLED
+    OPT_PK_ALGORITHMS, OPT_DISABLED, OPT_MISSING_HELP
 } HELPLIST_CHOICE;
 
 OPTIONS list_options[] = {
@@ -318,6 +336,8 @@ OPTIONS list_options[] = {
      "List of public key algorithms"},
     {"disabled", OPT_DISABLED, '-',
      "List of disabled features"},
+    {"missing-help", OPT_MISSING_HELP, '-',
+     "List missing detailed help strings"},
     {NULL}
 };
 
@@ -358,6 +378,9 @@ int list_main(int argc, char **argv)
         case OPT_DISABLED:
             list_disabled();
             break;
+        case OPT_MISSING_HELP:
+            list_missing_help();
+            break;
         }
         done = 1;
     }