Files
kolibrios/programs/develop/ktcc/trunk/libc.obj/source/stdlib/atexit.c
Egor00f eacda328be libc.obj: Added saving/reading of exit status && update system
idk why, but tests don't run `exit` after `main`
2026-02-19 12:03:03 +05:00

36 lines
545 B
C

#include <stdlib.h>
struct atexit_n {
struct atexit_n* last;
void (*func)(void);
};
static struct atexit_n* __last_n = NULL;
int atexit(void (*func)(void))
{
struct atexit_n* n = malloc(sizeof(struct atexit_n));
if (n == NULL) {
return 1;
}
n->last = __last_n;
n->func = func;
__last_n = n;
return 0;
}
void __run_atexit()
{
struct atexit_n* n = __last_n;
while (n != NULL) {
n->func();
struct atexit_n* to_free = n;
n = n->last;
free(to_free);
}
}