summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsing <>2014-12-28 16:10:33 +0000
committerjsing <>2014-12-28 16:10:33 +0000
commit5b99ab3aef9652baafedf8a5e0aafa1fca73aabf (patch)
tree39295f1f8ee3513aebeed37b6b5579ce2d416ba5
parentfe0fe7f2cd49b1ebffa44f3145c8c4e9254f9700 (diff)
downloadopenbsd-5b99ab3aef9652baafedf8a5e0aafa1fca73aabf.tar.gz
openbsd-5b99ab3aef9652baafedf8a5e0aafa1fca73aabf.tar.bz2
openbsd-5b99ab3aef9652baafedf8a5e0aafa1fca73aabf.zip
Teach option parsing that a single hyphen denotes the end of named options
(as currently only implemented by some of the openssl(1) applications).
-rw-r--r--src/usr.bin/openssl/apps.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/usr.bin/openssl/apps.c b/src/usr.bin/openssl/apps.c
index 7c774e4077..4640519cf1 100644
--- a/src/usr.bin/openssl/apps.c
+++ b/src/usr.bin/openssl/apps.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: apps.c,v 1.18 2014/12/28 15:48:52 jsing Exp $ */ 1/* $OpenBSD: apps.c,v 1.19 2014/12/28 16:10:33 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2014 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -2271,8 +2271,20 @@ options_parse(int argc, char **argv, struct option *opts, char **unnamed,
2271 continue; 2271 continue;
2272 } 2272 }
2273 2273
2274 if (*p == '\0') /* XXX - end of named options. */ 2274 /* End of named options (single hyphen). */
2275 if (*p == '\0') {
2276 if (++i >= argc)
2277 goto done;
2278 if (argsused != NULL)
2279 goto done;
2280 if (unnamed != NULL && i == argc - 1) {
2281 if (*unnamed != NULL)
2282 goto toomany;
2283 *unnamed = argv[i];
2284 continue;
2285 }
2275 goto unknown; 2286 goto unknown;
2287 }
2276 2288
2277 for (j = 0; opts[j].name != NULL; j++) { 2289 for (j = 0; opts[j].name != NULL; j++) {
2278 opt = &opts[j]; 2290 opt = &opts[j];