From bcfa2f427d53264830ff5fa5d029b6897773702d Mon Sep 17 00:00:00 2001 From: John Ferlan Date: Wed, 28 Sep 2016 15:01:55 -0400 Subject: [PATCH] vsh: Write out history on "quit" or "exit" in interactive mode https://bugzilla.redhat.com/show_bug.cgi?id=1379895 Introduced by commit id '834c5720'. During the code motion and creation of vsh.c, the function 'vshDeinit()' in the (new) vsh.c was altered from whence it came in virsh.c such that calling 'vshReadlineDeinit(ctl)' was conditional on "ctl->imode". This causes a problem for the interactive running if the "quit" and "exit" commands are used because 'cmdQuit' will clear ctl->imode, thus when the interactive loop in main() of virsh.c exits because ctl->mode is clear and virshDeinit is called which calls vshDeinit, the history file is now not written. Conversely, if one had exited the interactive loop via pressing D the file would be created because loop control is broken on EOF and ctl->imode is not set to false. This patch will remove the conditional call to vshReadlineDeinit and restore the former behaviour. --- tools/vsh.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/vsh.c b/tools/vsh.c index 041113f2b4..cdd1cba81e 100644 --- a/tools/vsh.c +++ b/tools/vsh.c @@ -3093,8 +3093,9 @@ vshInitReload(vshControl *ctl) void vshDeinit(vshControl *ctl) { - if (ctl->imode) - vshReadlineDeinit(ctl); + /* NB: Don't make calling of vshReadlineDeinit conditional on active + * interactive mode. */ + vshReadlineDeinit(ctl); vshCloseLogFile(ctl); }