|
1 /* |
|
2 ** This file is in the public domain, so clarified as of |
|
3 ** 2006-07-17 by Arthur David Olson. |
|
4 */ |
|
5 |
|
6 #ifndef lint |
|
7 #ifndef NOID |
|
8 static char elsieid[] = "@(#)ialloc.c 8.30"; |
|
9 #endif /* !defined NOID */ |
|
10 #endif /* !defined lint */ |
|
11 |
|
12 /*LINTLIBRARY*/ |
|
13 |
|
14 #include "private.h" |
|
15 |
|
16 #define nonzero(n) (((n) == 0) ? 1 : (n)) |
|
17 |
|
18 char * |
|
19 imalloc(n) |
|
20 const int n; |
|
21 { |
|
22 return malloc((size_t) nonzero(n)); |
|
23 } |
|
24 |
|
25 char * |
|
26 icalloc(nelem, elsize) |
|
27 int nelem; |
|
28 int elsize; |
|
29 { |
|
30 if (nelem == 0 || elsize == 0) |
|
31 nelem = elsize = 1; |
|
32 return calloc((size_t) nelem, (size_t) elsize); |
|
33 } |
|
34 |
|
35 void * |
|
36 irealloc(pointer, size) |
|
37 void * const pointer; |
|
38 const int size; |
|
39 { |
|
40 if (pointer == NULL) |
|
41 return imalloc(size); |
|
42 return realloc((void *) pointer, (size_t) nonzero(size)); |
|
43 } |
|
44 |
|
45 char * |
|
46 icatalloc(old, new) |
|
47 char * const old; |
|
48 const char * const new; |
|
49 { |
|
50 register char * result; |
|
51 register int oldsize, newsize; |
|
52 |
|
53 newsize = (new == NULL) ? 0 : strlen(new); |
|
54 if (old == NULL) |
|
55 oldsize = 0; |
|
56 else if (newsize == 0) |
|
57 return old; |
|
58 else oldsize = strlen(old); |
|
59 if ((result = irealloc(old, oldsize + newsize + 1)) != NULL) |
|
60 if (new != NULL) |
|
61 (void) strcpy(result + oldsize, new); |
|
62 return result; |
|
63 } |
|
64 |
|
65 char * |
|
66 icpyalloc(string) |
|
67 const char * const string; |
|
68 { |
|
69 return icatalloc((char *) NULL, string); |
|
70 } |
|
71 |
|
72 void |
|
73 ifree(p) |
|
74 char * const p; |
|
75 { |
|
76 if (p != NULL) |
|
77 (void) free(p); |
|
78 } |
|
79 |
|
80 void |
|
81 icfree(p) |
|
82 char * const p; |
|
83 { |
|
84 if (p != NULL) |
|
85 (void) free(p); |
|
86 } |