pkgtools

morpheus pkg tools
git clone git://git.2f30.org/pkgtools
Log | Files | Refs | README | LICENSE

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 }