diff options
-rw-r--r-- | configure.ac | 32 | ||||
-rw-r--r-- | lib/Makefile.am | 4 | ||||
-rw-r--r-- | lib/x11plugin.c | 21 |
3 files changed, 53 insertions, 4 deletions
diff --git a/configure.ac b/configure.ac index 9addd68..a034057 100644 --- a/configure.ac +++ b/configure.ac @@ -122,6 +122,38 @@ if test "x$HAVE_GLIB2" = "xno"; then AC_MSG_ERROR([GNU Robots requires GLib2 to compile.]) fi +AC_CHECK_FUNC(tgetent, + [READLINE_EXTRA=], + [AC_CHECK_LIB(curses, tgetent, + [READLINE_EXTRA=-lcurses], + [AC_CHECK_LIB(ncurses, tgetent, + [READLINE_EXTRA=-lncurses], + [AC_CHECK_LIB(termcap, tgetent, + [READLINE_EXTRA=-ltermcap], + [AC_MSG_WARN(No Termcap or Curses library found)]) + ]) + ]) + ]) + +AC_CHECK_LIB(readline,readline,[READLINE_LIBS=-lreadline], + AC_MSG_ERROR([ + +You need the GNU Readline library to build this program. + +]),[$READLINE_EXTRA]) + +AC_CHECK_HEADER(readline/readline.h,[READLINE_CFLAGS=-I/usr/include/readline/], + AC_MSG_ERROR([ + +You need the GNU Readline headers to build this program. + +])) + +READLINE_LIBS="$READLINE_LIBS $READLINE_EXTRA" + +AC_SUBST(READLINE_LIBS) +AC_SUBST(READLINE_CFLAGS) + dnl Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS(unistd.h) diff --git a/lib/Makefile.am b/lib/Makefile.am index f3d6283..36a2a6c 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -30,7 +30,7 @@ else X11_PLUGIN= endif -INCLUDES = $(GLIB2_CFLAGS) $(CURSES_CFLAGS) $(X_FLAGS) -I$(top_builddir)/include +INCLUDES = $(GLIB2_CFLAGS) $(CURSES_CFLAGS) $(X_FLAGS) -I$(top_builddir)/include $(READLINE_CFLAGS) pkglib_LTLIBRARIES = libgrobots-text.la $(CURSES_PLUGIN) $(X11_PLUGIN) @@ -44,5 +44,5 @@ libgrobots_curses_la_LIBADD = $(GLIB2_LIBS) $(CURSES_LIBS) libgrobots_x11_la_SOURCES = x11plugin.c libgrobots_x11_la_LDFLAGS = -module -avoid-version -libgrobots_x11_la_LIBADD = $(GLIB2_LIBS) $(X_LIBS) +libgrobots_x11_la_LIBADD = $(GLIB2_LIBS) $(X_LIBS) $(READLINE_LIBS) diff --git a/lib/x11plugin.c b/lib/x11plugin.c index 4585be5..81bba80 100644 --- a/lib/x11plugin.c +++ b/lib/x11plugin.c @@ -27,6 +27,8 @@ #include "configs.h" #include "x11plugin.h" +#include <readline.h> + enum { ARG_0, @@ -580,8 +582,23 @@ inline void x11_plugin_get_string (X11Plugin *x11, /* You want me to write a text-box using xlib? * You got to be kidding me * */ - fputs (prompt, stdout); - fgets (buff, len, stdin); +/* fputs (prompt, stdout); */ +/* fgets (buff, len, stdin); */ + + char* line = (char*)NULL; + + line = readline(prompt); + + if(line && *line) + { + add_history(line); + + g_strlcpy(buff, line, len); + } + else + buff = ""; + + free(line); } inline void x11_update_status (X11Plugin *x11, |