]> pd.if.org Git - pdclib/blobdiff - functions/stdlib/atexit.c
Getting stdlib.h to C11.
[pdclib] / functions / stdlib / atexit.c
index 14363566a8147dba4f6c6c7962a9c62ea26eb61f..3184fcd166cfcc081277d89381077b62105f89a2 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;
     }
 }
 
@@ -38,14 +32,14 @@ int atexit( void (*func)( void ) )
 
 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 )
     {