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