diff options
| author | jsing <> | 2014-08-30 15:59:43 +0000 |
|---|---|---|
| committer | jsing <> | 2014-08-30 15:59:43 +0000 |
| commit | 9c7115b7ab2fa3c3ee53653676df013b71fd364d (patch) | |
| tree | 99e0f0d46331bff9808ea0119c92b52e9ce8221f /src | |
| parent | 3016f0d916cff2fa5c93e769e25ded6c34e7fb73 (diff) | |
| download | openbsd-9c7115b7ab2fa3c3ee53653676df013b71fd364d.tar.gz openbsd-9c7115b7ab2fa3c3ee53653676df013b71fd364d.tar.bz2 openbsd-9c7115b7ab2fa3c3ee53653676df013b71fd364d.zip | |
Convert openssl(1) version to new option/usage handling.
Diffstat (limited to 'src')
| -rw-r--r-- | src/usr.bin/openssl/version.c | 124 |
1 files changed, 90 insertions, 34 deletions
diff --git a/src/usr.bin/openssl/version.c b/src/usr.bin/openssl/version.c index afad0c3e11..ee4792b249 100644 --- a/src/usr.bin/openssl/version.c +++ b/src/usr.bin/openssl/version.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: version.c,v 1.1 2014/08/26 17:47:25 jsing Exp $ */ | 1 | /* $OpenBSD: version.c,v 1.2 2014/08/30 15:59:43 jsing Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -135,40 +135,97 @@ | |||
| 135 | #include <openssl/rc4.h> | 135 | #include <openssl/rc4.h> |
| 136 | #endif | 136 | #endif |
| 137 | 137 | ||
| 138 | static struct { | ||
| 139 | int cflags; | ||
| 140 | int date; | ||
| 141 | int dir; | ||
| 142 | int options; | ||
| 143 | int platform; | ||
| 144 | int version; | ||
| 145 | } version_config; | ||
| 146 | |||
| 147 | static int | ||
| 148 | version_all_opts(struct option *opt, char *arg) | ||
| 149 | { | ||
| 150 | version_config.cflags = 1; | ||
| 151 | version_config.date = 1; | ||
| 152 | version_config.dir= 1; | ||
| 153 | version_config.options = 1; | ||
| 154 | version_config.platform = 1; | ||
| 155 | version_config.version = 1; | ||
| 156 | |||
| 157 | return (0); | ||
| 158 | } | ||
| 159 | |||
| 160 | static struct option version_options[] = { | ||
| 161 | { | ||
| 162 | .name = "a", | ||
| 163 | .desc = "All information (same as setting all other flags)", | ||
| 164 | .type = OPTION_FUNC, | ||
| 165 | .func = version_all_opts, | ||
| 166 | }, | ||
| 167 | { | ||
| 168 | .name = "b", | ||
| 169 | .desc = "Date the current version of OpenSSL was built", | ||
| 170 | .type = OPTION_FLAG, | ||
| 171 | .opt.flag = &version_config.date, | ||
| 172 | }, | ||
| 173 | { | ||
| 174 | .name = "d", | ||
| 175 | .desc = "OPENSSLDIR value", | ||
| 176 | .type = OPTION_FLAG, | ||
| 177 | .opt.flag = &version_config.dir, | ||
| 178 | }, | ||
| 179 | { | ||
| 180 | .name = "f", | ||
| 181 | .desc = "Compilation flags", | ||
| 182 | .type = OPTION_FLAG, | ||
| 183 | .opt.flag = &version_config.cflags, | ||
| 184 | }, | ||
| 185 | { | ||
| 186 | .name = "o", | ||
| 187 | .desc = "Option information", | ||
| 188 | .type = OPTION_FLAG, | ||
| 189 | .opt.flag = &version_config.options, | ||
| 190 | }, | ||
| 191 | { | ||
| 192 | .name = "p", | ||
| 193 | .desc = "Platform settings", | ||
| 194 | .type = OPTION_FLAG, | ||
| 195 | .opt.flag = &version_config.platform, | ||
| 196 | }, | ||
| 197 | { | ||
| 198 | .name = "v", | ||
| 199 | .desc = "Current OpenSSL version", | ||
| 200 | .type = OPTION_FLAG, | ||
| 201 | .opt.flag = &version_config.version, | ||
| 202 | }, | ||
| 203 | {}, | ||
| 204 | }; | ||
| 205 | |||
| 206 | static void | ||
| 207 | version_usage(void) | ||
| 208 | { | ||
| 209 | fprintf(stderr, "usage: version [-abdfopv]\n"); | ||
| 210 | options_usage(version_options); | ||
| 211 | } | ||
| 212 | |||
| 138 | int version_main(int, char **); | 213 | int version_main(int, char **); |
| 139 | 214 | ||
| 140 | int | 215 | int |
| 141 | version_main(int argc, char **argv) | 216 | version_main(int argc, char **argv) |
| 142 | { | 217 | { |
| 143 | int i, ret = 0; | 218 | memset(&version_config, 0, sizeof(version_config)); |
| 144 | int cflags = 0, version = 0, date = 0, options = 0, platform = 0, | ||
| 145 | dir = 0; | ||
| 146 | 219 | ||
| 147 | if (argc == 1) | 220 | if (options_parse(argc, argv, version_options, NULL) != 0) { |
| 148 | version = 1; | 221 | version_usage(); |
| 149 | for (i = 1; i < argc; i++) { | 222 | return (1); |
| 150 | if (strcmp(argv[i], "-v") == 0) | ||
| 151 | version = 1; | ||
| 152 | else if (strcmp(argv[i], "-b") == 0) | ||
| 153 | date = 1; | ||
| 154 | else if (strcmp(argv[i], "-f") == 0) | ||
| 155 | cflags = 1; | ||
| 156 | else if (strcmp(argv[i], "-o") == 0) | ||
| 157 | options = 1; | ||
| 158 | else if (strcmp(argv[i], "-p") == 0) | ||
| 159 | platform = 1; | ||
| 160 | else if (strcmp(argv[i], "-d") == 0) | ||
| 161 | dir = 1; | ||
| 162 | else if (strcmp(argv[i], "-a") == 0) | ||
| 163 | date = version = cflags = options = platform = dir = 1; | ||
| 164 | else { | ||
| 165 | BIO_printf(bio_err, "usage:version -[avbofpd]\n"); | ||
| 166 | ret = 1; | ||
| 167 | goto end; | ||
| 168 | } | ||
| 169 | } | 223 | } |
| 170 | 224 | ||
| 171 | if (version) { | 225 | if (argc == 1) |
| 226 | version_config.version = 1; | ||
| 227 | |||
| 228 | if (version_config.version) { | ||
| 172 | if (SSLeay() == SSLEAY_VERSION_NUMBER) { | 229 | if (SSLeay() == SSLEAY_VERSION_NUMBER) { |
| 173 | printf("%s\n", SSLeay_version(SSLEAY_VERSION)); | 230 | printf("%s\n", SSLeay_version(SSLEAY_VERSION)); |
| 174 | } else { | 231 | } else { |
| @@ -177,11 +234,11 @@ version_main(int argc, char **argv) | |||
| 177 | SSLeay_version(SSLEAY_VERSION)); | 234 | SSLeay_version(SSLEAY_VERSION)); |
| 178 | } | 235 | } |
| 179 | } | 236 | } |
| 180 | if (date) | 237 | if (version_config.date) |
| 181 | printf("%s\n", SSLeay_version(SSLEAY_BUILT_ON)); | 238 | printf("%s\n", SSLeay_version(SSLEAY_BUILT_ON)); |
| 182 | if (platform) | 239 | if (version_config.platform) |
| 183 | printf("%s\n", SSLeay_version(SSLEAY_PLATFORM)); | 240 | printf("%s\n", SSLeay_version(SSLEAY_PLATFORM)); |
| 184 | if (options) { | 241 | if (version_config.options) { |
| 185 | printf("options: "); | 242 | printf("options: "); |
| 186 | printf("%s ", BN_options()); | 243 | printf("%s ", BN_options()); |
| 187 | #ifndef OPENSSL_NO_RC4 | 244 | #ifndef OPENSSL_NO_RC4 |
| @@ -198,11 +255,10 @@ version_main(int argc, char **argv) | |||
| 198 | #endif | 255 | #endif |
| 199 | printf("\n"); | 256 | printf("\n"); |
| 200 | } | 257 | } |
| 201 | if (cflags) | 258 | if (version_config.cflags) |
| 202 | printf("%s\n", SSLeay_version(SSLEAY_CFLAGS)); | 259 | printf("%s\n", SSLeay_version(SSLEAY_CFLAGS)); |
| 203 | if (dir) | 260 | if (version_config.dir) |
| 204 | printf("%s\n", SSLeay_version(SSLEAY_DIR)); | 261 | printf("%s\n", SSLeay_version(SSLEAY_DIR)); |
| 205 | end: | ||
| 206 | 262 | ||
| 207 | return (ret); | 263 | return (0); |
| 208 | } | 264 | } |
