xref: /dflybsd-src/usr.sbin/zic/ialloc.c (revision 402c9c91815e25e22e9c798f5243613aa0264e4e)
10e2a9149SSascha Wildner /*
20e2a9149SSascha Wildner ** This file is in the public domain, so clarified as of
30e2a9149SSascha Wildner ** 2006-07-17 by Arthur David Olson.
40e2a9149SSascha Wildner */
5984263bcSMatthew Dillon 
61de703daSMatthew Dillon /*
71de703daSMatthew Dillon  * $FreeBSD: src/usr.sbin/zic/ialloc.c,v 1.5 1999/08/28 01:21:18 peter Exp $
81de703daSMatthew Dillon  */
9984263bcSMatthew Dillon /*LINTLIBRARY*/
10984263bcSMatthew Dillon 
11984263bcSMatthew Dillon #include "private.h"
12984263bcSMatthew Dillon 
13984263bcSMatthew Dillon char *
icatalloc(char * const old,const char * const new)14*402c9c91SSascha Wildner icatalloc(char *const old, const char * const new)
15984263bcSMatthew Dillon {
16a8ee260cSJoerg Sonnenberger 	char *result;
17a8ee260cSJoerg Sonnenberger 	int oldsize, newsize;
18984263bcSMatthew Dillon 
19984263bcSMatthew Dillon 	newsize = (new == NULL) ? 0 : strlen(new);
20984263bcSMatthew Dillon 	if (old == NULL)
21984263bcSMatthew Dillon 		oldsize = 0;
22984263bcSMatthew Dillon 	else if (newsize == 0)
23984263bcSMatthew Dillon 		return old;
24984263bcSMatthew Dillon 	else	oldsize = strlen(old);
25*402c9c91SSascha Wildner 	if ((result = realloc(old, oldsize + newsize + 1)) != NULL)
26984263bcSMatthew Dillon 		if (new != NULL)
2771126e33SSascha Wildner 			strcpy(result + oldsize, new);
28984263bcSMatthew Dillon 	return result;
29984263bcSMatthew Dillon }
30984263bcSMatthew Dillon 
31984263bcSMatthew Dillon char *
icpyalloc(const char * const string)32*402c9c91SSascha Wildner icpyalloc(const char * const string)
33984263bcSMatthew Dillon {
342038fb68SSascha Wildner 	return icatalloc(NULL, string);
35984263bcSMatthew Dillon }
36