[PATCH 03/13] virsh: Do not format messages twice

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The same message was formatted both in vshOutputLogFile and in vshDebug
and vshError functions. This patch refactor vshOutputLogFile and its
callers to only format each message once.

Signed-off-by: Jiri Denemark <jdenemar@xxxxxxxxxx>
---
 tools/vsh.c | 27 +++++++++++----------------
 tools/vsh.h |  4 +---
 2 files changed, 12 insertions(+), 19 deletions(-)

diff --git a/tools/vsh.c b/tools/vsh.c
index 5f5e2f281d..1b650bdd9b 100644
--- a/tools/vsh.c
+++ b/tools/vsh.c
@@ -1967,13 +1967,12 @@ vshDebug(vshControl *ctl, int level, const char *format, ...)
     if (level < ctl->debug)
         return;
 
-    va_start(ap, format);
-    vshOutputLogFile(ctl, level, format, ap);
-    va_end(ap);
-
     va_start(ap, format);
     str = g_strdup_vprintf(format, ap);
     va_end(ap);
+
+    vshOutputLogFile(ctl, level, str);
+
     fputs(str, stdout);
     fflush(stdout);
 }
@@ -2118,11 +2117,12 @@ vshError(vshControl *ctl, const char *format, ...)
     va_list ap;
     g_autofree char *str = NULL;
 
-    if (ctl != NULL) {
-        va_start(ap, format);
-        vshOutputLogFile(ctl, VSH_ERR_ERROR, format, ap);
-        va_end(ap);
-    }
+    va_start(ap, format);
+    str = g_strdup_vprintf(format, ap);
+    va_end(ap);
+
+    if (ctl)
+        vshOutputLogFile(ctl, VSH_ERR_ERROR, str);
 
     /* Most output is to stdout, but if someone ran virsh 2>&1, then
      * printing to stderr will not interleave correctly with stdout
@@ -2130,10 +2130,6 @@ vshError(vshControl *ctl, const char *format, ...)
     fflush(stdout);
     fputs(_("error: "), stderr);
 
-    va_start(ap, format);
-    str = g_strdup_vprintf(format, ap);
-    va_end(ap);
-
     fprintf(stderr, "%s\n", NULLSTR(str));
     fflush(stderr);
 }
@@ -2337,8 +2333,7 @@ vshOpenLogFile(vshControl *ctl)
  * Outputting an error to log file.
  */
 void
-vshOutputLogFile(vshControl *ctl, int log_level, const char *msg_format,
-                 va_list ap)
+vshOutputLogFile(vshControl *ctl, int log_level, const char *msg)
 {
     g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
     g_autofree char *str = NULL;
@@ -2381,7 +2376,7 @@ vshOutputLogFile(vshControl *ctl, int log_level, const char *msg_format,
             break;
     }
     virBufferAsprintf(&buf, "%s ", lvl);
-    virBufferVasprintf(&buf, msg_format, ap);
+    virBufferAddStr(&buf, msg);
     virBufferTrim(&buf, "\n");
     virBufferAddChar(&buf, '\n');
 
diff --git a/tools/vsh.h b/tools/vsh.h
index 7de9fa2f09..1c7370dd4f 100644
--- a/tools/vsh.h
+++ b/tools/vsh.h
@@ -241,9 +241,7 @@ struct _vshCmdGrp {
 void vshError(vshControl *ctl, const char *format, ...)
     G_GNUC_PRINTF(2, 3);
 void vshOpenLogFile(vshControl *ctl);
-void vshOutputLogFile(vshControl *ctl, int log_level, const char *format,
-                      va_list ap)
-    G_GNUC_PRINTF(3, 0);
+void vshOutputLogFile(vshControl *ctl, int log_level, const char *msg);
 void vshCloseLogFile(vshControl *ctl);
 
 int vshCommandOptInt(vshControl *ctl, const vshCmd *cmd,
-- 
2.48.1




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux