atexit.c - vx32 - Local 9vx git repository for patches.
 (HTM) git clone git://r-36.net/vx32
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       atexit.c (481B)
       ---
            1 
            2 #include <stdlib.h>
            3 #include <unistd.h>
            4 
            5 #include "private.h"
            6 
            7 
            8 typedef void exitfunc(void);
            9 
           10 #define MAXEXITFUNCS        32        // POSIX's standard minimum
           11 
           12 static exitfunc *exitfuncs[MAXEXITFUNCS];
           13 static int nexitfuncs;
           14 
           15 
           16 static void callfuncs()
           17 {
           18         // Call all exit handlers
           19         for (int i = nexitfuncs-1; i >= 0; i--)
           20                 exitfuncs[i]();
           21 }
           22 
           23 int atexit(exitfunc *func)
           24 {
           25         if (nexitfuncs == MAXEXITFUNCS)
           26                 return -1;
           27 
           28         __exit_atexit = callfuncs;
           29         exitfuncs[nexitfuncs++] = func;
           30         return 0;
           31 }
           32