summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorKevin P. Fleming <kpfleming@digium.com>2012-07-25 12:21:54 +0000
committerKevin P. Fleming <kpfleming@digium.com>2012-07-25 12:21:54 +0000
commit7d4ccea736c1ce325de00c23dee28c61de47e638 (patch)
tree70bf7912bb022d6c064a75e7a49e60e9d9e61ecb /main
parent38f1081fd396e39e0c02600a5d58080880838131 (diff)
Enable usage of system-provided NetBSD editline library if available.
This patch changes the Asterisk configure script and build system to detect the presence of the NetBSD editline library (libedit) on the system. If it is found, it will be used in preference to the version included in the Asterisk source tree. (closes issue ASTERISK-18725) Reported by: Jeffrey C. Ollie Review: https://reviewboard.asterisk.org/r/1528/ Patches: 0001-Allow-linking-building-against-an-external-editline.patch uploaded by jcollie (license #5373) (heavily modified by kpfleming) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@370481 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main')
-rw-r--r--main/Makefile15
-rw-r--r--main/asterisk.c29
-rw-r--r--main/cli.c2
-rwxr-xr-xmain/editline/configure2
-rw-r--r--main/editline/configure.in2
-rw-r--r--main/editline/readline.c2
-rw-r--r--main/editline/readline.h (renamed from main/editline/readline/readline.h)0
7 files changed, 22 insertions, 30 deletions
diff --git a/main/Makefile b/main/Makefile
index 4d446f08c..0ff0deaf8 100644
--- a/main/Makefile
+++ b/main/Makefile
@@ -144,7 +144,14 @@ testexpr2: ast_expr2f.c ast_expr2.c ast_expr2.h
$(CC) -g -o testexpr2 ast_expr2f.o ast_expr2.o -lm
rm ast_expr2.o ast_expr2f.o
+ifneq ($(LIBEDIT_INTERNAL),no)
+LIBEDIT_OBJ=editline/libedit.a
+LIBEDIT_INCLUDE=-Ieditline
+endif
+
db.o: _ASTCFLAGS+=$(SQLITE3_INCLUDE)
+asterisk.o: _ASTCFLAGS+=$(LIBEDIT_INCLUDE)
+cli.o: _ASTCFLAGS+=$(LIBEDIT_INCLUDE)
ifneq ($(findstring ENABLE_UPLOADS,$(MENUSELECT_CFLAGS)),)
http.o: _ASTCFLAGS+=$(GMIME_INCLUDE)
@@ -228,13 +235,13 @@ endif
endif
-$(MAIN_TGT): $(OBJS) $(ASTSSL_LIB) editline/libedit.a $(AST_EMBED_LDSCRIPTS)
+$(MAIN_TGT): $(OBJS) $(ASTSSL_LIB) $(LIBEDIT_OBJ) $(AST_EMBED_LDSCRIPTS)
@$(CC) -c -o buildinfo.o $(_ASTCFLAGS) buildinfo.c $(ASTCFLAGS)
- $(ECHO_PREFIX) echo " [LD] $(OBJS) editline/libedit.a $(AST_EMBED_LDSCRIPTS) -> $@"
+ $(ECHO_PREFIX) echo " [LD] $(OBJS) $(LIBEDIT_OBJ) $(AST_EMBED_LDSCRIPTS) -> $@"
ifneq ($(findstring chan_h323,$(MENUSELECT_CHANNELS)),)
- $(CMD_PREFIX) $(CC) $(STATIC_BUILD) -o $@ $(ASTLINK) $(AST_EMBED_LDFLAGS) $(_ASTLDFLAGS) $(ASTLDFLAGS) $(OBJS) $(ASTSSL_LDLIBS) editline/libedit.a $(AST_EMBED_LDSCRIPTS) buildinfo.o $(AST_LIBS) $(AST_EMBED_LIBS) $(GMIMELDFLAGS)
+ $(CMD_PREFIX) $(CC) $(STATIC_BUILD) -o $@ $(ASTLINK) $(AST_EMBED_LDFLAGS) $(_ASTLDFLAGS) $(ASTLDFLAGS) $(OBJS) $(ASTSSL_LDLIBS) $(LIBEDIT_OBJ) $(AST_EMBED_LDSCRIPTS) buildinfo.o $(AST_LIBS) $(AST_EMBED_LIBS) $(GMIMELDFLAGS) $(LIBEDIT_LIB)
else
- $(CMD_PREFIX) $(CXX) $(STATIC_BUILD) -o $@ $(ASTLINK) $(AST_EMBED_LDFLAGS) $(_ASTLDFLAGS) $(ASTLDFLAGS) $(H323LDFLAGS) $(OBJS) $(ASTSSL_LDLIBS) editline/libedit.a $(AST_EMBED_LDSCRIPTS) buildinfo.o $(AST_LIBS) $(AST_EMBED_LIBS) $(H323LDLIBS) $(GMIMELDFLAGS)
+ $(CMD_PREFIX) $(CXX) $(STATIC_BUILD) -o $@ $(ASTLINK) $(AST_EMBED_LDFLAGS) $(_ASTLDFLAGS) $(ASTLDFLAGS) $(H323LDFLAGS) $(OBJS) $(ASTSSL_LDLIBS) $(LIBEDIT_OBJ) $(AST_EMBED_LDSCRIPTS) buildinfo.o $(AST_LIBS) $(AST_EMBED_LIBS) $(H323LDLIBS) $(GMIMELDFLAGS) $(LIBEDIT_LIB)
endif
ifeq ($(GNU_LD),1)
diff --git a/main/asterisk.c b/main/asterisk.c
index 23d6c2320..e06d70a4a 100644
--- a/main/asterisk.c
+++ b/main/asterisk.c
@@ -98,6 +98,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#endif
#endif
#include <regex.h>
+#include <histedit.h>
#if defined(SOLARIS)
int daemon(int, int); /* defined in libresolv of all places */
@@ -2704,7 +2705,7 @@ static char *cli_complete(EditLine *editline, int ch)
int mlen = 0, maxmbuf = 2048;
/* Start with a 2048 byte buffer */
if (!(mbuf = ast_malloc(maxmbuf))) {
- lf->cursor[0] = savechr;
+ *((char *) lf->cursor) = savechr;
return (char *)(CC_ERROR);
}
snprintf(buf, sizeof(buf), "_COMMAND MATCHESARRAY \"%s\" \"%s\"", lf->buffer, ptr);
@@ -2716,7 +2717,7 @@ static char *cli_complete(EditLine *editline, int ch)
/* Every step increment buffer 1024 bytes */
maxmbuf += 1024;
if (!(mbuf = ast_realloc(mbuf, maxmbuf))) {
- lf->cursor[0] = savechr;
+ *((char *) lf->cursor) = savechr;
return (char *)(CC_ERROR);
}
}
@@ -2778,7 +2779,7 @@ static char *cli_complete(EditLine *editline, int ch)
ast_free(matches);
}
- lf->cursor[0] = savechr;
+ *((char *) lf->cursor) = savechr;
return (char *)(long)retval;
}
@@ -2861,29 +2862,13 @@ static int ast_el_write_history(char *filename)
static int ast_el_read_history(char *filename)
{
- char buf[MAX_HISTORY_COMMAND_LENGTH];
- FILE *f;
- int ret = -1;
+ HistEvent ev;
- if (el_hist == NULL || el == NULL)
+ if (el_hist == NULL || el == NULL) {
ast_el_initialize();
-
- if ((f = fopen(filename, "r")) == NULL)
- return ret;
-
- while (!feof(f)) {
- if (!fgets(buf, sizeof(buf), f))
- break;
- if (!strcmp(buf, "_HiStOrY_V2_\n"))
- continue;
- if (ast_all_zeros(buf))
- continue;
- if ((ret = ast_el_add_history(buf)) == -1)
- break;
}
- fclose(f);
- return ret;
+ return history(el_hist, &ev, H_LOAD, filename);
}
static void ast_remotecontrol(char *data)
diff --git a/main/cli.c b/main/cli.c
index bb20bc1fa..7f71da924 100644
--- a/main/cli.c
+++ b/main/cli.c
@@ -39,6 +39,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include <regex.h>
#include <pwd.h>
#include <grp.h>
+#include <editline/readline.h>
#include "asterisk/cli.h"
#include "asterisk/linkedlists.h"
@@ -48,7 +49,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/utils.h"
#include "asterisk/app.h"
#include "asterisk/lock.h"
-#include "editline/readline/readline.h"
#include "asterisk/threadstorage.h"
#include "asterisk/translate.h"
diff --git a/main/editline/configure b/main/editline/configure
index b5fc6e02c..d5d0a4dea 100755
--- a/main/editline/configure
+++ b/main/editline/configure
@@ -2031,7 +2031,7 @@ TCSRCS="TEST/test.c"
if test "x$enable_readline" = "xyes" ; then
CCSRCS="$CCSRCS readline.c"
- IHDRS="$IHDRS readline/readline.h"
+ IHDRS="$IHDRS readline.h"
IHDR_LINKS="readline.h readline/history.h"
HDR_DIRS="$HDR_DIRS include/readline"
LIB_A_LINKS="$LIB_A_LINKS libedit.a libreadline.a"
diff --git a/main/editline/configure.in b/main/editline/configure.in
index db533343d..d8bc706b1 100644
--- a/main/editline/configure.in
+++ b/main/editline/configure.in
@@ -235,7 +235,7 @@ TCSRCS="TEST/test.c"
dnl Add files to the lists if readline compatibility is enabled.
if test "x$enable_readline" = "xyes" ; then
CCSRCS="$CCSRCS readline.c"
- IHDRS="$IHDRS readline/readline.h"
+ IHDRS="$IHDRS readline.h"
IHDR_LINKS="readline.h readline/history.h"
HDR_DIRS="$HDR_DIRS include/readline"
LIB_A_LINKS="$LIB_A_LINKS libedit.a libreadline.a"
diff --git a/main/editline/readline.c b/main/editline/readline.c
index 77827c3f9..adf054d63 100644
--- a/main/editline/readline.c
+++ b/main/editline/readline.c
@@ -58,7 +58,7 @@ __RCSID("$NetBSD: readline.c,v 1.21 2002/03/18 16:20:36 christos Exp $");
#endif
#include "histedit.h"
-#include "readline/readline.h"
+#include "readline.h"
#include "el.h"
#include "fcns.h" /* for EL_NUM_FCNS */
diff --git a/main/editline/readline/readline.h b/main/editline/readline.h
index 7485dde40..7485dde40 100644
--- a/main/editline/readline/readline.h
+++ b/main/editline/readline.h