From: Gunnar Beutner Date: Fri, 29 Jul 2016 11:45:16 +0000 (+0200) Subject: Implement history support for 'icinga2 console' X-Git-Tag: v2.5.0~158 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a02d7d75020bd9963d05ee449fd320836d27e047;p=icinga2 Implement history support for 'icinga2 console' fixes #12234 --- diff --git a/lib/cli/consolecommand.cpp b/lib/cli/consolecommand.cpp index f3f4fcbcc..98d120cf9 100644 --- a/lib/cli/consolecommand.cpp +++ b/lib/cli/consolecommand.cpp @@ -193,6 +193,20 @@ int ConsoleCommand::RunScriptConsole(ScriptFrame& scriptFrame, const String& add std::map lines; int next_line = 1; +#ifdef HAVE_EDITLINE + String homeEnv = getenv("HOME"); + String historyPath = homeEnv + "/.icinga2_history"; + + std::fstream historyfp; + historyfp.open(historyPath.CStr(), std::fstream::in); + + String line; + while (std::getline(historyfp, line.GetData())) + add_history(line.CStr()); + + historyfp.close(); +#endif /* HAVE_EDITLINE */ + l_ScriptFrame = &scriptFrame; l_Session = session; @@ -254,7 +268,13 @@ incomplete: if (!cline) break; - add_history(cline); + if (commandOnce.IsEmpty()) { + add_history(cline); + + historyfp.open(historyPath.CStr(), std::fstream::out | std::fstream::app); + historyfp << cline << "\n"; + historyfp.close(); + } line = cline;