xref: /dragonfly/test/socket/checkfd/checkfd.c (revision b8c93cad)
1 #include <err.h>
2 #include <errno.h>
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <unistd.h>
6 
7 int
8 main(int argc, char *argv[])
9 {
10 	int i;
11 
12 	if (argc < 2)
13 		exit(1);
14 
15 	for (i = 1; i < argc; ++i) {
16 		char *endptr;
17 		int fd;
18 
19 		fd = strtol(argv[i], &endptr, 10);
20 		if (*endptr != '\0')
21 			exit(1);
22 
23 		if (close(fd) < 0) {
24 			int error = errno;
25 
26 			if (error != EBADF) {
27 				warnx("close error %d", error);
28 				exit(2);
29 			}
30 		} else {
31 			warnx("%d is still valid", fd);
32 			exit(2);
33 		}
34 	}
35 	exit(0);
36 }
37