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
This commit is contained in:
George V. Neville-Neil 2009-05-20 22:19:22 +00:00
parent a2f237f8b7
commit 1fdc45cd2e
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=192486

View File

@ -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);
}