/*
 * onexit.c
 */

#include <stdlib.h>
#include "atexit.h"

extern __noreturn (*__exit_handler)(int);
static struct atexit *__atexit_list;

static __noreturn on_exit_exit(int rv)
{
  struct atexit *ap;
  
  for ( ap = __atexit_list ; ap ; ap = ap->next ) {
    ap->fctn(rv, ap->arg);	/* This assumes extra args are harmless */
  }
  
  _exit(rv);
}

int on_exit(void (*fctn)(int, void *), void *arg)
{
  struct atexit *as = malloc(sizeof(struct atexit));

  if ( !as )
    return -1;

  as->fctn = fctn;
  as->arg  = arg;

  as->next = __atexit_list;
  __atexit_list = as;

  __exit_handler = on_exit_exit;

  return 0;
}
