Problems building ginsh
-----------------------
-The most common reason why this doesn't succeed is the absence of
+The most common reason why this doesn't succeed is the absence of GNU
libreadline and/or the corresponding header files. Depending on what your
system/distribution is, you will have to install a package called
libreadline and maybe libreadline-dev. If your system's vendor doesn't
supply such packages, go to <ftp://ftp.gnu.org/gnu/readline/> and compile
-it yourself.
+it yourself. Note that non-GNU versions of libreadline (in particular
+one shipped with Mac OS X) are not supported at the moment.
Problems with missing standard header files
-------------------------------------------
fprintf(fd, "%s\n", rl_library_version);
fclose(fd);
return 0;
-}], ginac_cv_rlversion=`cat 'conftest.out'`, ginac_cv_rlversion='unknown', ginac_cv_rlversion='4.2')])
+}], [
+dnl Some non-GNU readline implementations have non-numeric rl_library_version
+ginac_cv_rlversion=`sed -e 's/[^0-9.]//g' 'conftest.out'`], [ ginac_cv_rlversion='unknown'], [ ginac_cv_rlversion='4.2'])])
+if test -z "$ginac_cv_rlversion"; then
+ GINAC_WARNING([Unsupported version of libreadline.])
+ ginac_cv_rlversion='unknown'
+fi
if test "x${ginac_cv_rlversion}" != "xunknown"; then
+ AC_DEFINE(REALLY_HAVE_LIBREADLINE, ,[Define if GNU libreadline is installed])
RL_VERSION_MAJOR=`echo ${ginac_cv_rlversion} | sed -e 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
AC_DEFINE_UNQUOTED(GINAC_RL_VERSION_MAJOR, $RL_VERSION_MAJOR, [Major version of installed readline library.])
RL_VERSION_MINOR=`echo ${ginac_cv_rlversion} | sed -e 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
#define YYERROR_VERBOSE 1
+#ifdef REALLY_HAVE_LIBREADLINE
// Original readline settings
static int orig_completion_append_character;
#if (GINAC_RL_VERSION_MAJOR < 4) || (GINAC_RL_VERSION_MAJOR == 4 && GINAC_RL_VERSION_MINOR < 2)
#else
#define GINAC_RL_COMPLETER_CAST(a) (a)
#endif
+#endif // REALLY_HAVE_LIBREADLINE
// Expression stack for %, %% and %%%
static void push(const ex &e);
return NULL;
}
+#ifdef REALLY_HAVE_LIBREADLINE
static char **fcn_completion(const char *text, int start, int end)
{
if (rl_line_buffer[0] == '!') {
#endif
}
}
+#endif // REALLY_HAVE_LIBREADLINE
void greeting(void)
{
insert_help("print_latex", "print_latex(expression) - prints a LaTeX representation of the given expression");
insert_help("print_csrc", "print_csrc(expression) - prints a C source code representation of the given expression");
+#ifdef REALLY_HAVE_LIBREADLINE
// Init readline completer
rl_readline_name = argv[0];
#if (GINAC_RL_VERSION_MAJOR < 4) || (GINAC_RL_VERSION_MAJOR == 4 && GINAC_RL_VERSION_MINOR < 2)
#endif
orig_completion_append_character = rl_completion_append_character;
orig_basic_word_break_characters = rl_basic_word_break_characters;
+#endif
// Init input file list, open first file
num_files = argc - 1;