xref: /openbsd/libexec/ld.so/ldconfig/etc.c (revision a6445c1d)
1 /* $OpenBSD: etc.c,v 1.7 2006/05/12 23:35:16 deraadt Exp $ */
2 
3 /* Public Domain */
4 
5 #include <sys/types.h>
6 
7 #include <err.h>
8 #include <stdlib.h>
9 #include <string.h>
10 #include "ld.h"
11 
12 #define	OOM_MSG	"Out of memory"
13 
14 char *
15 xstrdup(const char *s)
16 {
17 	char *ptr;
18 
19 	if ((ptr = strdup(s)) == NULL)
20 		err(1, OOM_MSG);
21 	return (ptr);
22 }
23 
24 void *
25 xmalloc(size_t size)
26 {
27 	void *ptr;
28 
29 	if ((ptr = malloc(size)) == NULL)
30 		err(1, OOM_MSG);
31 	return (ptr);
32 }
33 
34 void *
35 xrealloc(void *ptr, size_t size)
36 {
37 	void *nptr;
38 
39 	if ((nptr = realloc(ptr, size)) == NULL)
40 		err(1, OOM_MSG);
41 	return (nptr);
42 }
43 
44 void *
45 xcalloc(size_t nmemb, size_t size)
46 {
47 	void *ptr;
48 
49 	ptr = calloc(nmemb, size);
50 	if (ptr == NULL)
51 		err(1, OOM_MSG);
52 	return ptr;
53 }
54 
55 char *
56 concat(const char *s1, const char *s2, const char *s3)
57 {
58 	char *str;
59 	size_t len;
60 
61 	len = strlen(s1) + strlen(s2) + strlen(s3) + 1;
62 	str = xmalloc(len);
63 
64 	strlcpy(str, s1, len);
65 	strlcat(str, s2, len);
66 	strlcat(str, s3, len);
67 
68 	return (str);
69 }
70