summaryrefslogtreecommitdiffstats
path: root/src/madc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/madc.cpp')
-rw-r--r--src/madc.cpp30
1 files changed, 22 insertions, 8 deletions
diff --git a/src/madc.cpp b/src/madc.cpp
index 1017912..fc95266 100644
--- a/src/madc.cpp
+++ b/src/madc.cpp
@@ -36,14 +36,10 @@
#include <boost/regex.hpp>
+#include <cstdio>
#include <iostream>
-#ifdef EDITLINE_FOUND
-# include <editline/readline.h>
-#else
-# include <readline/readline.h>
-# include <readline/history.h>
-#endif
+#include <histedit.h>
using namespace Mad;
@@ -53,6 +49,10 @@ static void usage(const std::string &cmd) {
std::cerr << "Usage: " << cmd << " [host[:port]]" << std::endl;
}
+static char* prompt(EditLine* /*e*/) {
+ return const_cast<char*>("mad> ");
+}
+
int main(int argc, char *argv[]) {
if(argc > 2) {
usage(argv[0]);
@@ -125,19 +125,33 @@ int main(int argc, char *argv[]) {
Client::CommandParser commandParser(&application, connection);
+ EditLine *el = el_init(argv[0], stdin, stdout, stderr);
+
+ el_set(el, EL_EDITOR, "emacs");
+ el_set(el, EL_PROMPT, &prompt);
+
+ HistEvent histEv;
+ History *hist = history_init();
+ history(hist, &histEv, H_SETSIZE, 800);
+
+ el_set(el, EL_HIST, history, hist);
+
while(connection->isConnected() && !commandParser.willDisconnect()) {
- char *cmd = readline("mad> ");
+ const char *cmd = el_gets(el, 0);
if(!cmd) {
commandParser.requestDisconnect();
}
else if(*cmd) {
commandParser.parse(cmd);
- add_history(cmd);
+ history(hist, &histEv, H_ENTER, cmd);
}
else continue;
}
+ history_end(hist);
+ el_end(el);
+
connection->waitWhileConnected();
application.getUserManager()->unregisterBackend(networkUserBackend);