From b50bad542e62e13c55f5b9057f7ca869f818c3e9 Mon Sep 17 00:00:00 2001 From: xuyinghao 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 Reviewed-by: Ján Tomko --- 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