comparison src/ploki/atechit.c @ 4223:ac0403686959

<oerjan> rm -rf src/ploki; mv ploki src
author HackBot
date Fri, 20 Dec 2013 22:18:50 +0000
parents
children
comparison
equal deleted inserted replaced
4222:b0f3e267bb1e 4223:ac0403686959
1 #include "zz.h"
2 #include "atechit.h"
3 #include "main.h"
4
5 #include <stdio.h>
6 #include <stdlib.h>
7
8 enum {MAGIC = 23};
9 static size_t Aused;
10 static void (*Afunc[MAGIC])(void);
11
12 static void bah(void) {
13 for (; Aused; Afunc[--Aused]())
14 ;
15 }
16
17 void atechit(void (*f)(void)) {
18 if (Aused >= sizeof Afunc / sizeof *Afunc) {
19 NOTREACHED;
20 }
21 Afunc[Aused++] = f;
22 if (Aused == 1 && atexit(bah)) {
23 fprintf(stderr, "%s: atexit(): error message\n", Prog);
24 bah();
25 exit(EXIT_FAILURE);
26 }
27 }