xref: /plan9-contrib/sys/src/ape/lib/ap/stdio/exit.c (revision 3e12c5d1bb89fc02707907988834ef147769ddaf)
1 #include <unistd.h>
2 #define	NONEXIT	34
3 int (*_atexitfns[NONEXIT])(void);
4 void exit(int status){
5 	int i, (*f)(void);
6 	for(i = NONEXIT-1; i >= 0; i--)
7 		if(_atexitfns[i]){
8 			f = _atexitfns[i];
9 			_atexitfns[i] = 0;	/* self defense against bozos */
10 			(*f)();
11 		}
12 	_exit(status);
13 }
14 atexit(int (*f)(void))
15 {
16 	int i;
17 	for(i=0; i<NONEXIT; i++)
18 		if(!_atexitfns[i]){
19 			_atexitfns[i] = f;
20 			return(0);
21 		}
22 	return(1);
23 }
24