Home | History | Annotate | Line # | Download | only in lib
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