1 /* $OpenBSD: util.c,v 1.3 2012/11/24 10:42:46 kettenis Exp $ */ 2 3 /* 4 * Copyright (c) 2012 Mark Kettenis 5 * 6 * Permission to use, copy, modify, and distribute this software for any 7 * purpose with or without fee is hereby granted, provided that the above 8 * copyright notice and this permission notice appear in all copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 */ 18 19 #include <err.h> 20 #include <stdarg.h> 21 #include <stdio.h> 22 #include <stdlib.h> 23 #include <string.h> 24 25 #include "util.h" 26 27 int debug; 28 29 void * 30 xmalloc(size_t size) 31 { 32 void *p; 33 34 p = malloc(size); 35 if (p == NULL) 36 err(1, NULL); 37 return p; 38 } 39 40 void * 41 xzalloc(size_t size) 42 { 43 void *p; 44 45 p = xmalloc(size); 46 memset(p, 0, size); 47 return p; 48 } 49 50 char * 51 xstrdup(const char *s) 52 { 53 char *p; 54 55 p = strdup(s); 56 if (p == NULL) 57 err(1, NULL); 58 return p; 59 } 60 61 int 62 xasprintf(char **str, const char *fmt, ...) 63 { 64 va_list ap; 65 int ret; 66 67 va_start(ap, fmt); 68 ret = vasprintf(str, fmt, ap); 69 va_end(ap); 70 if (ret == -1) 71 err(1, NULL); 72 return ret; 73 } 74