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/*
23 * Copyright 1993 Sun Microsystems, Inc.  All rights reserved.
24 * Use is subject to license terms.
25 */
26
27/*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
28/*	  All Rights Reserved  	*/
29
30
31#pragma ident	"%Z%%M%	%I%	%E% SMI"	/* SVr4.0 1.14	*/
32/* LINTLIBRARY */
33
34#include "unistd.h"
35#include "sys/types.h"
36#include "sys/stat.h"
37#include "errno.h"
38#include "fcntl.h"
39#include "stdlib.h"
40#include "string.h"
41
42/**
43 ** _Malloc()
44 ** _Realloc()
45 ** _Calloc()
46 ** _Strdup()
47 ** _Free()
48 **/
49
50#if	!defined(TRACE_MALLOC)
51
52#if	defined(__STDC__)
53void			(*lp_alloc_fail_handler)( void ) = 0;
54#else
55void			(*lp_alloc_fail_handler)() = 0;
56#endif
57
58#if	defined(__STDC__)
59typedef void *alloc_type;
60#else
61typedef char *alloc_type;
62#endif
63
64alloc_type
65#if	defined(__STDC__)
66_Malloc (
67	size_t			size,
68	const char *		file,
69	int			line
70)
71#else
72_Malloc (size, file, line)
73	size_t			size;
74	char *			file;
75	int			line;
76#endif
77{
78	alloc_type		ret	= malloc(size);
79
80	if (!ret) {
81		if (lp_alloc_fail_handler)
82			(*lp_alloc_fail_handler)();
83		errno = ENOMEM;
84	}
85	return (ret);
86}
87
88alloc_type
89#if	defined(__STDC__)
90_Realloc (
91	void *			ptr,
92	size_t			size,
93	const char *		file,
94	int			line
95)
96#else
97_Realloc (ptr, size, file, line)
98	char *			ptr;
99	size_t			size;
100	char *			file;
101	int			line;
102#endif
103{
104	alloc_type		ret	= realloc(ptr, size);
105
106	if (!ret) {
107		if (lp_alloc_fail_handler)
108			(*lp_alloc_fail_handler)();
109		errno = ENOMEM;
110	}
111	return (ret);
112}
113
114alloc_type
115#if	defined(__STDC__)
116_Calloc (
117	size_t			nelem,
118	size_t			elsize,
119	const char *		file,
120	int			line
121)
122#else
123_Calloc (nelem, elsize, file, line)
124	size_t			nelem;
125	size_t			elsize;
126	char *			file;
127	int			line;
128#endif
129{
130	alloc_type		ret	= calloc(nelem, elsize);
131
132	if (!ret) {
133		if (lp_alloc_fail_handler)
134			(*lp_alloc_fail_handler)();
135		errno = ENOMEM;
136	}
137	return (ret);
138}
139
140char *
141#if	defined(__STDC__)
142_Strdup (
143	const char *		s,
144	const char *		file,
145	int			line
146)
147#else
148_Strdup (s, file, line)
149	char *			s;
150	char *			file;
151	int			line;
152#endif
153{
154	char *			ret;
155
156	if (!s)
157		return( (char *) 0);
158
159	ret = strdup(s);
160
161	if (!ret) {
162		if (lp_alloc_fail_handler)
163			(*lp_alloc_fail_handler)();
164		errno = ENOMEM;
165	}
166	return (ret);
167}
168
169void
170#if	defined(__STDC__)
171_Free (
172	void *			ptr,
173	const char *		file,
174	int			line
175)
176#else
177_Free (ptr, file, line)
178	char *			ptr;
179	char *			file;
180	int			line;
181#endif
182{
183	free (ptr);
184	return;
185}
186
187#else
188# include "mdl.c"
189#endif
190