xref: /plan9/sys/src/ape/lib/ap/stdio/exit.c (revision aa0880a249a462b3c210e7784164207d3a3f7b5b)
13e12c5d1SDavid du Colombier #include <unistd.h>
23e12c5d1SDavid du Colombier #define	NONEXIT	34
3*aa0880a2SDavid du Colombier void (*_atexitfns[NONEXIT])(void);
_doatexits(void)4219b2ee8SDavid du Colombier void _doatexits(void){
5*aa0880a2SDavid du Colombier 	int i;
6*aa0880a2SDavid du Colombier 	void (*f)(void);
73e12c5d1SDavid du Colombier 	for(i = NONEXIT-1; i >= 0; i--)
83e12c5d1SDavid du Colombier 		if(_atexitfns[i]){
93e12c5d1SDavid du Colombier 			f = _atexitfns[i];
103e12c5d1SDavid du Colombier 			_atexitfns[i] = 0;	/* self defense against bozos */
113e12c5d1SDavid du Colombier 			(*f)();
123e12c5d1SDavid du Colombier 		}
13219b2ee8SDavid du Colombier }
exit(int status)14219b2ee8SDavid du Colombier void exit(int status)
15219b2ee8SDavid du Colombier {
16219b2ee8SDavid du Colombier 	_doatexits();
173e12c5d1SDavid du Colombier 	_exit(status);
183e12c5d1SDavid du Colombier }
19