ipf_perror.c revision 1.1.1.1.2.3 1 1.1.1.1.2.3 yamt /* $NetBSD: ipf_perror.c,v 1.1.1.1.2.3 2012/10/30 18:55:05 yamt Exp $ */
2 1.1.1.1.2.2 yamt
3 1.1.1.1.2.3 yamt #include <fcntl.h>
4 1.1.1.1.2.3 yamt #include <sys/ioctl.h>
5 1.1.1.1.2.2 yamt #include "ipf.h"
6 1.1.1.1.2.2 yamt
7 1.1.1.1.2.2 yamt void
8 1.1.1.1.2.2 yamt ipf_perror(err, string)
9 1.1.1.1.2.2 yamt int err;
10 1.1.1.1.2.2 yamt char *string;
11 1.1.1.1.2.2 yamt {
12 1.1.1.1.2.2 yamt if (err == 0)
13 1.1.1.1.2.2 yamt fprintf(stderr, "%s\n", string);
14 1.1.1.1.2.2 yamt else
15 1.1.1.1.2.2 yamt fprintf(stderr, "%s %s\n", string, ipf_strerror(err));
16 1.1.1.1.2.2 yamt }
17 1.1.1.1.2.3 yamt
18 1.1.1.1.2.3 yamt int
19 1.1.1.1.2.3 yamt ipf_perror_fd(fd, iocfunc, string)
20 1.1.1.1.2.3 yamt int fd;
21 1.1.1.1.2.3 yamt ioctlfunc_t iocfunc;
22 1.1.1.1.2.3 yamt char *string;
23 1.1.1.1.2.3 yamt {
24 1.1.1.1.2.3 yamt int save;
25 1.1.1.1.2.3 yamt int realerr;
26 1.1.1.1.2.3 yamt
27 1.1.1.1.2.3 yamt save = errno;
28 1.1.1.1.2.3 yamt if ((*iocfunc)(fd, SIOCIPFINTERROR, &realerr) == -1)
29 1.1.1.1.2.3 yamt realerr = 0;
30 1.1.1.1.2.3 yamt
31 1.1.1.1.2.3 yamt errno = save;
32 1.1.1.1.2.3 yamt fprintf(stderr, "%d:", realerr);
33 1.1.1.1.2.3 yamt ipf_perror(realerr, string);
34 1.1.1.1.2.3 yamt return realerr ? realerr : save;
35 1.1.1.1.2.3 yamt
36 1.1.1.1.2.3 yamt }
37 1.1.1.1.2.3 yamt
38 1.1.1.1.2.3 yamt void
39 1.1.1.1.2.3 yamt ipferror(fd, msg)
40 1.1.1.1.2.3 yamt int fd;
41 1.1.1.1.2.3 yamt char *msg;
42 1.1.1.1.2.3 yamt {
43 1.1.1.1.2.3 yamt if (fd >= 0) {
44 1.1.1.1.2.3 yamt ipf_perror_fd(fd, ioctl, msg);
45 1.1.1.1.2.3 yamt } else {
46 1.1.1.1.2.3 yamt fprintf(stderr, "0:");
47 1.1.1.1.2.3 yamt perror(msg);
48 1.1.1.1.2.3 yamt }
49 1.1.1.1.2.3 yamt }
50