diff --git a/apps/openssl.c b/apps/openssl.c index 0f7176fd723e27e359063eee197f61b77d7ec81d..4f4175c4a0261c813f177867984a31314245703e 100644 --- a/apps/openssl.c +++ b/apps/openssl.c @@ -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; }