X-Git-Url: https://git.openssl.org/?a=blobdiff_plain;f=apps%2Fversion.c;h=0e0d9e73875132b56c92e655dc0cd6b1bfb53b63;hb=54dbf42398e23349b59f258a3dd60387bbc5ba13;hp=8807d4c7b0091367bd6f037526bbb50780791b77;hpb=0f113f3ee4d629ef9a4a30911b22b224772085e5;p=openssl.git diff --git a/apps/version.c b/apps/version.c index 8807d4c7b0..0e0d9e7387 100644 --- a/apps/version.c +++ b/apps/version.c @@ -1,4 +1,3 @@ -/* apps/version.c */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -132,58 +131,84 @@ # include #endif -#undef PROG -#define PROG version_main +typedef enum OPTION_choice { + OPT_ERR = -1, OPT_EOF = 0, OPT_HELP, + OPT_B, OPT_D, OPT_E, OPT_F, OPT_O, OPT_P, OPT_V, OPT_A +} OPTION_CHOICE; -int MAIN(int, char **); +OPTIONS version_options[] = { + {"help", OPT_HELP, '-', "Display this summary"}, + {"a", OPT_A, '-', "Show all data"}, + {"b", OPT_B, '-', "Show build date"}, + {"d", OPT_D, '-', "Show configuration directory"}, + {"e", OPT_E, '-', "Show engines directory"}, + {"f", OPT_F, '-', "Show compiler flags used"}, + {"o", OPT_O, '-', "Show some internal datatype options"}, + {"p", OPT_P, '-', "Show target build platform"}, + {"v", OPT_V, '-', "Show library version"}, + {NULL} +}; -int MAIN(int argc, char **argv) +int version_main(int argc, char **argv) { - int i, ret = 0; + int ret = 1, dirty = 0; int cflags = 0, version = 0, date = 0, options = 0, platform = 0, dir = 0; + int engdir = 0; + char *prog; + OPTION_CHOICE o; - apps_startup(); - - if (bio_err == NULL) - if ((bio_err = BIO_new(BIO_s_file())) != NULL) - BIO_set_fp(bio_err, stderr, BIO_NOCLOSE | BIO_FP_TEXT); - - if (argc == 1) - version = 1; - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-v") == 0) - version = 1; - else if (strcmp(argv[i], "-b") == 0) - date = 1; - else if (strcmp(argv[i], "-f") == 0) - cflags = 1; - else if (strcmp(argv[i], "-o") == 0) - options = 1; - else if (strcmp(argv[i], "-p") == 0) - platform = 1; - else if (strcmp(argv[i], "-d") == 0) - dir = 1; - else if (strcmp(argv[i], "-a") == 0) - date = version = cflags = options = platform = dir = 1; - else { - BIO_printf(bio_err, "usage:version -[avbofpd]\n"); - ret = 1; + prog = opt_init(argc, argv, version_options); + while ((o = opt_next()) != OPT_EOF) { + switch (o) { + case OPT_EOF: + case OPT_ERR: + BIO_printf(bio_err, "%s: Use -help for summary.\n", prog); goto end; + case OPT_HELP: + opt_help(version_options); + ret = 0; + goto end; + case OPT_B: + dirty = date = 1; + break; + case OPT_D: + dirty = dir = 1; + break; + case OPT_E: + dirty = engdir = 1; + break; + case OPT_F: + dirty = cflags = 1; + break; + case OPT_O: + dirty = options = 1; + break; + case OPT_P: + dirty = platform = 1; + break; + case OPT_V: + dirty = version = 1; + break; + case OPT_A: + cflags = version = date = platform = dir = 1; + break; } } + if (!dirty) + version = 1; if (version) { - if (SSLeay() == SSLEAY_VERSION_NUMBER) { - printf("%s\n", SSLeay_version(SSLEAY_VERSION)); + if (OpenSSL_version_num() == OPENSSL_VERSION_NUMBER) { + printf("%s\n", OpenSSL_version(OPENSSL_VERSION)); } else { printf("%s (Library: %s)\n", - OPENSSL_VERSION_TEXT, SSLeay_version(SSLEAY_VERSION)); + OPENSSL_VERSION_TEXT, OpenSSL_version(OPENSSL_VERSION)); } } if (date) - printf("%s\n", SSLeay_version(SSLEAY_BUILT_ON)); + printf("%s\n", OpenSSL_version(OPENSSL_BUILT_ON)); if (platform) - printf("%s\n", SSLeay_version(SSLEAY_PLATFORM)); + printf("%s\n", OpenSSL_version(OPENSSL_PLATFORM)); if (options) { printf("options: "); printf("%s ", BN_options()); @@ -205,10 +230,12 @@ int MAIN(int argc, char **argv) printf("\n"); } if (cflags) - printf("%s\n", SSLeay_version(SSLEAY_CFLAGS)); + printf("%s\n", OpenSSL_version(OPENSSL_CFLAGS)); if (dir) - printf("%s\n", SSLeay_version(SSLEAY_DIR)); + printf("%s\n", OpenSSL_version(OPENSSL_DIR)); + if (engdir) + printf("%s\n", OpenSSL_version(OPENSSL_ENGINES_DIR)); + ret = 0; end: - apps_shutdown(); - OPENSSL_EXIT(ret); + return (ret); }