eprintf.c (785B)
1 /* See LICENSE file for copyright and license details. */ 2 #include "pkg.h" 3 4 char *argv0; 5 6 static void venprintf(int, const char *, va_list); 7 8 void 9 eprintf(const char *fmt, ...) 10 { 11 va_list ap; 12 13 va_start(ap, fmt); 14 venprintf(EXIT_FAILURE, fmt, ap); 15 va_end(ap); 16 } 17 18 void 19 enprintf(int status, const char *fmt, ...) 20 { 21 va_list ap; 22 23 va_start(ap, fmt); 24 venprintf(status, fmt, ap); 25 va_end(ap); 26 } 27 28 void 29 venprintf(int status, const char *fmt, va_list ap) 30 { 31 vfprintf(stderr, fmt, ap); 32 33 if (fmt[0] && fmt[strlen(fmt)-1] == ':') { 34 fputc(' ', stderr); 35 perror(NULL); 36 } 37 38 exit(status); 39 } 40 41 void 42 weprintf(const char *fmt, ...) 43 { 44 va_list ap; 45 46 va_start(ap, fmt); 47 vfprintf(stderr, fmt, ap); 48 va_end(ap); 49 50 if (fmt[0] && fmt[strlen(fmt)-1] == ':') { 51 fputc(' ', stderr); 52 perror(NULL); 53 } 54 }