sm

sysmgr implemented in C
git clone git://git.ckyln.com/sm
Log | Files | Refs | README | LICENSE

enprintf.c (960B)


      1 #include <stdarg.h>
      2 #include <stdio.h>
      3 #include <stdlib.h>
      4 #include <string.h>
      5 
      6 #include "../util.h"
      7 
      8 char *argv0;
      9 
     10 static void venprintf(int, const char *, va_list);
     11 
     12 void
     13 eprintf(const char *fmt, ...)
     14 {
     15 	va_list ap;
     16 
     17 	va_start(ap, fmt);
     18 	venprintf(1, fmt, ap);
     19 	va_end(ap);
     20 }
     21 
     22 void
     23 enprintf(int status, const char *fmt, ...)
     24 {
     25 	va_list ap;
     26 
     27 	va_start(ap, fmt);
     28 	venprintf(status, fmt, ap);
     29 	va_end(ap);
     30 }
     31 
     32 void
     33 venprintf(int status, const char *fmt, va_list ap)
     34 {
     35 	if (strncmp(fmt, "usage", strlen("usage")))
     36 		fprintf(stderr, "%s: ", argv0);
     37 
     38 	vfprintf(stderr, fmt, ap);
     39 
     40 	if (fmt[0] && fmt[strlen(fmt)-1] == ':') {
     41 		fputc(' ', stderr);
     42 		perror(NULL);
     43 	}
     44 
     45 	exit(status);
     46 }
     47 
     48 void
     49 weprintf(const char *fmt, ...)
     50 {
     51 	va_list ap;
     52 
     53 	if (strncmp(fmt, "usage", strlen("usage")))
     54 		fprintf(stderr, "%s: ", argv0);
     55 
     56 	va_start(ap, fmt);
     57 	vfprintf(stderr, fmt, ap);
     58 	va_end(ap);
     59 
     60 	if (fmt[0] && fmt[strlen(fmt)-1] == ':') {
     61 		fputc(' ', stderr);
     62 		perror(NULL);
     63 	}
     64 }