Implement history support for 'icinga2 console'

fixes #12234
This commit is contained in:
Gunnar Beutner 2016-07-29 13:45:16 +02:00
parent 6d082e61ae
commit a02d7d7502
1 changed files with 21 additions and 1 deletions

View File

@ -193,6 +193,20 @@ int ConsoleCommand::RunScriptConsole(ScriptFrame& scriptFrame, const String& add
std::map<String, String> 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,8 +268,14 @@ incomplete:
if (!cline)
break;
if (commandOnce.IsEmpty()) {
add_history(cline);
historyfp.open(historyPath.CStr(), std::fstream::out | std::fstream::app);
historyfp << cline << "\n";
historyfp.close();
}
line = cline;
free(cline);