mu-server: disable readline support for now

Seems to be causing problem in non-interactive mode
This commit is contained in:
Dirk-Jan C. Binnema 2020-05-11 22:04:01 +03:00
parent 099d41f3b5
commit 55cac6f2e5
1 changed files with 3 additions and 88 deletions

View File

@ -20,7 +20,6 @@
#include "config.h"
#include "mu-cmd.h"
#include <iostream>
#include <string>
#include <algorithm>
@ -29,33 +28,6 @@
#include <glib.h>
#include <glib/gprintf.h>
#ifdef HAVE_LIBREADLINE
# if defined(HAVE_READLINE_READLINE_H)
# include <readline/readline.h>
# elif defined(HAVE_READLINE_H)
# include <readline.h>
# else /* !defined(HAVE_READLINE_H) */
extern char *readline ();
# endif /* !defined(HAVE_READLINE_H) */
char *cmdline = NULL;
#else /* !defined(HAVE_READLINE_READLINE_H) */
/* no readline */
#endif /* HAVE_LIBREADLINE */
#ifdef HAVE_READLINE_HISTORY
# if defined(HAVE_READLINE_HISTORY_H)
# include <readline/history.h>
# elif defined(HAVE_HISTORY_H)
# include <history.h>
# else /* !defined(HAVE_HISTORY_H) */
extern void add_history ();
extern int write_history ();
extern int read_history ();
# endif /* defined(HAVE_READLINE_HISTORY_H) */
/* no history */
#endif /* HAVE_READLINE_HISTORY */
#include "mu-runtime.h"
#include "mu-cmd.h"
#include "mu-maildir.h"
@ -1299,59 +1271,8 @@ make_command_map (Context& context)
}
struct Readline {
Readline (const std::string& histpath, size_t max_lines);
~Readline();
std::string read_line(bool& do_quit);
void save_line(const std::string& line);
std::string histpath_;
size_t max_lines_{0};
};
/// Wrapper around readline (if available) or nothing otherwise.
#if defined(HAVE_LIBREADLINE) && defined(HAVE_READLINE_HISTORY)
Readline::Readline (const std::string& histpath, size_t max_lines):
histpath_{histpath}, max_lines_{max_lines}
{
rl_bind_key('\t', rl_insert); // default (filenames) is not useful
using_history();
read_history (histpath_.c_str());
if (max_lines_ > 0)
stifle_history(max_lines_);
}
Readline::~Readline () {
write_history(histpath_.c_str());
if (max_lines_ > 0)
history_truncate_file (histpath_.c_str(), max_lines_);
}
std::string
Readline::read_line(bool& do_quit)
{
auto buf = readline(";; mu% ");
if (!buf) {
do_quit = true;
return {};
}
std::string line{buf};
::free (buf);
return line;
}
void
Readline::save_line(const std::string& line)
{
add_history(line.c_str());
}
#else
Readline::Readline (const std::string& histpath, size_t max_lines) {}
Readline::~Readline() {}
void Readline::save_line(const std::string& line) {}
std::string
Readline::read_line(bool& do_quit)
static std::string
read_line(bool& do_quit)
{
std::string line;
std::cout << ";; mu> ";
@ -1359,8 +1280,6 @@ Readline::read_line(bool& do_quit)
do_quit = true;
return line;
}
#endif // ! defined(HAVE_LIBREADLINE) && defined(HAVE_READLINE_HISTORY)
MuError
mu_cmd_server (MuConfig *opts, GError **err) try
@ -1381,9 +1300,6 @@ mu_cmd_server (MuConfig *opts, GError **err) try
return MU_OK;
}
const auto histpath{std::string{mu_runtime_path(MU_RUNTIME_PATH_CACHE)} + "/history"};
Readline readline(histpath, 50);
install_sig_handler();
std::cout << ";; Welcome to the " << PACKAGE_STRING << " command-server\n"
<< ";; Use (help) to get a list of commands, (quit) to quit.\n";
@ -1392,12 +1308,11 @@ mu_cmd_server (MuConfig *opts, GError **err) try
std::string line;
try {
line = readline.read_line(context.do_quit);
line = read_line(context.do_quit);
if (line.find_first_not_of(" \t") == std::string::npos)
continue; // skip whitespace-only lines
auto call{Sexp::parse(line)};
readline.save_line(line);
invoke(context.command_map, call);