1*d73a4c4fSkn /* $OpenBSD: util.c,v 1.5 2019/11/28 18:40:42 kn Exp $ */
2531f7fa2Skettenis
3531f7fa2Skettenis /*
4531f7fa2Skettenis * Copyright (c) 2012 Mark Kettenis
5531f7fa2Skettenis *
6531f7fa2Skettenis * Permission to use, copy, modify, and distribute this software for any
7531f7fa2Skettenis * purpose with or without fee is hereby granted, provided that the above
8531f7fa2Skettenis * copyright notice and this permission notice appear in all copies.
9531f7fa2Skettenis *
10531f7fa2Skettenis * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11531f7fa2Skettenis * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12531f7fa2Skettenis * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13531f7fa2Skettenis * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14531f7fa2Skettenis * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15531f7fa2Skettenis * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16531f7fa2Skettenis * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17531f7fa2Skettenis */
18531f7fa2Skettenis
19531f7fa2Skettenis #include <err.h>
20a66baa8dSkettenis #include <stdarg.h>
21a66baa8dSkettenis #include <stdio.h>
22531f7fa2Skettenis #include <stdlib.h>
23531f7fa2Skettenis #include <string.h>
24531f7fa2Skettenis
25*d73a4c4fSkn #include "ldom_util.h"
26531f7fa2Skettenis
2780b7680aSkettenis int debug;
2880b7680aSkettenis
29531f7fa2Skettenis void *
xmalloc(size_t size)30531f7fa2Skettenis xmalloc(size_t size)
31531f7fa2Skettenis {
32531f7fa2Skettenis void *p;
33531f7fa2Skettenis
34531f7fa2Skettenis p = malloc(size);
35531f7fa2Skettenis if (p == NULL)
36531f7fa2Skettenis err(1, NULL);
37531f7fa2Skettenis return p;
38531f7fa2Skettenis }
39531f7fa2Skettenis
40531f7fa2Skettenis void *
xzalloc(size_t size)41531f7fa2Skettenis xzalloc(size_t size)
42531f7fa2Skettenis {
43531f7fa2Skettenis void *p;
44531f7fa2Skettenis
45531f7fa2Skettenis p = xmalloc(size);
46531f7fa2Skettenis memset(p, 0, size);
47531f7fa2Skettenis return p;
48531f7fa2Skettenis }
49531f7fa2Skettenis
50362c7d0fSderaadt void *
xreallocarray(void * o,size_t nmemb,size_t size)51362c7d0fSderaadt xreallocarray(void *o, size_t nmemb, size_t size)
52362c7d0fSderaadt {
53362c7d0fSderaadt void *p;
54362c7d0fSderaadt
55362c7d0fSderaadt p = reallocarray(o, nmemb, size);
56362c7d0fSderaadt if (p == NULL)
57362c7d0fSderaadt err(1, NULL);
58362c7d0fSderaadt return p;
59362c7d0fSderaadt }
60362c7d0fSderaadt
61531f7fa2Skettenis char *
xstrdup(const char * s)62531f7fa2Skettenis xstrdup(const char *s)
63531f7fa2Skettenis {
64531f7fa2Skettenis char *p;
65531f7fa2Skettenis
66531f7fa2Skettenis p = strdup(s);
67531f7fa2Skettenis if (p == NULL)
68531f7fa2Skettenis err(1, NULL);
69531f7fa2Skettenis return p;
70531f7fa2Skettenis }
71a66baa8dSkettenis
72a66baa8dSkettenis int
xasprintf(char ** str,const char * fmt,...)73a66baa8dSkettenis xasprintf(char **str, const char *fmt, ...)
74a66baa8dSkettenis {
75a66baa8dSkettenis va_list ap;
76a66baa8dSkettenis int ret;
77a66baa8dSkettenis
78a66baa8dSkettenis va_start(ap, fmt);
79a66baa8dSkettenis ret = vasprintf(str, fmt, ap);
80a66baa8dSkettenis va_end(ap);
81a66baa8dSkettenis if (ret == -1)
82a66baa8dSkettenis err(1, NULL);
83a66baa8dSkettenis return ret;
84a66baa8dSkettenis }
85