]> pd.if.org Git - pdclib/blobdiff - functions/stdlib/atexit.c
PDCLib includes with quotes, not <>.
[pdclib] / functions / stdlib / atexit.c
index 14363566a8147dba4f6c6c7962a9c62ea26eb61f..808bcb1176406ff4c855d38e0097dbc32793f012 100644 (file)
@@ -1,7 +1,3 @@
-/* $Id$ */
-
-/* Release $Name$ */
-
 /* atexit( void (*)( void ) )
 
    This file is part of the Public Domain C Library (PDCLib).
 
 #ifndef REGTEST
 
-extern struct _PDCLIB_exitfunc_t * regstack;
+extern void (*_PDCLIB_exitstack[])( void );
+extern size_t _PDCLIB_exitptr;
 
 int atexit( void (*func)( void ) )
 {
-    struct _PDCLIB_exitfunc_t * regfunc = (struct _PDCLIB_exitfunc_t *)malloc( sizeof( struct _PDCLIB_exitfunc_t ) );
-    if ( regfunc == NULL )
+    if ( _PDCLIB_exitptr == 0 )
     {
         return -1;
     }
     else
     {
-        regfunc->func = func;
-       regfunc->next = regstack;
-       regstack = regfunc;
-       return 0;
+        _PDCLIB_exitstack[ --_PDCLIB_exitptr ] = func;
+        return 0;
     }
 }
 
 #endif
 
 #ifdef TEST
-#include <_PDCLIB_test.h>
+#include "_PDCLIB_test.h"
 #include <assert.h>
 
 static int flags[ 32 ];
 
-static void counthandler()
+static void counthandler( void )
 {
-    static int rc = 0;
-    flags[ rc ] = rc;
-    ++rc;
+    static int count = 0;
+    flags[ count ] = count;
+    ++count;
 }
 
-static void checkhandler()
+static void checkhandler( void )
 {
     for ( int i = 0; i < 31; ++i )
     {
@@ -53,9 +47,8 @@ static void checkhandler()
     }
 }
 
-int main()
+int main( void )
 {
-    BEGIN_TESTS;
     TESTCASE( atexit( &checkhandler ) == 0 );
     for ( int i = 0; i < 31; ++i )
     {