Refactor eprintf.c
When we move the exit() out of venprintf(), we can reuse it for weprintf(), which basically had duplicate code. I also renamed venprintf() to xvprintf (extended vprintf) so it's more obvious what it actually does.
This commit is contained in:
parent
6135cad495
commit
94e92d9cc0
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
char *argv0;
|
char *argv0;
|
||||||
|
|
||||||
static void venprintf(int, const char *, va_list);
|
static void xvprintf(const char *, va_list);
|
||||||
|
|
||||||
void
|
void
|
||||||
eprintf(const char *fmt, ...)
|
eprintf(const char *fmt, ...)
|
||||||
|
@ -16,8 +16,10 @@ eprintf(const char *fmt, ...)
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
venprintf(1, fmt, ap);
|
xvprintf(fmt, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
|
||||||
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -26,22 +28,8 @@ enprintf(int status, const char *fmt, ...)
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
venprintf(status, fmt, ap);
|
xvprintf(fmt, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
venprintf(int status, const char *fmt, va_list ap)
|
|
||||||
{
|
|
||||||
if (strncmp(fmt, "usage", strlen("usage")))
|
|
||||||
fprintf(stderr, "%s: ", argv0);
|
|
||||||
|
|
||||||
vfprintf(stderr, fmt, ap);
|
|
||||||
|
|
||||||
if (fmt[0] && fmt[strlen(fmt)-1] == ':') {
|
|
||||||
fputc(' ', stderr);
|
|
||||||
perror(NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
exit(status);
|
exit(status);
|
||||||
}
|
}
|
||||||
|
@ -51,12 +39,18 @@ weprintf(const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
|
va_start(ap, fmt);
|
||||||
|
xvprintf(fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
xvprintf(const char *fmt, va_list ap)
|
||||||
|
{
|
||||||
if (strncmp(fmt, "usage", strlen("usage")))
|
if (strncmp(fmt, "usage", strlen("usage")))
|
||||||
fprintf(stderr, "%s: ", argv0);
|
fprintf(stderr, "%s: ", argv0);
|
||||||
|
|
||||||
va_start(ap, fmt);
|
|
||||||
vfprintf(stderr, fmt, ap);
|
vfprintf(stderr, fmt, ap);
|
||||||
va_end(ap);
|
|
||||||
|
|
||||||
if (fmt[0] && fmt[strlen(fmt)-1] == ':') {
|
if (fmt[0] && fmt[strlen(fmt)-1] == ':') {
|
||||||
fputc(' ', stderr);
|
fputc(' ', stderr);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user