1784bddbcSKevin Lo /* $FreeBSD$ */ 29d62501fSDavid E. O'Brien /* $NetBSD: ealloc.c,v 1.1.1.1 1999/11/19 04:30:56 mrg Exp $ */ 39d62501fSDavid E. O'Brien 4*df57947fSPedro F. Giffuni /*- 5*df57947fSPedro F. Giffuni * SPDX-License-Identifier: BSD-4-Clause 6*df57947fSPedro F. Giffuni * 79d62501fSDavid E. O'Brien * Copyright (c) 1988, 1989, 1990, 1993 89d62501fSDavid E. O'Brien * The Regents of the University of California. All rights reserved. 99d62501fSDavid E. O'Brien * Copyright (c) 1989 by Berkeley Softworks 109d62501fSDavid E. O'Brien * All rights reserved. 119d62501fSDavid E. O'Brien * 129d62501fSDavid E. O'Brien * This code is derived from software contributed to Berkeley by 139d62501fSDavid E. O'Brien * Adam de Boor. 149d62501fSDavid E. O'Brien * 159d62501fSDavid E. O'Brien * Redistribution and use in source and binary forms, with or without 169d62501fSDavid E. O'Brien * modification, are permitted provided that the following conditions 179d62501fSDavid E. O'Brien * are met: 189d62501fSDavid E. O'Brien * 1. Redistributions of source code must retain the above copyright 199d62501fSDavid E. O'Brien * notice, this list of conditions and the following disclaimer. 209d62501fSDavid E. O'Brien * 2. Redistributions in binary form must reproduce the above copyright 219d62501fSDavid E. O'Brien * notice, this list of conditions and the following disclaimer in the 229d62501fSDavid E. O'Brien * documentation and/or other materials provided with the distribution. 239d62501fSDavid E. O'Brien * 3. All advertising materials mentioning features or use of this software 249d62501fSDavid E. O'Brien * must display the following acknowledgement: 259d62501fSDavid E. O'Brien * This product includes software developed by the University of 269d62501fSDavid E. O'Brien * California, Berkeley and its contributors. 279d62501fSDavid E. O'Brien * 4. Neither the name of the University nor the names of its contributors 289d62501fSDavid E. O'Brien * may be used to endorse or promote products derived from this software 299d62501fSDavid E. O'Brien * without specific prior written permission. 309d62501fSDavid E. O'Brien * 319d62501fSDavid E. O'Brien * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 329d62501fSDavid E. O'Brien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 339d62501fSDavid E. O'Brien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 349d62501fSDavid E. O'Brien * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 359d62501fSDavid E. O'Brien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 369d62501fSDavid E. O'Brien * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 379d62501fSDavid E. O'Brien * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 389d62501fSDavid E. O'Brien * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 399d62501fSDavid E. O'Brien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 409d62501fSDavid E. O'Brien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 419d62501fSDavid E. O'Brien * SUCH DAMAGE. 429d62501fSDavid E. O'Brien */ 439d62501fSDavid E. O'Brien 449d62501fSDavid E. O'Brien #include <sys/cdefs.h> 459d62501fSDavid E. O'Brien #ifndef lint 469d62501fSDavid E. O'Brien __RCSID("$NetBSD: ealloc.c,v 1.1.1.1 1999/11/19 04:30:56 mrg Exp $"); 479d62501fSDavid E. O'Brien #endif /* not lint */ 489d62501fSDavid E. O'Brien 499d62501fSDavid E. O'Brien #include <stdio.h> 509d62501fSDavid E. O'Brien #include <stdlib.h> 519d62501fSDavid E. O'Brien #include <string.h> 529d62501fSDavid E. O'Brien #include <err.h> 539d62501fSDavid E. O'Brien 549d62501fSDavid E. O'Brien #include "ealloc.h" 559d62501fSDavid E. O'Brien 56784bddbcSKevin Lo static void enomem(void); 579d62501fSDavid E. O'Brien 589d62501fSDavid E. O'Brien /* 599d62501fSDavid E. O'Brien * enomem -- 609d62501fSDavid E. O'Brien * die when out of memory. 619d62501fSDavid E. O'Brien */ 629d62501fSDavid E. O'Brien static void 6310bc3a7fSEd Schouten enomem(void) 649d62501fSDavid E. O'Brien { 659d62501fSDavid E. O'Brien errx(2, "Cannot allocate memory."); 669d62501fSDavid E. O'Brien } 679d62501fSDavid E. O'Brien 689d62501fSDavid E. O'Brien /* 699d62501fSDavid E. O'Brien * emalloc -- 709d62501fSDavid E. O'Brien * malloc, but die on error. 719d62501fSDavid E. O'Brien */ 729d62501fSDavid E. O'Brien void * 7310bc3a7fSEd Schouten emalloc(size_t len) 749d62501fSDavid E. O'Brien { 759d62501fSDavid E. O'Brien void *p; 769d62501fSDavid E. O'Brien 779d62501fSDavid E. O'Brien if ((p = malloc(len)) == NULL) 789d62501fSDavid E. O'Brien enomem(); 799d62501fSDavid E. O'Brien return(p); 809d62501fSDavid E. O'Brien } 819d62501fSDavid E. O'Brien 829d62501fSDavid E. O'Brien /* 839d62501fSDavid E. O'Brien * estrdup -- 849d62501fSDavid E. O'Brien * strdup, but die on error. 859d62501fSDavid E. O'Brien */ 869d62501fSDavid E. O'Brien char * 8710bc3a7fSEd Schouten estrdup(const char *str) 889d62501fSDavid E. O'Brien { 899d62501fSDavid E. O'Brien char *p; 909d62501fSDavid E. O'Brien 919d62501fSDavid E. O'Brien if ((p = strdup(str)) == NULL) 929d62501fSDavid E. O'Brien enomem(); 939d62501fSDavid E. O'Brien return(p); 949d62501fSDavid E. O'Brien } 959d62501fSDavid E. O'Brien 969d62501fSDavid E. O'Brien /* 979d62501fSDavid E. O'Brien * erealloc -- 989d62501fSDavid E. O'Brien * realloc, but die on error. 999d62501fSDavid E. O'Brien */ 1009d62501fSDavid E. O'Brien void * 10110bc3a7fSEd Schouten erealloc(void *ptr, size_t size) 1029d62501fSDavid E. O'Brien { 1039d62501fSDavid E. O'Brien if ((ptr = realloc(ptr, size)) == NULL) 1049d62501fSDavid E. O'Brien enomem(); 1059d62501fSDavid E. O'Brien return(ptr); 1069d62501fSDavid E. O'Brien } 1079d62501fSDavid E. O'Brien 1089d62501fSDavid E. O'Brien /* 1099d62501fSDavid E. O'Brien * ecalloc -- 1109d62501fSDavid E. O'Brien * calloc, but die on error. 1119d62501fSDavid E. O'Brien */ 1129d62501fSDavid E. O'Brien void * 11310bc3a7fSEd Schouten ecalloc(size_t nmemb, size_t size) 1149d62501fSDavid E. O'Brien { 1159d62501fSDavid E. O'Brien void *ptr; 1169d62501fSDavid E. O'Brien 1179d62501fSDavid E. O'Brien if ((ptr = calloc(nmemb, size)) == NULL) 1189d62501fSDavid E. O'Brien enomem(); 1199d62501fSDavid E. O'Brien return(ptr); 1209d62501fSDavid E. O'Brien } 121