NetBSD/gnu/usr.bin/ld/etc.c

67 lines
1.1 KiB
C
Raw Normal View History

1993-10-17 00:52:27 +03:00
/*
* $Id: etc.c,v 1.7 1994/06/10 15:16:04 pk Exp $
1993-10-17 00:52:27 +03:00
*/
#include <err.h>
1993-10-17 00:52:27 +03:00
#include <stdlib.h>
#include <string.h>
/*
* Like malloc but get fatal error if memory is exhausted.
1993-10-17 00:52:27 +03:00
*/
void *
xmalloc(size)
size_t size;
1993-10-17 00:52:27 +03:00
{
register void *result = (void *)malloc(size);
if (!result)
errx(1, "virtual memory exhausted");
return result;
1993-10-17 00:52:27 +03:00
}
/*
* Like realloc but get fatal error if memory is exhausted.
1993-10-17 00:52:27 +03:00
*/
void *
xrealloc(ptr, size)
void *ptr;
size_t size;
1993-10-17 00:52:27 +03:00
{
register void *result;
1993-10-17 00:52:27 +03:00
if (ptr == NULL)
result = (void *)malloc(size);
else
result = (void *)realloc(ptr, size);
1993-10-17 00:52:27 +03:00
if (!result)
errx(1, "virtual memory exhausted");
return result;
}
1993-10-17 00:52:27 +03:00
/*
* Return a newly-allocated string whose contents concatenate
* the strings S1, S2, S3.
*/
char *
concat(s1, s2, s3)
const char *s1, *s2, *s3;
1993-10-17 00:52:27 +03:00
{
register int len1 = strlen(s1),
len2 = strlen(s2),
len3 = strlen(s3);
1993-10-17 00:52:27 +03:00
register char *result = (char *)xmalloc(len1 + len2 + len3 + 1);
1993-10-17 00:52:27 +03:00
strcpy(result, s1);
strcpy(result + len1, s2);
strcpy(result + len1 + len2, s3);
1993-10-17 00:52:27 +03:00
result[len1 + len2 + len3] = 0;
return result;
}