mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 17:34:18 +03:00
virsh: fflush(stdout) after fputs()
We are not guaranteed that the string we are printing onto stdout contains '\n' and thus that the stdout is flushed. In fact, I've met this problem when virsh asked me whether I want to edit the domain XML again (vshAskReedit()) but the prompt wasn't displayed (as it does not contain a newline character) and virsh just sat there waiting for my input, I sat there waiting for virsh's output. 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>
This commit is contained in:
parent
a5e659f071
commit
79c613ec8a
@ -1863,6 +1863,7 @@ vshDebug(vshControl *ctl, int level, const char *format, ...)
|
||||
str = g_strdup_vprintf(format, ap);
|
||||
va_end(ap);
|
||||
fputs(str, stdout);
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
void
|
||||
@ -1878,6 +1879,7 @@ vshPrintExtra(vshControl *ctl, const char *format, ...)
|
||||
str = g_strdup_vprintf(format, ap);
|
||||
va_end(ap);
|
||||
fputs(str, stdout);
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
|
||||
@ -1891,6 +1893,7 @@ vshPrint(vshControl *ctl G_GNUC_UNUSED, const char *format, ...)
|
||||
str = g_strdup_vprintf(format, ap);
|
||||
va_end(ap);
|
||||
fputs(str, stdout);
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
|
||||
@ -2938,6 +2941,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 */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user