I misinterpreted Theo's comments about the option letters before.

Revert to lowercase for most options, and change the verb option into
three distinct uppercase options, -G -S and -V.

Sorry Marc...

Index: signify.1
===================================================================
RCS file: /cvs/src/usr.bin/signify/signify.1,v
retrieving revision 1.5
diff -u -p -r1.5 signify.1
--- signify.1   31 Dec 2013 18:18:36 -0000      1.5
+++ signify.1   1 Jan 2014 15:00:28 -0000
@@ -22,47 +22,56 @@
 .Nd cryptographically sign and verify files
 .Sh SYNOPSIS
 .Nm signify
-.Op Fl N
-.Op Fl I Ar input
-.Op Fl O Ar output
-.Op Fl P Ar pubkey
-.Op Fl S Ar seckey
-.Fl V Ar generate | sign | verify
+.Op Fl n
+.Op Fl i Ar input
+.Op Fl o Ar output
+.Op Fl p Ar pubkey
+.Op Fl s Ar seckey
+.Fl G
+.Fl S
+.Fl V
 .Sh DESCRIPTION
 The
 .Nm
 utility creates and verifies cryptographic signatures.
 The mode of operation is selected by the
+.Fl G ,
+.Fl S ,
+or
 .Fl V
 option.
 .Pp
 The options are as follows:
 .Bl -tag -width Ds
-.It Fl I Ar input
+.It Fl G
+Generate a new keypair.
+.It Fl S
+Sign the input file.
+.It Fl V
+Verify the input file and signature match.
+.It Fl i Ar input
 Input file to sign or verify.
-.It Fl N
+.It Fl n
 Do not ask for a passphrase during key generation.
 Otherwise,
 .Nm
 will prompt the user for a passphrase on the terminal.
-.It Fl O Ar output
+.It Fl o Ar output
 The signature file to create or verify.
 The default is
 .Ar input Ns .sig .
-.It Fl P Ar pubkey
+.It Fl p Ar pubkey
 Public key produced by
 .Ar generate ,
 and used by
 .Ar verify
 to check a signature.
-.It Fl S Ar seckey
+.It Fl s Ar seckey
 Secret (private) key produced by
 .Ar generate ,
 and used by
 .Ar sign
 to sign a message.
-.It Fl V Ar generate | sign | verify
-Select the desired operation.
 .El
 .Pp
 The key and signature files created by
@@ -87,13 +96,13 @@ The message file is too large.
 .El
 .Sh EXAMPLES
 Create a new keypair:
-.Dl $ signify -P newkey.pub -S newkey.sec -V generate
+.Dl $ signify -p newkey.pub -s newkey.sec -G
 .Pp
 Sign a file, specifying a signature name:
-.Dl $ signify -S key.sec -I message.txt -O msg.sig -V sign
+.Dl $ signify -s key.sec -i message.txt -o msg.sig -S
 .Pp
 Verify a signature, using the default signature name:
-.Dl $ signify -P key.pub -I generalsorders.txt -V verify
+.Dl $ signify -p key.pub -i generalsorders.txt -V
 .Sh SEE ALSO
 .Xr cmp 1 ,
 .Xr sha256 1 ,
Index: signify.c
===================================================================
RCS file: /cvs/src/usr.bin/signify/signify.c,v
retrieving revision 1.5
diff -u -p -r1.5 signify.c
--- signify.c   31 Dec 2013 17:33:17 -0000      1.5
+++ signify.c   1 Jan 2014 15:00:28 -0000
@@ -64,8 +64,8 @@ extern char *__progname;
 static void
 usage(void)
 {
-       fprintf(stderr, "usage: %s [-N] [-I input] [-O output] [-P pubkey] [-S 
seckey] "
-           "-V generate | sign | verify\n", __progname);
+       fprintf(stderr, "usage: %s [-n] [-i input] [-o output] [-p pubkey] [-s 
seckey] "
+           "-G | -S | -V\n", __progname);
        exit(1);
 }
 
@@ -316,41 +316,59 @@ verify(const char *pubkeyfile, const cha
 int
 main(int argc, char **argv)
 {
-       const char *verb = NULL;
        const char *pubkeyfile = NULL, *seckeyfile = NULL, *inputfile = NULL,
            *sigfile = NULL;
        char sigfilebuf[1024];
        int ch, rounds;
+       enum {
+               NONE,
+               GENERATE,
+               SIGN,
+               VERIFY
+       } verb = NONE;
+
 
        rounds = 42;
 
-       while ((ch = getopt(argc, argv, "I:NO:P:S:V:")) != -1) {
+       while ((ch = getopt(argc, argv, "GSVi:no:p:s:")) != -1) {
                switch (ch) {
-               case 'I':
+               case 'G':
+                       if (verb)
+                               usage();
+                       verb = GENERATE;
+                       break;
+               case 'S':
+                       if (verb)
+                               usage();
+                       verb = SIGN;
+                       break;
+               case 'V':
+                       if (verb)
+                               usage();
+                       verb = VERIFY;
+                       break;
+               case 'i':
                        inputfile = optarg;
                        break;
-               case 'N':
+               case 'n':
                        rounds = 0;
                        break;
-               case 'O':
+               case 'o':
                        sigfile = optarg;
                        break;
-               case 'P':
+               case 'p':
                        pubkeyfile = optarg;
                        break;
-               case 'S':
+               case 's':
                        seckeyfile = optarg;
                        break;
-               case 'V':
-                       verb = optarg;
-                       break;
                default:
                        usage();
                        break;
                }
        }
        argc -= optind;
-       if (argc != 0 || verb == NULL)
+       if (argc != 0)
                usage();
 
        if (inputfile && !sigfile) {
@@ -360,15 +378,15 @@ main(int argc, char **argv)
                sigfile = sigfilebuf;
        }
 
-       if (streq(verb, "generate")) {
+       if (verb == GENERATE) {
                if (!pubkeyfile || !seckeyfile)
                        usage();
                generate(pubkeyfile, seckeyfile, rounds);
-       } else if (streq(verb, "sign")) {
+       } else if (verb == SIGN) {
                if (!seckeyfile || !inputfile)
                        usage();
                sign(seckeyfile, inputfile, sigfile);
-       } else if (streq(verb, "verify")) {
+       } else if (verb == VERIFY) {
                if (!pubkeyfile || !inputfile)
                        usage();
                verify(pubkeyfile, inputfile, sigfile);

Reply via email to