ind.c (1122B)
1 /* See LICENSE file for copyright and license details */ 2 3 #include <stdarg.h> 4 #include <stdio.h> 5 #include <stdlib.h> 6 #include <string.h> 7 8 void edie(char *fmt, ...) { 9 va_list fmtargs; 10 11 va_start(fmtargs, fmt); 12 fprintf(stderr, "* "); 13 vfprintf(stderr, fmt, fmtargs); 14 va_end(fmtargs); 15 fprintf(stderr, ": "); 16 17 perror(NULL); 18 19 exit(1); 20 } 21 22 void die(char *fmt, ...) { 23 va_list fmtargs; 24 25 va_start(fmtargs, fmt); 26 fprintf(stderr, "* "); 27 vfprintf(stderr, fmt, fmtargs); 28 va_end(fmtargs); 29 30 exit(1); 31 } 32 33 void info(char *fmt, ...) { 34 va_list fmtargs; 35 36 va_start(fmtargs, fmt); 37 fprintf(stderr, "* "); 38 vfprintf(stderr, fmt, fmtargs); 39 va_end(fmtargs); 40 } 41 42 void *reallocz(void *p, int l, int z) { 43 p = realloc(p, l); 44 if (p == NULL) 45 edie("realloc"); 46 if (z) 47 memset(p, 0, l); 48 return p; 49 } 50 51 void *mallocz(int l, int z) { 52 return reallocz(NULL, l, z); 53 } 54 55 void *memdup(void *p, int l) { 56 char *ret; 57 58 ret = reallocz(NULL, l, 2); 59 memmove(ret, p, l); 60 61 return (void *)ret; 62 } 63 64 char *vsmprintf(char *fmt, va_list fmtargs, int size) { 65 char *ret; 66 ret = reallocz(NULL, ++size, 2); 67 vsnprintf(ret, size, fmt, fmtargs); 68 69 return ret; 70 }