Mercurial > repo
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 } |