eprintf.c - ubase - suckless linux base utils
 (HTM) git clone git://git.suckless.org/ubase
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       eprintf.c (1018B)
       ---
            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 static void venprintf(int, const char *, va_list);
           12 
           13 void
           14 eprintf(const char *fmt, ...)
           15 {
           16         va_list ap;
           17 
           18         va_start(ap, fmt);
           19         venprintf(1, fmt, ap);
           20         va_end(ap);
           21 }
           22 
           23 void
           24 enprintf(int status, const char *fmt, ...)
           25 {
           26         va_list ap;
           27 
           28         va_start(ap, fmt);
           29         venprintf(status, fmt, ap);
           30         va_end(ap);
           31 }
           32 
           33 void
           34 venprintf(int status, const char *fmt, va_list ap)
           35 {
           36         if (strncmp(fmt, "usage", strlen("usage")))
           37                 fprintf(stderr, "%s: ", argv0);
           38 
           39         vfprintf(stderr, fmt, ap);
           40 
           41         if (fmt[0] && fmt[strlen(fmt)-1] == ':') {
           42                 fputc(' ', stderr);
           43                 perror(NULL);
           44         }
           45 
           46         exit(status);
           47 }
           48 
           49 void
           50 weprintf(const char *fmt, ...)
           51 {
           52         va_list ap;
           53 
           54         if (strncmp(fmt, "usage", strlen("usage")))
           55                 fprintf(stderr, "%s: ", argv0);
           56 
           57         va_start(ap, fmt);
           58         vfprintf(stderr, fmt, ap);
           59         va_end(ap);
           60 
           61         if (fmt[0] && fmt[strlen(fmt)-1] == ':') {
           62                 fputc(' ', stderr);
           63                 perror(NULL);
           64         }
           65 }