13e12c5d1SDavid du Colombier #include <unistd.h> 23e12c5d1SDavid du Colombier #define NONEXIT 34 3*aa0880a2SDavid du Colombier void (*_atexitfns[NONEXIT])(void); _doatexits(void)4219b2ee8SDavid du Colombiervoid _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 Colombiervoid exit(int status) 15219b2ee8SDavid du Colombier { 16219b2ee8SDavid du Colombier _doatexits(); 173e12c5d1SDavid du Colombier _exit(status); 183e12c5d1SDavid du Colombier } 19