xref: /minix3/minix/lib/libc/sys/m_closefrom.c (revision 433d6423c39e34ec4b79c950597bb2d236f886be)
1*433d6423SLionel Sambuc #include <sys/cdefs.h>
2*433d6423SLionel Sambuc #include "namespace.h"
3*433d6423SLionel Sambuc #include <lib.h>
4*433d6423SLionel Sambuc #include <stdlib.h>
5*433d6423SLionel Sambuc #include <unistd.h>
6*433d6423SLionel Sambuc 
closefrom(int fd)7*433d6423SLionel Sambuc int closefrom(int fd)
8*433d6423SLionel Sambuc {
9*433d6423SLionel Sambuc 	int f, ok = 0, e = 0;
10*433d6423SLionel Sambuc 	for(f = fd; f < OPEN_MAX; f++) {
11*433d6423SLionel Sambuc 		if(close(f) >= 0)
12*433d6423SLionel Sambuc 			ok = 1;
13*433d6423SLionel Sambuc 		else
14*433d6423SLionel Sambuc 			e = errno;
15*433d6423SLionel Sambuc 	}
16*433d6423SLionel Sambuc 
17*433d6423SLionel Sambuc 	if(ok)
18*433d6423SLionel Sambuc 		return 0;
19*433d6423SLionel Sambuc 
20*433d6423SLionel Sambuc 	/* all failed - return last valid error */
21*433d6423SLionel Sambuc 	errno = e;
22*433d6423SLionel Sambuc 	return -1;
23*433d6423SLionel Sambuc }
24