
/*
 *  EXIT.C
 *
 *  (c)Copyright 1990, Matthew Dillon, All Rights Reserved
 */

#include <stdio.h>
#include <lib/atexit.h>

extern long *__MemList;
AtExit *_ExitBase;

void
exit(code)
int code;
{
    {
	AtExit *eb;
	for (eb = _ExitBase; eb; eb = eb->Next)
	    (*eb->Func)();
    }

    fclose(stdin);
    fclose(stdout);
    fclose(stderr);

    /*
     *	stdio
     */

    while (_Iod)
	fclose(_Iod);

    /*
     *	file descriptors
     */

    __closeall();

    /*
     *	low level exit (handles allocated memory)
     */

    _exit(code);
}

