Home | History | Annotate | Download | only in tzcode
      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 }
     87