The argument passed to usage() was always the same (argv[0]), so this patch removes the parameter and uses __progname instead. The usage message was misaligned, so I fixed that as well.
Index: skey.c =================================================================== RCS file: /cvs/src/usr.bin/skey/skey.c,v retrieving revision 1.28 diff -u -p -r1.28 skey.c --- skey.c 18 Apr 2015 18:28:38 -0000 1.28 +++ skey.c 9 Oct 2015 07:01:27 -0000 @@ -30,7 +30,7 @@ #include <limits.h> #include <skey.h> -void usage(char *); +void __dead usage(void); int main(int argc, char *argv[]) @@ -57,14 +57,14 @@ main(int argc, char *argv[]) switch (argv[i][1]) { case 'n': if (++i == argc) - usage(argv[0]); + usage(); cnt = strtonum(argv[i], 1, SKEY_MAX_SEQ -1, &errstr); if (errstr) - usage(argv[0]); + usage(); break; case 'p': if (++i == argc) - usage(argv[0]); + usage(); if (strlcpy(passwd, argv[i], sizeof(passwd)) >= sizeof(passwd)) errx(1, "Password too long"); @@ -74,42 +74,42 @@ main(int argc, char *argv[]) hexmode = 1; break; default: - usage(argv[0]); + usage(); } } else { /* Multi character switches are hash types */ if (skey_set_algorithm(&argv[i][1]) == NULL) { warnx("Unknown hash algorithm %s", &argv[i][1]); - usage(argv[0]); + usage(); } } i++; } if (argc > i + 2) - usage(argv[0]); + usage(); /* Could be in the form <number>/<seed> */ if (argc <= i + 1) { /* look for / in it */ if (argc <= i) - usage(argv[0]); + usage(); slash = strchr(argv[i], '/'); if (slash == NULL) - usage(argv[0]); + usage(); *slash++ = '\0'; seed = slash; n = strtonum(argv[i], 0, SKEY_MAX_SEQ, &errstr); if (errstr) { warnx("%s: %s", argv[i], errstr); - usage(argv[0]); + usage(); } } else { n = strtonum(argv[i], 0, SKEY_MAX_SEQ, &errstr); if (errstr) { warnx("%s: %s", argv[i], errstr); - usage(argv[0]); + usage(); } seed = argv[++i]; } @@ -147,10 +147,13 @@ main(int argc, char *argv[]) } void -usage(char *s) +usage(void) { + extern char *__progname; + fprintf(stderr, - "usage: %s [-x] [-md5 | -rmd160 | -sha1] [-n count]\n\t" - "[-p passphrase] <sequence#>[/] key\n", s); + "usage: %s [-x] [-md5 | -rmd160 | -sha1] [-n count]\n" + " [-p passphrase] <sequence#>[/] key\n", + __progname); exit(1); }