summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Mares <mj@ucw.cz>2000-01-20 13:13:30 +0000
committerMartin Mares <mj@ucw.cz>2000-01-20 13:13:30 +0000
commit7211be1cffdee84fd15e8b6b2a07a644948f1455 (patch)
tree1a5a56054e5212cff23442bc39eddd4f916b9640
parent9fac310d1a4e46f4bcc70177e59cbf93763ef479 (diff)
Configure, link and use the readline library.
-rw-r--r--client/client.c23
-rw-r--r--configure.in11
-rw-r--r--tools/Makefile.in2
-rw-r--r--tools/Rules.in1
4 files changed, 33 insertions, 4 deletions
diff --git a/client/client.c b/client/client.c
index e9bc827d..260e0439 100644
--- a/client/client.c
+++ b/client/client.c
@@ -10,6 +10,8 @@
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
+#include <readline/readline.h>
+#include <readline/history.h>
#include "nest/bird.h"
#include "lib/resource.h"
@@ -39,6 +41,21 @@ parse_args(int argc, char **argv)
usage();
}
+static char *
+get_command(void)
+{
+ static char *cmd_buffer;
+
+ if (cmd_buffer)
+ free(cmd_buffer);
+ cmd_buffer = readline("bird> ");
+ if (!cmd_buffer)
+ exit(0);
+ if (cmd_buffer[0])
+ add_history(cmd_buffer);
+ return cmd_buffer;
+}
+
int
main(int argc, char **argv)
{
@@ -49,5 +66,9 @@ main(int argc, char **argv)
parse_args(argc, argv);
- bug("Not implemented yet!");
+ for(;;)
+ {
+ char *c = get_command();
+ puts(c);
+ }
}
diff --git a/configure.in b/configure.in
index 1e1fdba7..579c6bd5 100644
--- a/configure.in
+++ b/configure.in
@@ -134,12 +134,19 @@ else
AC_DEFINE_UNQUOTED(PATH_CONTROL_SOCKET_DIR, "$localstatedir")
fi
+CLIENT=
+CLIENT_LIBS=
if test "$enable_client" = yes ; then
CLIENT=client
-else
- CLIENT=
+ AC_CHECK_LIB(history, add_history, CLIENT_LIBS="-lhistory")
+ AC_CHECK_LIB(ncurses, tgetent, USE_TERMCAP_LIB=-lncurses,
+ AC_CHECK_LIB(curses, tgetent, USE_TERMCAP_LIB=-lcurses,
+ AC_CHECK_LIB(termcap, tgetent, USE_TERMCAP_LIB=-ltermcap)))
+ AC_CHECK_LIB(readline, readline, CLIENT_LIBS="-lreadline $CLIENT_LIBS $USE_TERMCAP_LIB",
+ AC_MSG_ERROR([[The client requires GNU readline library. Either install the library or use --disable-client to compile without the client.]]), $USE_TERMCAP_LIB)
fi
AC_SUBST(CLIENT)
+AC_SUBST(CLIENT_LIBS)
mkdir -p $objdir/sysdep
AC_CONFIG_HEADER($objdir/sysdep/autoconf.h:sysdep/autoconf.h.in)
diff --git a/tools/Makefile.in b/tools/Makefile.in
index 56d65140..1dcb9bce 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -21,7 +21,7 @@ $(exedir)/bird: $(addsuffix /all.o, $(static-dirs)) conf/all.o lib/birdlib.a
$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
$(exedir)/birdc: client/all.o lib/birdlib.a
- $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
+ $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) $(CLIENT_LIBS)
.dir-stamp:
mkdir -p $(static-dirs) $(client-dirs)
diff --git a/tools/Rules.in b/tools/Rules.in
index fc3d2b1a..48201824 100644
--- a/tools/Rules.in
+++ b/tools/Rules.in
@@ -20,6 +20,7 @@ CPPFLAGS=-I$(root-rel) -I$(srcdir) @CPPFLAGS@
CFLAGS=$(CPPFLAGS) @CFLAGS@
LDFLAGS=
LIBS=@LIBS@
+CLIENT_LIBS=@CLIENT_LIBS@
CC=@CC@
M4=@M4@
BISON=@BISON@