xref: /minix3/bin/csh/alloc.c (revision d1e4d7ce7de96b58a7e34cb41f3fd9aa036d9692)
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