xref: /dragonfly/test/socket/checkfd/checkfd.c (revision 73610d44ed87143945db264816803a31975470b5)
1 #include <err.h>
2 #include <errno.h>
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <unistd.h>
6 
7 int
main(int argc,char * argv[])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