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