err.c raw

   1  #include <err.h>
   2  #include <stdio.h>
   3  #include <stdarg.h>
   4  #include <stdlib.h>
   5  
   6  extern char *__progname;
   7  
   8  void vwarn(const char *fmt, va_list ap)
   9  {
  10  	fprintf (stderr, "%s: ", __progname);
  11  	if (fmt) {
  12  		vfprintf(stderr, fmt, ap);
  13  		fputs (": ", stderr);
  14  	}
  15  	perror(0);
  16  }
  17  
  18  void vwarnx(const char *fmt, va_list ap)
  19  {
  20  	fprintf (stderr, "%s: ", __progname);
  21  	if (fmt) vfprintf(stderr, fmt, ap);
  22  	putc('\n', stderr);
  23  }
  24  
  25  _Noreturn void verr(int status, const char *fmt, va_list ap)
  26  {
  27  	vwarn(fmt, ap);
  28  	exit(status);
  29  }
  30  
  31  _Noreturn void verrx(int status, const char *fmt, va_list ap)
  32  {
  33  	vwarnx(fmt, ap);
  34  	exit(status);
  35  }
  36  
  37  void warn(const char *fmt, ...)
  38  {
  39  	va_list ap;
  40  	va_start(ap, fmt);
  41  	vwarn(fmt, ap);
  42  	va_end(ap);
  43  }
  44  
  45  void warnx(const char *fmt, ...)
  46  {
  47  	va_list ap;
  48  	va_start(ap, fmt);
  49  	vwarnx(fmt, ap);
  50  	va_end(ap);
  51  }
  52  
  53  _Noreturn void err(int status, const char *fmt, ...)
  54  {
  55  	va_list ap;
  56  	va_start(ap, fmt);
  57  	verr(status, fmt, ap);
  58  	va_end(ap);
  59  }
  60  
  61  _Noreturn void errx(int status, const char *fmt, ...)
  62  {
  63  	va_list ap;
  64  	va_start(ap, fmt);
  65  	verrx(status, fmt, ap);
  66  	va_end(ap);
  67  }
  68