Path: blob/master/waterbox/libc/functions/stdlib/at_quick_exit.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_quickexitstack[])( void );11extern size_t _PDCLIB_quickexitptr;1213int at_quick_exit( void (*func)( void ) )14{15if ( _PDCLIB_quickexitptr == 0 )16{17return -1;18}19else20{21_PDCLIB_quickexitstack[ --_PDCLIB_quickexitptr ] = 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( at_quick_exit( &checkhandler ) == 0 );52for ( int i = 0; i < 31; ++i )53{54TESTCASE( at_quick_exit( &counthandler ) == 0 );55}56return TEST_RESULTS;57}5859#endif606162