1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/* ISC license. */ #include <unistd.h> #include <errno.h> #include <skalibs/djbunix.h> int fd_close (int fd) { register unsigned int i = 0 ; doit: if (!close(fd)) return 0 ; i++ ; if (errno == EINTR) goto doit ; return ((errno == EBADF) && (i > 1)) ? 0 : -1 ; }