diff --git a/ialloc.c b/ialloc.c index 361f8b3..af5ad7b 100644 --- a/ialloc.c +++ b/ialloc.c @@ -1,101 +1,37 @@ -#ifndef lint -#ifndef NOID -static char elsieid[] = "%W%"; -#endif /* !defined NOID */ -#endif /* !defined lint */ +#ifdef OBJECTID +static char sccsid[] = "%W%"; +#endif /*LINTLIBRARY*/ -#include "private.h" +#include "stdio.h" -#ifdef MAL -#define NULLMAL(x) ((x) == NULL || (x) == MAL) -#else /* !defined MAL */ -#define NULLMAL(x) ((x) == NULL) -#endif /* !defined MAL */ +#ifndef arg4alloc +#define arg4alloc unsigned +#endif -#define nonzero(n) (((n) == 0) ? 1 : (n)) - -char * icalloc P((int nelem, int elsize)); -char * icatalloc P((char * old, const char * new)); -char * icpyalloc P((const char * string)); -char * imalloc P((int n)); -char * irealloc P((char * pointer, int size)); -void ifree P((char * pointer)); - -char * -imalloc(n) -const int n; +char * allocat(old, new) +char * old; +char * new; { -#ifdef MAL - register char * result; + register char * ret; + arg4alloc toalloc; + extern char * calloc(); + extern char * realloc(); + extern char * strcat(); - result = malloc((alloc_size_t) nonzero(n)); - return NULLMAL(result) ? NULL : result; -#else /* !defined MAL */ - return malloc((alloc_size_t) nonzero(n)); -#endif /* !defined MAL */ + if (new == NULL) + new = ""; + toalloc = strlen(new) + 1; + ret = (old == NULL) ? calloc(toalloc, sizeof *ret) : + realloc(old, (toalloc + strlen(old)) * sizeof *ret); + if (ret != NULL) + (void) strcat(ret, new); + return ret; } -char * -icalloc(nelem, elsize) -int nelem; -int elsize; +char * allocpy(string) +char * string; { - if (nelem == 0 || elsize == 0) - nelem = elsize = 1; - return calloc((alloc_size_t) nelem, (alloc_size_t) elsize); -} - -char * -irealloc(pointer, size) -char * const pointer; -const int size; -{ - if (NULLMAL(pointer)) - return imalloc(size); - return realloc((genericptr_t) pointer, (alloc_size_t) nonzero(size)); -} - -char * -icatalloc(old, new) -char * const old; -const char * const new; -{ - register char * result; - register oldsize, newsize; - - newsize = NULLMAL(new) ? 0 : strlen(new); - if (NULLMAL(old)) - oldsize = 0; - else if (newsize == 0) - return old; - else oldsize = strlen(old); - if ((result = irealloc(old, oldsize + newsize + 1)) != NULL) - if (!NULLMAL(new)) - (void) strcpy(result + oldsize, new); - return result; -} - -char * -icpyalloc(string) -const char * const string; -{ - return icatalloc((char *) NULL, string); -} - -void -ifree(p) -char * const p; -{ - if (!NULLMAL(p)) - (void) free(p); -} - -void -icfree(p) -char * const p; -{ - if (!NULLMAL(p)) - (void) free(p); + return allocat((char *) NULL, string); }