diff options
author | 2006-05-08 22:33:04 +0000 | |
---|---|---|
committer | 2006-05-08 22:33:04 +0000 | |
commit | 2d58d79450f7e63c2abd76a42e5db7d05312a16b (patch) | |
tree | 42f2ae1c79a8f18977faa348e6d98935930063bd | |
parent | Use warnx() when errno is not set. (diff) | |
download | wireguard-openbsd-2d58d79450f7e63c2abd76a42e5db7d05312a16b.tar.xz wireguard-openbsd-2d58d79450f7e63c2abd76a42e5db7d05312a16b.zip |
This change:
- checks for realpath(3) failure
- adds usage()
- uses <err.h>
- KNF
- prevents saving strlen() return value into an int
OK kjell@.
-rw-r--r-- | usr.bin/readlink/readlink.c | 47 |
1 files changed, 25 insertions, 22 deletions
diff --git a/usr.bin/readlink/readlink.c b/usr.bin/readlink/readlink.c index 00b37d55a29..44d52820b68 100644 --- a/usr.bin/readlink/readlink.c +++ b/usr.bin/readlink/readlink.c @@ -1,5 +1,5 @@ /* - * $OpenBSD: readlink.c,v 1.19 2003/06/10 22:20:50 deraadt Exp $ + * $OpenBSD: readlink.c,v 1.20 2006/05/08 22:33:04 ray Exp $ * * Copyright (c) 1997 * Kenneth Stailey (hereinafter referred to as the author) @@ -27,19 +27,20 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include <err.h> #include <limits.h> -#include <errno.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> +__dead void usage(void); + int main(int argc, char *argv[]) { + int ch, n, fflag = 0, nflag = 0; char buf[PATH_MAX]; - int n, ch, nflag = 0, fflag = 0; - extern int optind; while ((ch = getopt(argc, argv, "fn")) != -1) switch (ch) { @@ -50,31 +51,24 @@ main(int argc, char *argv[]) nflag = 1; break; default: - (void)fprintf(stderr, - "usage: readlink [-n] [-f] symlink\n"); - exit(1); + usage(); } argc -= optind; argv += optind; - if (argc != 1) { - fprintf(stderr, "usage: readlink [-n] [-f] symlink\n"); - exit(1); - } + if (argc != 1) + usage(); - n = strlen(argv[0]); - if (n > PATH_MAX - 1) { - fprintf(stderr, - "readlink: filename longer than PATH_MAX-1 (%d)\n", - PATH_MAX - 1); - exit(1); - } + if (strlen(argv[0]) > PATH_MAX - 1) + errx(1, "filename longer than PATH_MAX-1 (%d)", + PATH_MAX - 1); - if (fflag) - realpath(argv[0], buf); - else { + if (fflag) { + if (realpath(argv[0], buf) == NULL) + err(1, "%s", argv[0]); + } else { if ((n = readlink(argv[0], buf, sizeof buf-1)) < 0) - exit(1); + err(1, "%s", argv[0]); buf[n] = '\0'; } @@ -83,3 +77,12 @@ main(int argc, char *argv[]) putchar('\n'); exit(0); } + +void +usage(void) +{ + extern char *__progname; + + fprintf(stderr, "usage: %s [-n] [-f] symlink\n", __progname); + exit(1); +} |