You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by jp...@apache.org on 2012/01/28 05:04:45 UTC
svn commit: r1236973 - in /trafficserver/traffic/trunk: configure.ac
lib/ts/ink_config.h.in mgmt/cli/Makefile.am mgmt/cli/cliAppInit.cc
mgmt/cli/cliMain.cc
Author: jpeach
Date: Sat Jan 28 04:04:45 2012
New Revision: 1236973
URL: http://svn.apache.org/viewvc?rev=1236973&view=rev
Log:
TS-1096: libreadline support for traffic_shell
Modified:
trafficserver/traffic/trunk/configure.ac
trafficserver/traffic/trunk/lib/ts/ink_config.h.in
trafficserver/traffic/trunk/mgmt/cli/Makefile.am
trafficserver/traffic/trunk/mgmt/cli/cliAppInit.cc
trafficserver/traffic/trunk/mgmt/cli/cliMain.cc
Modified: trafficserver/traffic/trunk/configure.ac
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/configure.ac?rev=1236973&r1=1236972&r2=1236973&view=diff
==============================================================================
--- trafficserver/traffic/trunk/configure.ac (original)
+++ trafficserver/traffic/trunk/configure.ac Sat Jan 28 04:04:45 2012
@@ -1017,6 +1017,18 @@ AC_SUBST(use_hwloc)
TS_CHECK_JEMALLOC
TS_CHECK_TCMALLOC
+#
+# Check for libreadline/libedit
+
+AC_CHECK_LIB([edit], [readline], [
+ AC_SUBST([LIBREADLINE], [-ledit])
+ AC_DEFINE([HAVE_LIBREADLINE], [1], [Define if you have libedit])],
+ [], [])
+
+AC_CHECK_LIB([readline], [readline], [
+ AC_SUBST([LIBREADLINE], [-lreadline])
+ AC_DEFINE([HAVE_LIBREADLINE], [1], [Define if you have libreadline])],
+ [], [])
# -----------------------------------------------------------------------------
# 5. CHECK FOR HEADER FILES
@@ -1053,7 +1065,9 @@ TS_FLAG_HEADERS([sys/epoll.h \
math.h \
stdint.h \
net/ppp_defs.h \
- ifaddrs.h])
+ ifaddrs.h\
+ readline/readline.h \
+ editline/readline.h ])
AC_SUBST(sys_epollh)
AC_SUBST(sys_eventh)
@@ -1090,6 +1104,7 @@ AC_SUBST(sys_sysmacrosh)
AC_SUBST(mathh)
AC_SUBST(net_ppp_defsh)
AC_SUBST(ifaddrsh)
+AC_SUBST(readline_readlineh)
TS_FLAG_HEADERS([sys/sysctl.h], [], [],
[[#ifdef HAVE_SYS_PARAM_H
Modified: trafficserver/traffic/trunk/lib/ts/ink_config.h.in
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/lib/ts/ink_config.h.in?rev=1236973&r1=1236972&r2=1236973&view=diff
==============================================================================
--- trafficserver/traffic/trunk/lib/ts/ink_config.h.in (original)
+++ trafficserver/traffic/trunk/lib/ts/ink_config.h.in Sat Jan 28 04:04:45 2012
@@ -79,7 +79,8 @@
#define TS_HAVE_NETINET_IP_H @netinet_iph@
#define TS_HAVE_NETINET_IP_ICMP_H @netinet_ip_icmph@
#define TS_HAVE_EXECINFO_H @execinfoh@
-#define TS_HAVE_IFADDRS_H @ifaddrsh@
+#define TS_HAVE_IFADDRS_H @ifaddrsh@
+#define TS_HAVE_READLINE_READLINE_H @readline_readlineh@
/* Libraries */
#define TS_HAS_LIBZ @zlibh@
Modified: trafficserver/traffic/trunk/mgmt/cli/Makefile.am
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/mgmt/cli/Makefile.am?rev=1236973&r1=1236972&r2=1236973&view=diff
==============================================================================
--- trafficserver/traffic/trunk/mgmt/cli/Makefile.am (original)
+++ trafficserver/traffic/trunk/mgmt/cli/Makefile.am Sat Jan 28 04:04:45 2012
@@ -78,7 +78,8 @@ traffic_shell_LDADD = \
$(top_builddir)/mgmt/tools/libinkconfigapi.a \
$(top_builddir)/mgmt/utils/libutils_lm.a \
$(top_builddir)/lib/ts/libtsutil.la \
- $(LIBTCL) @LIBDL@ -lm @LIBICONV@ @LIBEXPAT@ @LIBSSL@ \
+ $(LIBTCL) $(LIBREADLINE) \
+ @LIBDL@ -lm @LIBICONV@ @LIBEXPAT@ @LIBSSL@ \
@LIBTHREAD@ @LIBSOCKET@ @LIBNSL@ @LIBRESOLV@ \
@LIBRT@ @LIBEXECINFO@ @LIBPCRE@
Modified: trafficserver/traffic/trunk/mgmt/cli/cliAppInit.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/mgmt/cli/cliAppInit.cc?rev=1236973&r1=1236972&r2=1236973&view=diff
==============================================================================
--- trafficserver/traffic/trunk/mgmt/cli/cliAppInit.cc (original)
+++ trafficserver/traffic/trunk/mgmt/cli/cliAppInit.cc Sat Jan 28 04:04:45 2012
@@ -53,6 +53,12 @@
#include "ConfigCmd.h"
#include "CliCreateCommands.h"
+#if HAVE_EDITLINE_READLINE_H
+#include <editline/readline.h>
+#elif HAVE_READLINE_READLINE_H
+#include <readline/readline.h>
+#endif
+
Tcl_Interp *interp;
extern Tcl_HashTable CommandHashtable;
@@ -124,3 +130,34 @@ Tcl_AppInit(Tcl_Interp * app_interp)
return TCL_OK;
}
+
+#if HAVE_LIBREADLINE
+
+// TCL main read, eval, print loop. We don't use Tcl_Main because we want to
+// use readline to get line editing and command history.
+void Tcl_ReadlineMain(void)
+{
+ char * line;
+
+ for (;;) {
+ line = readline("trafficserver> ");
+ if (line == NULL) {
+ // Received EOF. Bound this into a TCL exit command just like Tcl_Main
+ // does.
+ Tcl_Eval(interp, "exit;");
+ }
+
+ if (*line) {
+ add_history(line);
+ Tcl_Eval(interp, line);
+ }
+
+ free(line);
+ }
+
+ exit(0);
+}
+
+#endif // HAVE_LIBREADLINE
+
+// vim: set ts=2 sw=2 et :
Modified: trafficserver/traffic/trunk/mgmt/cli/cliMain.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/mgmt/cli/cliMain.cc?rev=1236973&r1=1236972&r2=1236973&view=diff
==============================================================================
--- trafficserver/traffic/trunk/mgmt/cli/cliMain.cc (original)
+++ trafficserver/traffic/trunk/mgmt/cli/cliMain.cc Sat Jan 28 04:04:45 2012
@@ -33,6 +33,7 @@
#include "mgmtapi.h"
extern int Tcl_AppInit(Tcl_Interp * interp);
+extern void Tcl_ReadlineMain(void);
extern int CliDisplayPrintf;
void eventCallbackFn(char *name, char *msg, int pri, void *data);
@@ -87,6 +88,10 @@ main(int argc, char *argv[])
register_event_callback();
+#if HAVE_LIBREADLINE
+ Tcl_SetMainLoop(Tcl_ReadlineMain);
+#endif
+
Tcl_Main(argc, argv, Tcl_AppInit);
exit(0);
}