/*********************************************************************** * * * This software is part of the ast package * * Copyright (c) 1985-2009 AT&T Intellectual Property * * and is licensed under the * * Common Public License, Version 1.0 * * by AT&T Intellectual Property * * * * A copy of the License is available at * * http://www.opensource.org/licenses/cpl1.0.txt * * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * * * * Information and Software Systems Research * * AT&T Research * * Florham Park NJ * * * * Glenn Fowler * * David Korn * * Phong Vo * * * ***********************************************************************/ #if defined(_UWIN) void _STUB_vmexit(){} #else #include "vmhdr.h" /* ** Any required functions for process exiting. ** Written by Kiem-Phong Vo, kpv@research.att.com (05/25/93). */ #if _PACKAGE_ast || _lib_atexit void _STUB_vmexit(){} #else #if _lib_onexit #if __STD_C int atexit(void (*exitf)(void)) #else int atexit(exitf) void (*exitf)(); #endif { return onexit(exitf); } #else /*!_lib_onexit*/ typedef struct _exit_s { struct _exit_s* next; void(* exitf)_ARG_((void)); } Exit_t; static Exit_t* Exit; #if __STD_C atexit(void (*exitf)(void)) #else atexit(exitf) void (*exitf)(); #endif { Exit_t* e; if(!(e = (Exit_t*)malloc(sizeof(Exit_t))) ) return -1; e->exitf = exitf; e->next = Exit; Exit = e; return 0; } #if __STD_C void exit(int type) #else void exit(type) int type; #endif { Exit_t* e; for(e = Exit; e; e = e->next) (*e->exitf)(); #if _exit_cleanup _cleanup(); #endif _exit(type); return type; } #endif /* _lib_onexit || _lib_on_exit */ #endif /*!PACKAGE_ast*/ #endif