From b50bad542e62e13c55f5b9057f7ca869f818c3e9 Mon Sep 17 00:00:00 2001
From: xuyinghao <xuyinghao2@huawei.com>
Date: Tue, 9 Aug 2022 18:59:08 +0800
Subject: [PATCH 12/22] virsh: fflush(stdout) after fputs()
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Description: We are not guaranteed that the string we are printing onto stdout contains '\n' and thus that the stdout is flushed. Flush stdout after all fputs()-s  which do not flush stdout.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
---
 tools/vsh.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/tools/vsh.c b/tools/vsh.c
index 9bb4ff043a..3646f37cea 100644
--- a/tools/vsh.c
+++ b/tools/vsh.c
@@ -1829,6 +1829,7 @@ vshDebug(vshControl *ctl, int level, const char *format, ...)
     str = g_strdup_vprintf(format, ap);
     va_end(ap);
     fputs(str, stdout);
+    fflush(stdout);
     VIR_FREE(str);
 }
 
@@ -1845,6 +1846,7 @@ vshPrintExtra(vshControl *ctl, const char *format, ...)
     str = g_strdup_vprintf(format, ap);
     va_end(ap);
     fputs(str, stdout);
+    fflush(stdout);
     VIR_FREE(str);
 }
 
@@ -1859,6 +1861,7 @@ vshPrint(vshControl *ctl G_GNUC_UNUSED, const char *format, ...)
     str = g_strdup_vprintf(format, ap);
     va_end(ap);
     fputs(str, stdout);
+    fflush(stdout);
     VIR_FREE(str);
 }
 
@@ -2950,6 +2953,7 @@ vshReadline(vshControl *ctl G_GNUC_UNUSED,
     int len;
 
     fputs(prompt, stdout);
+    fflush(stdout);
     r = fgets(line, sizeof(line), stdin);
     if (r == NULL) return NULL; /* EOF */
 
-- 
2.33.0

