Wed Apr 24 15:46:20 2024 UTC (15d)
csh: add a reallocarray function for using inside csh


(nia)
diff -r1.15 -r1.16 src/bin/csh/alloc.c
diff -r1.34 -r1.35 src/bin/csh/extern.h

cvs diff -r1.15 -r1.16 src/bin/csh/alloc.c (expand / switch to unified diff)

--- src/bin/csh/alloc.c 2019/01/05 16:54:00 1.15
+++ src/bin/csh/alloc.c 2024/04/24 15:46:20 1.16
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: alloc.c,v 1.15 2019/01/05 16:54:00 christos Exp $ */ 1/* $NetBSD: alloc.c,v 1.16 2024/04/24 15:46:20 nia Exp $ */
2 2
3/*- 3/*-
4 * Copyright (c) 1983, 1991, 1993 4 * Copyright (c) 1983, 1991, 1993
5 * The Regents of the University of California. All rights reserved. 5 * The Regents of the University of California. All rights reserved.
6 * 6 *
7 * Redistribution and use in source and binary forms, with or without 7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions 8 * modification, are permitted provided that the following conditions
9 * are met: 9 * are met:
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer. 11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright 12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the 13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution. 14 * documentation and/or other materials provided with the distribution.
@@ -24,27 +24,27 @@ @@ -24,27 +24,27 @@
24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE. 29 * SUCH DAMAGE.
30 */ 30 */
31 31
32#include <sys/cdefs.h> 32#include <sys/cdefs.h>
33#ifndef lint 33#ifndef lint
34#if 0 34#if 0
35static char sccsid[] = "@(#)alloc.c 8.1 (Berkeley) 5/31/93"; 35static char sccsid[] = "@(#)alloc.c 8.1 (Berkeley) 5/31/93";
36#else 36#else
37__RCSID("$NetBSD: alloc.c,v 1.15 2019/01/05 16:54:00 christos Exp $"); 37__RCSID("$NetBSD: alloc.c,v 1.16 2024/04/24 15:46:20 nia Exp $");
38#endif 38#endif
39#endif /* not lint */ 39#endif /* not lint */
40 40
41#include <sys/types.h> 41#include <sys/types.h>
42 42
43#include <unistd.h> 43#include <unistd.h>
44#include <stdarg.h> 44#include <stdarg.h>
45#include <stdlib.h> 45#include <stdlib.h>
46 46
47#include "csh.h" 47#include "csh.h"
48#include "extern.h" 48#include "extern.h"
49 49
50void * 50void *
@@ -62,23 +62,36 @@ Malloc(size_t n) @@ -62,23 +62,36 @@ Malloc(size_t n)
62void * 62void *
63Realloc(void *p, size_t n) 63Realloc(void *p, size_t n)
64{ 64{
65 void *ptr; 65 void *ptr;
66 66
67 if ((ptr = realloc(p, n)) == NULL) { 67 if ((ptr = realloc(p, n)) == NULL) {
68 child++; 68 child++;
69 stderror(ERR_NOMEM); 69 stderror(ERR_NOMEM);
70 } 70 }
71 return (ptr); 71 return (ptr);
72} 72}
73 73
74void * 74void *
 75Reallocarray(void *p, size_t n, size_t sz)
 76{
 77 void *ptr = p;
 78
 79 if (reallocarr(&ptr, n, sz) != 0) {
 80 child++;
 81 stderror(ERR_NOMEM);
 82 return (p);
 83 }
 84 return (ptr);
 85}
 86
 87void *
75Calloc(size_t s, size_t n) 88Calloc(size_t s, size_t n)
76{ 89{
77 void *ptr; 90 void *ptr;
78 91
79 if ((ptr = calloc(s, n)) == NULL) { 92 if ((ptr = calloc(s, n)) == NULL) {
80 child++; 93 child++;
81 stderror(ERR_NOMEM); 94 stderror(ERR_NOMEM);
82 } 95 }
83 return (ptr); 96 return (ptr);
84} 97}

cvs diff -r1.34 -r1.35 src/bin/csh/extern.h (expand / switch to unified diff)

--- src/bin/csh/extern.h 2022/09/15 11:35:06 1.34
+++ src/bin/csh/extern.h 2024/04/24 15:46:20 1.35
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: extern.h,v 1.34 2022/09/15 11:35:06 martin Exp $ */ 1/* $NetBSD: extern.h,v 1.35 2024/04/24 15:46:20 nia Exp $ */
2 2
3/*- 3/*-
4 * Copyright (c) 1991, 1993 4 * Copyright (c) 1991, 1993
5 * The Regents of the University of California. All rights reserved. 5 * The Regents of the University of California. All rights reserved.
6 * 6 *
7 * Redistribution and use in source and binary forms, with or without 7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions 8 * modification, are permitted provided that the following conditions
9 * are met: 9 * are met:
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer. 11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright 12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the 13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution. 14 * documentation and/or other materials provided with the distribution.
@@ -304,26 +304,27 @@ void prusage1(FILE *, const char *, int, @@ -304,26 +304,27 @@ void prusage1(FILE *, const char *, int,
304 struct timespec *, struct timespec *); 304 struct timespec *, struct timespec *);
305void prusage(FILE *, struct rusage *, struct rusage *, struct timespec *, 305void prusage(FILE *, struct rusage *, struct rusage *, struct timespec *,
306 struct timespec *); 306 struct timespec *);
307void ruadd(struct rusage *, struct rusage *); 307void ruadd(struct rusage *, struct rusage *);
308void settimes(void); 308void settimes(void);
309void psecs(long); 309void psecs(long);
310 310
311/* 311/*
312 * alloc.c 312 * alloc.c
313 */ 313 */
314void Free(void *); 314void Free(void *);
315void * Malloc(size_t); 315void * Malloc(size_t);
316void *Realloc(void *, size_t); 316void *Realloc(void *, size_t);
 317void *Reallocarray(void *, size_t, size_t);
317void *Calloc(size_t, size_t); 318void *Calloc(size_t, size_t);
318 319
319/* 320/*
320 * str.c: 321 * str.c:
321 */ 322 */
322#ifdef SHORT_STRINGS 323#ifdef SHORT_STRINGS
323Char *s_strchr(const Char *, int); 324Char *s_strchr(const Char *, int);
324Char *s_strrchr(const Char *, int); 325Char *s_strrchr(const Char *, int);
325Char *s_strcat(Char *, const Char *); 326Char *s_strcat(Char *, const Char *);
326#ifdef NOTUSED 327#ifdef NOTUSED
327Char *s_strncat(Char *, const Char *, size_t); 328Char *s_strncat(Char *, const Char *, size_t);
328#endif 329#endif
329Char *s_strcpy(Char *, const Char *); 330Char *s_strcpy(Char *, const Char *);