|
|
1.1 root 1: /*
2: * libc/stdlib/atexit.c
3: * C general utilities library.
4: * atexit()
5: * ANSI 4.10.4.2.
6: * Register function for execution on exit.
7: */
8:
9: #include <stdlib.h>
10:
11: #define ATEXITN 32
12:
13: /*
14: * The Standard requires the implementation to support registration
15: * of at least 32 functions.
16: * This minimal implementation statically allocates a buffer for 32.
17: * More could be stored in a malloc'ed buffer, but this code does not do so.
18: * Globals _atexitn and _atexitfp are defined in exit.c.
19: */
20:
21: static void (*atexitfp[ATEXITN])();
22:
23: int
24: atexit(func) void (*func)();
25: {
26: if (_atexitn == 0) /* first time */
27: _atexitfp = &atexitfp[0];
28: else if (_atexitn == _ATEXITN)
29: return 1; /* too many, failure */
30: *_atexitfp++ = func; /* store the function */
31: ++_atexitn; /* and bump the count */
32: return 0; /* success */
33: }
34:
35: /* end of libc/stdlib/atexit.c */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.