1: /*
2: * @(#)ialloc.c 1.1 ialloc.c 3/4/87
3: */
4:
5: /*LINTLIBRARY*/
6:
7: #include "stdio.h"
8:
9: #ifndef alloc_t
10: #define alloc_t unsigned
11: #endif /* !alloc_t */
12:
13: #ifdef MAL
14: #define NULLMAL(x) ((x) == NULL || (x) == MAL)
15: #else /* !MAL */
16: #define NULLMAL(x) ((x) == NULL)
17: #endif /* !MAL */
18:
19: extern char * calloc();
20: extern char * malloc();
21: extern char * realloc();
22: extern char * strcpy();
23:
24: char *
25: imalloc(n)
26: {
27: #ifdef MAL
28: register char * result;
29:
30: if (n == 0)
31: n = 1;
32: result = malloc((alloc_t) n);
33: return (result == MAL) ? NULL : result;
34: #else /* !MAL */
35: if (n == 0)
36: n = 1;
37: return malloc((alloc_t) n);
38: #endif /* !MAL */
39: }
40:
41: char *
42: icalloc(nelem, elsize)
43: {
44: if (nelem == 0 || elsize == 0)
45: nelem = elsize = 1;
46: return calloc((alloc_t) nelem, (alloc_t) elsize);
47: }
48:
49: char *
50: irealloc(pointer, size)
51: char * pointer;
52: {
53: if (NULLMAL(pointer))
54: return imalloc(size);
55: if (size == 0)
56: size = 1;
57: return realloc(pointer, (alloc_t) size);
58: }
59:
60: char *
61: icatalloc(old, new)
62: char * old;
63: char * new;
64: {
65: register char * result;
66: register oldsize, newsize;
67:
68: oldsize = NULLMAL(old) ? 0 : strlen(old);
69: newsize = NULLMAL(new) ? 0 : strlen(new);
70: if ((result = irealloc(old, oldsize + newsize + 1)) != NULL)
71: if (!NULLMAL(new))
72: (void) strcpy(result + oldsize, new);
73: return result;
74: }
75:
76: char *
77: icpyalloc(string)
78: char * string;
79: {
80: return icatalloc((char *) NULL, string);
81: }
82:
83: ifree(p)
84: char * p;
85: {
86: if (!NULLMAL(p))
87: free(p);
88: }
Defined functions
ifree
defined in line
83;
never used
Defined macros