1*d1e4d7ceSDavid van Moolenbroek /* $NetBSD: alloc.c,v 1.13 2013/01/22 19:28:00 christos Exp $ */
2*d1e4d7ceSDavid van Moolenbroek
3*d1e4d7ceSDavid van Moolenbroek /*-
4*d1e4d7ceSDavid van Moolenbroek * Copyright (c) 1983, 1991, 1993
5*d1e4d7ceSDavid van Moolenbroek * The Regents of the University of California. All rights reserved.
6*d1e4d7ceSDavid van Moolenbroek *
7*d1e4d7ceSDavid van Moolenbroek * Redistribution and use in source and binary forms, with or without
8*d1e4d7ceSDavid van Moolenbroek * modification, are permitted provided that the following conditions
9*d1e4d7ceSDavid van Moolenbroek * are met:
10*d1e4d7ceSDavid van Moolenbroek * 1. Redistributions of source code must retain the above copyright
11*d1e4d7ceSDavid van Moolenbroek * notice, this list of conditions and the following disclaimer.
12*d1e4d7ceSDavid van Moolenbroek * 2. Redistributions in binary form must reproduce the above copyright
13*d1e4d7ceSDavid van Moolenbroek * notice, this list of conditions and the following disclaimer in the
14*d1e4d7ceSDavid van Moolenbroek * documentation and/or other materials provided with the distribution.
15*d1e4d7ceSDavid van Moolenbroek * 3. Neither the name of the University nor the names of its contributors
16*d1e4d7ceSDavid van Moolenbroek * may be used to endorse or promote products derived from this software
17*d1e4d7ceSDavid van Moolenbroek * without specific prior written permission.
18*d1e4d7ceSDavid van Moolenbroek *
19*d1e4d7ceSDavid van Moolenbroek * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20*d1e4d7ceSDavid van Moolenbroek * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21*d1e4d7ceSDavid van Moolenbroek * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22*d1e4d7ceSDavid van Moolenbroek * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23*d1e4d7ceSDavid van Moolenbroek * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24*d1e4d7ceSDavid van Moolenbroek * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25*d1e4d7ceSDavid van Moolenbroek * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26*d1e4d7ceSDavid van Moolenbroek * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27*d1e4d7ceSDavid van Moolenbroek * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28*d1e4d7ceSDavid van Moolenbroek * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29*d1e4d7ceSDavid van Moolenbroek * SUCH DAMAGE.
30*d1e4d7ceSDavid van Moolenbroek */
31*d1e4d7ceSDavid van Moolenbroek
32*d1e4d7ceSDavid van Moolenbroek #include <sys/cdefs.h>
33*d1e4d7ceSDavid van Moolenbroek #ifndef lint
34*d1e4d7ceSDavid van Moolenbroek #if 0
35*d1e4d7ceSDavid van Moolenbroek static char sccsid[] = "@(#)alloc.c 8.1 (Berkeley) 5/31/93";
36*d1e4d7ceSDavid van Moolenbroek #else
37*d1e4d7ceSDavid van Moolenbroek __RCSID("$NetBSD: alloc.c,v 1.13 2013/01/22 19:28:00 christos Exp $");
38*d1e4d7ceSDavid van Moolenbroek #endif
39*d1e4d7ceSDavid van Moolenbroek #endif /* not lint */
40*d1e4d7ceSDavid van Moolenbroek
41*d1e4d7ceSDavid van Moolenbroek #include <sys/types.h>
42*d1e4d7ceSDavid van Moolenbroek
43*d1e4d7ceSDavid van Moolenbroek #include <unistd.h>
44*d1e4d7ceSDavid van Moolenbroek #include <stdarg.h>
45*d1e4d7ceSDavid van Moolenbroek #include <stdlib.h>
46*d1e4d7ceSDavid van Moolenbroek
47*d1e4d7ceSDavid van Moolenbroek #include "csh.h"
48*d1e4d7ceSDavid van Moolenbroek #include "extern.h"
49*d1e4d7ceSDavid van Moolenbroek
50*d1e4d7ceSDavid van Moolenbroek ptr_t
Malloc(size_t n)51*d1e4d7ceSDavid van Moolenbroek Malloc(size_t n)
52*d1e4d7ceSDavid van Moolenbroek {
53*d1e4d7ceSDavid van Moolenbroek ptr_t ptr;
54*d1e4d7ceSDavid van Moolenbroek
55*d1e4d7ceSDavid van Moolenbroek if ((ptr = malloc(n)) == (ptr_t) 0) {
56*d1e4d7ceSDavid van Moolenbroek child++;
57*d1e4d7ceSDavid van Moolenbroek stderror(ERR_NOMEM);
58*d1e4d7ceSDavid van Moolenbroek }
59*d1e4d7ceSDavid van Moolenbroek return (ptr);
60*d1e4d7ceSDavid van Moolenbroek }
61*d1e4d7ceSDavid van Moolenbroek
62*d1e4d7ceSDavid van Moolenbroek ptr_t
Realloc(ptr_t p,size_t n)63*d1e4d7ceSDavid van Moolenbroek Realloc(ptr_t p, size_t n)
64*d1e4d7ceSDavid van Moolenbroek {
65*d1e4d7ceSDavid van Moolenbroek ptr_t ptr;
66*d1e4d7ceSDavid van Moolenbroek
67*d1e4d7ceSDavid van Moolenbroek if ((ptr = realloc(p, n)) == (ptr_t) 0) {
68*d1e4d7ceSDavid van Moolenbroek child++;
69*d1e4d7ceSDavid van Moolenbroek stderror(ERR_NOMEM);
70*d1e4d7ceSDavid van Moolenbroek }
71*d1e4d7ceSDavid van Moolenbroek return (ptr);
72*d1e4d7ceSDavid van Moolenbroek }
73*d1e4d7ceSDavid van Moolenbroek
74*d1e4d7ceSDavid van Moolenbroek ptr_t
Calloc(size_t s,size_t n)75*d1e4d7ceSDavid van Moolenbroek Calloc(size_t s, size_t n)
76*d1e4d7ceSDavid van Moolenbroek {
77*d1e4d7ceSDavid van Moolenbroek ptr_t ptr;
78*d1e4d7ceSDavid van Moolenbroek
79*d1e4d7ceSDavid van Moolenbroek if ((ptr = calloc(s, n)) == (ptr_t) 0) {
80*d1e4d7ceSDavid van Moolenbroek child++;
81*d1e4d7ceSDavid van Moolenbroek stderror(ERR_NOMEM);
82*d1e4d7ceSDavid van Moolenbroek }
83*d1e4d7ceSDavid van Moolenbroek return (ptr);
84*d1e4d7ceSDavid van Moolenbroek }
85*d1e4d7ceSDavid van Moolenbroek
86*d1e4d7ceSDavid van Moolenbroek void
Free(ptr_t p)87*d1e4d7ceSDavid van Moolenbroek Free(ptr_t p)
88*d1e4d7ceSDavid van Moolenbroek {
89*d1e4d7ceSDavid van Moolenbroek if (p)
90*d1e4d7ceSDavid van Moolenbroek free(p);
91*d1e4d7ceSDavid van Moolenbroek }
92