
/*
 *  ON_EXIT.C
 *
 *  Implement on_exit() function via exitpg() vector
 */

#include "c.h"

RcsId("$Header: RCS/on_exit.c,v 1.5 89/09/05 17:20:29 mao C_Demo_1 $");

#include <sys/types.h>		/* for caddr_t */

#define EARY	struct _EARY

#define MAXOE	20

static EARY {
    void (*procp)();
    caddr_t arg;
} Ary[MAXOE];

static int AryIndex;

on_exit(procp, arg)
void (*procp)();
caddr_t arg;
{
    if (AryIndex >= MAXOE)
	return(-1);
    Ary[AryIndex].procp = procp;
    Ary[AryIndex].arg = arg;
    ++AryIndex;
    return(0);
}

exitpg(code)
int code;
{
    int i;

    for (i = AryIndex - 1; i >= 0; --i)
	(*Ary[i].procp)(Ary[i].arg);
    exit(code);
}

