eprintf.c - sbase - suckless unix tools
 (HTM) git clone git://git.suckless.org/sbase
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       eprintf.c (786B)
       ---
            1 /* See LICENSE file for copyright and license details. */
            2 #include <stdarg.h>
            3 #include <stdio.h>
            4 #include <stdlib.h>
            5 #include <string.h>
            6 
            7 #include "../util.h"
            8 
            9 char *argv0;
           10 
           11 void
           12 eprintf(const char *fmt, ...)
           13 {
           14         va_list ap;
           15 
           16         va_start(ap, fmt);
           17         xvprintf(fmt, ap);
           18         va_end(ap);
           19 
           20         exit(1);
           21 }
           22 
           23 void
           24 enprintf(int status, const char *fmt, ...)
           25 {
           26         va_list ap;
           27 
           28         va_start(ap, fmt);
           29         xvprintf(fmt, ap);
           30         va_end(ap);
           31 
           32         exit(status);
           33 }
           34 
           35 void
           36 weprintf(const char *fmt, ...)
           37 {
           38         va_list ap;
           39 
           40         va_start(ap, fmt);
           41         xvprintf(fmt, ap);
           42         va_end(ap);
           43 }
           44 
           45 void
           46 xvprintf(const char *fmt, va_list ap)
           47 {
           48         if (argv0 && strncmp(fmt, "usage", strlen("usage")))
           49                 fprintf(stderr, "%s: ", argv0);
           50 
           51         vfprintf(stderr, fmt, ap);
           52 
           53         if (fmt[0] && fmt[strlen(fmt)-1] == ':') {
           54                 fputc(' ', stderr);
           55                 perror(NULL);
           56         }
           57 }