From cda59382150128da7b3fb71ff2e0b76be889d473 Mon Sep 17 00:00:00 2001 From: Joachim Nilsson Date: Sun, 2 Jul 2017 12:43:41 +0200 Subject: [PATCH] helpers.c: New function, printv() Signed-off-by: Joachim Nilsson --- src/exec.c | 9 ++++----- src/helpers.c | 28 ++++++++++++++++++---------- src/helpers.h | 1 + 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/exec.c b/src/exec.c index 97913965..1afdf6a0 100644 --- a/src/exec.c +++ b/src/exec.c @@ -153,7 +153,6 @@ int run_interactive(char *cmd, char *fmt, ...) { int status, oldout = 1, olderr = 2; char line[LINE_SIZE]; - va_list ap; FILE *fp; if (!cmd) { @@ -162,11 +161,11 @@ int run_interactive(char *cmd, char *fmt, ...) } if (fmt) { - va_start(ap, fmt); - vsnprintf(line, sizeof(line), fmt, ap); - va_end(ap); + va_list ap; - print_desc("", line); + va_start(ap, fmt); + printv(fmt, ap); + va_end(ap); } /* Redirect output from cmd to a tempfile */ diff --git a/src/helpers.c b/src/helpers.c index 91482a15..e07d15af 100644 --- a/src/helpers.c +++ b/src/helpers.c @@ -77,31 +77,39 @@ static int print_timestamp(void) return 0; } -void print(int action, const char *fmt, ...) +void printv(const char *fmt, va_list ap) { char buf[80]; size_t len; + const char dots[] = " ....................................................................."; + + if (!fmt || log_is_silent()) + return; + + len = vsnprintf(buf, sizeof(buf), fmt, ap); + delline(); + print_timestamp(); + + write(STDERR_FILENO, "\r", 1); + write(STDERR_FILENO, buf, len); + write(STDERR_FILENO, dots, 60 - len); /* pad with dots. */ +} + +void print(int action, const char *fmt, ...) +{ va_list ap; const char success[] = " \e[1m[ OK ]\e[0m\n"; const char failure[] = " \e[7m[FAIL]\e[0m\n"; const char warning[] = " \e[7m[WARN]\e[0m\n"; const char pending[] = " \e[1m[ \\/ ]\e[0m\n"; - const char dots[] = " ....................................................................."; if (log_is_silent()) return; if (fmt) { va_start(ap, fmt); - len = vsnprintf(buf, sizeof(buf), fmt, ap); + printv(fmt, ap); va_end(ap); - - delline(); - print_timestamp(); - - write(STDERR_FILENO, "\r", 1); - write(STDERR_FILENO, buf, len); - write(STDERR_FILENO, dots, 60 - len); /* pad with dots. */ } switch (action) { diff --git a/src/helpers.h b/src/helpers.h index 16408434..f0bed281 100644 --- a/src/helpers.h +++ b/src/helpers.h @@ -50,6 +50,7 @@ char *strip_line (char *line); int pid_alive (pid_t pid); char *pid_get_name (pid_t pid, char *name, size_t len); +void printv (const char *fmt, va_list ap); void print (int action, const char *fmt, ...); void print_desc (char *action, char *desc); int print_result (int fail);