1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/*
2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** This file is in the public domain, so clarified as of
3ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** 2006-07-17 by Arthur David Olson.
4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/
5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/*LINTLIBRARY*/
7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "private.h"
9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruchar *
11f9878a236aa0d9662d8e40cafdaf2e04cd615835ccorneliusicatalloc(char *const old, const char *const new)
12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	register char *	result;
14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	register int	oldsize, newsize;
15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	newsize = (new == NULL) ? 0 : strlen(new);
17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	if (old == NULL)
18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru		oldsize = 0;
19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	else if (newsize == 0)
20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru		return old;
21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	else	oldsize = strlen(old);
22f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius	if ((result = realloc(old, oldsize + newsize + 1)) != NULL)
23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru		if (new != NULL)
24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru			(void) strcpy(result + oldsize, new);
25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	return result;
26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruchar *
29f9878a236aa0d9662d8e40cafdaf2e04cd615835ccorneliusicpyalloc(const char *const string)
30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
31f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius	return icatalloc(NULL, string);
32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
33