diff options
author | Martin Willi <martin@strongswan.org> | 2009-09-15 10:20:22 +0200 |
---|---|---|
committer | Martin Willi <martin@strongswan.org> | 2009-09-15 10:20:22 +0200 |
commit | 4fdb9f6f74435948143ae60397beb2eb2e02f804 (patch) | |
tree | 1d7a1149ff58cdd407033041064742e5287a6fa7 /src/pki | |
parent | 012f62a820f0076315e27308adda01ea54cb9f9d (diff) | |
download | strongswan-4fdb9f6f74435948143ae60397beb2eb2e02f804.tar.bz2 strongswan-4fdb9f6f74435948143ae60397beb2eb2e02f804.tar.xz |
pki tool supports single letter short options
Diffstat (limited to 'src/pki')
-rw-r--r-- | src/pki/command.c | 36 | ||||
-rw-r--r-- | src/pki/command.h | 5 | ||||
-rw-r--r-- | src/pki/commands/gen.c | 2 | ||||
-rw-r--r-- | src/pki/commands/issue.c | 4 | ||||
-rw-r--r-- | src/pki/commands/keyid.c | 2 | ||||
-rw-r--r-- | src/pki/commands/pub.c | 2 | ||||
-rw-r--r-- | src/pki/commands/self.c | 2 | ||||
-rw-r--r-- | src/pki/commands/verify.c | 2 |
8 files changed, 42 insertions, 13 deletions
diff --git a/src/pki/command.c b/src/pki/command.c index 10559557a..2cf136539 100644 --- a/src/pki/command.c +++ b/src/pki/command.c @@ -46,19 +46,26 @@ static int help_idx; struct option command_opts[MAX_COMMANDS > MAX_OPTIONS ?: MAX_OPTIONS]; /** - * Build long_opts for a specific command + * Global optstring used by all subcommands + */ +char command_optstring[(MAX_COMMANDS > MAX_OPTIONS ?: MAX_OPTIONS) * 3]; + +/** + * Build command_opts/command_optstr for the active command */ static void build_opts() { - int i; + int i, pos = 0; memset(command_opts, 0, sizeof(command_opts)); + memset(command_optstring, 0, sizeof(command_optstring)); if (active == help_idx) { for (i = 0; cmds[i].cmd; i++) { command_opts[i].name = cmds[i].cmd; command_opts[i].val = cmds[i].op; + command_optstring[i] = cmds[i].op; } } else @@ -68,6 +75,19 @@ static void build_opts() command_opts[i].name = cmds[active].options[i].name; command_opts[i].has_arg = cmds[active].options[i].arg; command_opts[i].val = cmds[active].options[i].op; + command_optstring[pos++] = cmds[active].options[i].op; + switch (cmds[active].options[i].arg) + { + case optional_argument: + command_optstring[pos++] = ':'; + /* FALL */ + case required_argument: + command_optstring[pos++] = ':'; + /* FALL */ + case no_argument: + default: + break; + } } } } @@ -86,6 +106,7 @@ void command_register(command_t command) int command_usage(char *error) { FILE *out = stdout; + char buf[64]; int i; if (error) @@ -99,7 +120,8 @@ int command_usage(char *error) { for (i = 0; cmds[i].cmd; i++) { - fprintf(out, " pki --%-6s %s\n", cmds[i].cmd, cmds[i].description); + snprintf(buf, sizeof(buf), "--%s (-%c)", cmds[i].cmd, cmds[i].op); + fprintf(out, " pki %-14s %s\n", buf, cmds[i].description); } } else @@ -118,8 +140,10 @@ int command_usage(char *error) } for (i = 0; cmds[active].options[i].name; i++) { - fprintf(out, " --%-8s %s\n", - cmds[active].options[i].name, cmds[active].options[i].desc); + snprintf(buf, sizeof(buf), "--%s (-%c)", + cmds[active].options[i].name, cmds[active].options[i].op); + fprintf(out, " %-15s %s\n", + buf, cmds[active].options[i].desc); } } return error != NULL; @@ -145,7 +169,7 @@ int command_dispatch(int argc, char *argv[]) command_register((command_t){help, 'h', "help", "show usage information"}); build_opts(); - op = getopt_long(argc, argv, "", command_opts, NULL); + op = getopt_long(argc, argv, command_optstring, command_opts, NULL); for (i = 0; cmds[i].cmd; i++) { if (cmds[i].op == op) diff --git a/src/pki/command.h b/src/pki/command.h index b82d174b3..874bdaa80 100644 --- a/src/pki/command.h +++ b/src/pki/command.h @@ -75,6 +75,11 @@ struct command_t { extern struct option command_opts[]; /** + * Short option string of the active command. + */ +extern char command_optstring[]; + +/** * Register a command. */ void command_register(command_t command); diff --git a/src/pki/commands/gen.c b/src/pki/commands/gen.c index 65b5f5ca6..fcdb50a88 100644 --- a/src/pki/commands/gen.c +++ b/src/pki/commands/gen.c @@ -28,7 +28,7 @@ static int gen(int argc, char *argv[]) while (TRUE) { - switch (getopt_long(argc, argv, "", command_opts, NULL)) + switch (getopt_long(argc, argv, command_optstring, command_opts, NULL)) { case 'h': return command_usage(NULL); diff --git a/src/pki/commands/issue.c b/src/pki/commands/issue.c index ba0ead4b6..d62de39a4 100644 --- a/src/pki/commands/issue.c +++ b/src/pki/commands/issue.c @@ -53,7 +53,7 @@ static int issue(int argc, char *argv[]) while (TRUE) { - switch (getopt_long(argc, argv, "", command_opts, NULL)) + switch (getopt_long(argc, argv, command_optstring, command_opts, NULL)) { case 'h': goto usage; @@ -275,7 +275,7 @@ static int issue(int argc, char *argv[]) not_before = time(NULL); not_after = not_before + lifetime * 24 * 60 * 60; - + cert = lib->creds->create(lib->creds, CRED_CERTIFICATE, CERT_X509, BUILD_SIGNING_KEY, private, BUILD_SIGNING_CERT, ca, BUILD_PUBLIC_KEY, public, BUILD_SUBJECT, id, diff --git a/src/pki/commands/keyid.c b/src/pki/commands/keyid.c index b302a8fcb..b856a06e3 100644 --- a/src/pki/commands/keyid.c +++ b/src/pki/commands/keyid.c @@ -34,7 +34,7 @@ static int keyid(int argc, char *argv[]) while (TRUE) { - switch (getopt_long(argc, argv, "", command_opts, NULL)) + switch (getopt_long(argc, argv, command_optstring, command_opts, NULL)) { case 'h': return command_usage(NULL); diff --git a/src/pki/commands/pub.c b/src/pki/commands/pub.c index 05430675d..7294179de 100644 --- a/src/pki/commands/pub.c +++ b/src/pki/commands/pub.c @@ -35,7 +35,7 @@ static int pub(int argc, char *argv[]) while (TRUE) { - switch (getopt_long(argc, argv, "", command_opts, NULL)) + switch (getopt_long(argc, argv, command_optstring, command_opts, NULL)) { case 'h': return command_usage(NULL); diff --git a/src/pki/commands/self.c b/src/pki/commands/self.c index 54ef2399b..97eb78382 100644 --- a/src/pki/commands/self.c +++ b/src/pki/commands/self.c @@ -48,7 +48,7 @@ static int self(int argc, char *argv[]) while (TRUE) { - switch (getopt_long(argc, argv, "", command_opts, NULL)) + switch (getopt_long(argc, argv, command_optstring, command_opts, NULL)) { case 'h': goto usage; diff --git a/src/pki/commands/verify.c b/src/pki/commands/verify.c index d070ce090..26a6dca5d 100644 --- a/src/pki/commands/verify.c +++ b/src/pki/commands/verify.c @@ -29,7 +29,7 @@ static int verify(int argc, char *argv[]) while (TRUE) { - switch (getopt_long(argc, argv, "", command_opts, NULL)) + switch (getopt_long(argc, argv, command_optstring, command_opts, NULL)) { case 'h': return command_usage(NULL); |