Pristine Ack-5.5
[Ack-5.5.git] / lang / cem / libcc.ansi / stdlib / exit.c
1 /*
2  * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
3  * See the copyright notice in the ACK home directory, in the file "Copyright".
4  */
5 /* $Id: exit.c,v 1.4 1994/06/24 11:53:33 ceriel Exp $ */
6
7 #include        <stdio.h>
8 #include        <stdlib.h>
9
10 #define NEXITS  32
11
12 void (*__functab[NEXITS])(void);
13 int __funccnt = 0;
14
15 extern void _exit(int);
16
17 /* only flush output buffers when necessary */
18 int (*_clean)(void) = NULL;
19
20 static void
21 _calls(void)
22 {
23         register int i = __funccnt;
24         
25         /* "Called in reversed order of their registration" */
26         while (--i >= 0)
27                 (*__functab[i])();
28 }
29
30 void
31 exit(int status)
32 {
33         _calls();
34         if (_clean) _clean();
35         _exit(status) ;
36 }