Home | History | Annotate | Download | only in libiberty
      1 /* xexit.c -- Run any exit handlers, then exit.
      2    Copyright (C) 1994, 95, 1997 Free Software Foundation, Inc.
      3 
      4 This file is part of the libiberty library.
      5 Libiberty is free software; you can redistribute it and/or
      6 modify it under the terms of the GNU Library General Public
      7 License as published by the Free Software Foundation; either
      8 version 2 of the License, or (at your option) any later version.
      9 
     10 Libiberty is distributed in the hope that it will be useful,
     11 but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13 Library General Public License for more details.
     14 
     15 You should have received a copy of the GNU Library General Public
     16 License along with libiberty; see the file COPYING.LIB.  If not, write
     17 to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
     18 Boston, MA 02110-1301, USA.  */
     19 
     20 /*
     21 
     22 @deftypefn Replacement void xexit (int @var{code})
     23 
     24 Terminates the program.  If any functions have been registered with
     25 the @code{xatexit} replacement function, they will be called first.
     26 Termination is handled via the system's normal @code{exit} call.
     27 
     28 @end deftypefn
     29 
     30 */
     31 
     32 #ifdef HAVE_CONFIG_H
     33 #include "config.h"
     34 #endif
     35 #include <stdio.h>
     36 #ifdef HAVE_STDLIB_H
     37 #include <stdlib.h>
     38 #endif
     39 #include "libiberty.h"
     40 
     41 
     42 /* This variable is set by xatexit if it is called.  This way, xmalloc
     43    doesn't drag xatexit into the link.  */
     44 void (*_xexit_cleanup) (void);
     45 
     46 void
     47 xexit (int code)
     48 {
     49   if (_xexit_cleanup != NULL)
     50     (*_xexit_cleanup) ();
     51   exit (code);
     52 }
     53