github.com/afumu/libc@v0.0.6/musl/src/legacy/err.c (about)

     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  }