xref: /openbsd-src/usr.sbin/ldomctl/util.c (revision d73a4c4fb3962df1e72dd6910861075eabc6a1c3)
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