svn commit: r192486 - head/usr.bin/perror
George V. Neville-Neil
gnn at FreeBSD.org
Wed May 20 22:19:22 UTC 2009
Author: gnn
Date: Wed May 20 22:19:22 2009
New Revision: 192486
URL: http://svn.freebsd.org/changeset/base/192486
Log:
A few more style changes as well as a more broad allowance for
errors to be given by the caller. Change output to be easier
for use in scripts.
Submitted by: bce
Modified:
head/usr.bin/perror/perror.c
Modified: head/usr.bin/perror/perror.c
==============================================================================
--- head/usr.bin/perror/perror.c Wed May 20 22:13:21 2009 (r192485)
+++ head/usr.bin/perror/perror.c Wed May 20 22:19:22 2009 (r192486)
@@ -31,48 +31,40 @@ __FBSDID("$FreeBSD$");
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <err.h>
#include <sys/errno.h>
-#define MAX_ERR 256
-
-static void
-usage()
-{
-
- fprintf(stderr, "usage: perror number\n");
- fprintf(stderr, "number must be between 1 and %d\n", ELAST);
- exit(1);
-}
+static void usage();
int
main(int argc, char **argv)
{
-
- char errstr[MAX_ERR];
char *cp;
- int errnum;
+ char *errstr;
+ long errnum;
if (argc != 2)
usage();
+ errno = 0;
+
errnum = strtol(argv[1], &cp, 0);
- if (((errnum == 0) && (errno == EINVAL)) || (*cp != '\0')) {
- fprintf(stderr, "Argument %s not a number.\n", argv[1]);
- usage();
- }
+ if (errno != 0)
+ err(1, NULL);
- if ((errnum <=0) || (errnum > ELAST)) {
- fprintf(stderr, "Number %d out of range.\n", errnum);
- usage();
- }
-
- if (strerror_r(errnum, errstr, sizeof(errstr)) < 0) {
- fprintf(stderr, "Could not find error number %d.\n", errnum);
- usage();
- }
+ if ((errstr = strerror(errnum)) == NULL)
+ err(1, NULL);
- printf("Error %d is \"%s\"\n", errnum, errstr);
+ printf("%s\n", errstr);
exit(0);
}
+
+static void
+usage()
+{
+ fprintf(stderr, "usage: perror number\n");
+ exit(1);
+}
+
More information about the svn-src-all
mailing list