xref: /titanic_52/usr/src/lib/libbc/libc/gen/common/on_exit.c (revision 7c478bd95313f5f23a4c958a745db2134aa03244)
1  /*
2   * CDDL HEADER START
3   *
4   * The contents of this file are subject to the terms of the
5   * Common Development and Distribution License, Version 1.0 only
6   * (the "License").  You may not use this file except in compliance
7   * with the License.
8   *
9   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10   * or http://www.opensolaris.org/os/licensing.
11   * See the License for the specific language governing permissions
12   * and limitations under the License.
13   *
14   * When distributing Covered Code, include this CDDL HEADER in each
15   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16   * If applicable, add the following below this CDDL HEADER, with the
17   * fields enclosed by brackets "[]" replaced with your own identifying
18   * information: Portions Copyright [yyyy] [name of copyright owner]
19   *
20   * CDDL HEADER END
21   */
22  #pragma ident	"%Z%%M%	%I%	%E% SMI"
23  
24  #include <sys/types.h>
25  
26  /*
27   * Copyright (c) 1987 by Sun Microsystems, Inc.
28   */
29  
30  char	*malloc();
31  
32  struct handlers {
33  	void	(*handler)();
34  	caddr_t	arg;
35  	struct	handlers *next;
36  };
37  
38  extern	struct handlers *_exit_handlers;
39  
40  int
41  on_exit(handler, arg)
42  	void (*handler)();
43  	caddr_t arg;
44  {
45  	register struct handlers *h =
46  	    (struct handlers *)malloc(sizeof (*h));
47  
48  	if (h == 0)
49  		return (-1);
50  	h->handler = handler;
51  	h->arg = arg;
52  	h->next = _exit_handlers;
53  	_exit_handlers = h;
54  	return (0);
55  }
56