Path: blob/master/waterbox/libc/functions/stdlib/atexit.c
2 views
/* atexit( void (*)( void ) )12This file is part of the Public Domain C Library (PDCLib).3Permission is granted to use, modify, and / or redistribute at will.4*/56#include <stdlib.h>78#ifndef REGTEST910extern void (*_PDCLIB_exitstack[])( void );11extern size_t _PDCLIB_exitptr;1213int atexit( void (*func)( void ) )14{15if ( _PDCLIB_exitptr == 0 )16{17return -1;18}19else20{21_PDCLIB_exitstack[ --_PDCLIB_exitptr ] = func;22return 0;23}24}2526#endif2728#ifdef TEST29#include "_PDCLIB_test.h"30#include <assert.h>3132static int flags[ 32 ];3334static void counthandler( void )35{36static int count = 0;37flags[ count ] = count;38++count;39}4041static void checkhandler( void )42{43for ( int i = 0; i < 31; ++i )44{45assert( flags[ i ] == i );46}47}4849int main( void )50{51TESTCASE( atexit( &checkhandler ) == 0 );52for ( int i = 0; i < 31; ++i )53{54TESTCASE( atexit( &counthandler ) == 0 );55}56return TEST_RESULTS;57}5859#endif606162