diff --git a/CHANGES b/CHANGES
index a0fce4547de854e12f5e201f1516ce1fc9f691c2..a64b38e47f9b4c0609558c64d06d8178e544eebe 100644
--- a/CHANGES
+++ b/CHANGES
@@ -399,6 +399,8 @@ Core
    CONNECTED_LINE_SEND_SUB_ARGS.  For CCSS, use cc_callback_sub instead of
    cc_callback_macro in channel configurations.
 
+ * Asterisk can now use a system-provided NetBSD editline library (libedit) if it
+   is available.
 
 AGI
 ------------------
diff --git a/build_tools/menuselect-deps.in b/build_tools/menuselect-deps.in
index e8ab91a60876598bfe971d00095fc33ad3ce7d87..6f4418b26a33b76c8e3ed271ee95977ebdc7b6b8 100644
--- a/build_tools/menuselect-deps.in
+++ b/build_tools/menuselect-deps.in
@@ -27,6 +27,7 @@ IXJUSER=@PBX_IXJUSER@
 JACK=@PBX_JACK@
 KQUEUE=@PBX_KQUEUE@
 LDAP=@PBX_LDAP@
+LIBEDIT=@PBX_LIBEDIT@
 LIBXML2=@PBX_LIBXML2@
 LTDL=@PBX_LTDL@
 LUA=@PBX_LUA@
diff --git a/configure b/configure
index 2005fa01f3630767c932ed8083b8d107bb6bdeda..4933b842d4f3a165f493eb534d17ec694f6f889f 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.ac Revision: 369346 .
+# From configure.ac Revision: 370407 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.68 for asterisk trunk.
 #
@@ -649,6 +649,9 @@ CONFIG_NEON
 CONFIG_MYSQLCLIENT
 PBX_MISDN_FAC_ERROR
 PBX_MISDN_FAC_RESULT
+LIBEDIT_LIBS
+LIBEDIT_CFLAGS
+LIBEDIT_INTERNAL
 ILBC_LIBS
 ILBC_CFLAGS
 ILBC_INTERNAL
@@ -934,6 +937,10 @@ PBX_LIBXML2
 LIBXML2_DIR
 LIBXML2_INCLUDE
 LIBXML2_LIB
+PBX_LIBEDIT
+LIBEDIT_DIR
+LIBEDIT_INCLUDE
+LIBEDIT_LIB
 CURL_LIB
 CURL_INCLUDE
 _libcurl_config
@@ -1214,6 +1221,7 @@ with_jack
 with_kqueue
 with_ldap
 with_libcurl
+with_libedit
 with_libxml2
 with_ltdl
 with_lua
@@ -1281,6 +1289,8 @@ PKG_CONFIG_PATH
 PKG_CONFIG_LIBDIR
 ILBC_CFLAGS
 ILBC_LIBS
+LIBEDIT_CFLAGS
+LIBEDIT_LIBS
 GMIME_CFLAGS
 GMIME_LIBS
 GTK2_CFLAGS
@@ -1940,6 +1950,8 @@ Optional Packages:
   --with-kqueue=PATH      use kqueue support files in PATH
   --with-ldap=PATH        use OpenLDAP files in PATH
   --with-libcurl=DIR      look for the curl library in DIR
+  --with-libedit=PATH     use NetBSD Editline library files in PATH, use
+                          'internal' Editline otherwise
   --with-libxml2=PATH     use LibXML2 files in PATH
   --with-ltdl=PATH        use libtool files in PATH
   --with-lua=PATH         use Lua files in PATH
@@ -2006,6 +2018,10 @@ Some influential environment variables:
               path overriding pkg-config's built-in search path
   ILBC_CFLAGS C compiler flags for ILBC, overriding pkg-config
   ILBC_LIBS   linker flags for ILBC, overriding pkg-config
+  LIBEDIT_CFLAGS
+              C compiler flags for LIBEDIT, overriding pkg-config
+  LIBEDIT_LIBS
+              linker flags for LIBEDIT, overriding pkg-config
   GMIME_CFLAGS
               C compiler flags for GMIME, overriding pkg-config
   GMIME_LIBS  linker flags for GMIME, overriding pkg-config
@@ -9213,6 +9229,38 @@ _ACEOF
   unset _libcurl_with
 
 
+    LIBEDIT_DESCRIP="NetBSD Editline library"
+    LIBEDIT_OPTION="libedit"
+    PBX_LIBEDIT=0
+
+# Check whether --with-libedit was given.
+if test "${with_libedit+set}" = set; then :
+  withval=$with_libedit;
+	case ${withval} in
+	n|no)
+	USE_LIBEDIT=no
+	# -1 is a magic value used by menuselect to know that the package
+	# was disabled, other than 'not found'
+	PBX_LIBEDIT=-1
+	;;
+	y|ye|yes)
+	ac_mandatory_list="${ac_mandatory_list} LIBEDIT"
+	;;
+	*)
+	LIBEDIT_DIR="${withval}"
+	ac_mandatory_list="${ac_mandatory_list} LIBEDIT"
+	;;
+	esac
+
+fi
+
+
+
+
+
+
+
+
     LIBXML2_DESCRIP="LibXML2"
     LIBXML2_OPTION="libxml2"
     PBX_LIBXML2=0
@@ -17998,8 +18046,8 @@ $as_echo "#define HAVE_ILBC 1" >>confdefs.h
 fi
    fi
 
-      if test "$PBX_ILBC" = '1'; then
-	 ILBC_INTERNAL='no'
+      if test "$PBX_ILBC" = "1"; then
+	 ILBC_INTERNAL="no"
       fi
    fi
    if test "${ILBC_INTERNAL}" = "yes"; then
@@ -18007,6 +18055,113 @@ fi
    fi
 fi
 
+LIBEDIT_INTERNAL="yes"
+
+LIBEDIT_SYSTEM="yes"
+if test "${USE_LIBEDIT}" != "no"; then
+   if test "${LIBEDIT_DIR}" = "internal"; then
+      LIBEDIT_SYSTEM="no"
+   elif test "${LIBEDIT_DIR}" != ""; then
+      LIBEDIT_INTERNAL="no"
+   fi
+   if test "${LIBEDIT_SYSTEM}" = "yes"; then
+
+   if test "x${PBX_LIBEDIT}" != "x1" -a "${USE_LIBEDIT}" != "no"; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBEDIT" >&5
+$as_echo_n "checking for LIBEDIT... " >&6; }
+
+if test -n "$LIBEDIT_CFLAGS"; then
+    pkg_cv_LIBEDIT_CFLAGS="$LIBEDIT_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libedit\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libedit") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_LIBEDIT_CFLAGS=`$PKG_CONFIG --cflags "libedit" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$LIBEDIT_LIBS"; then
+    pkg_cv_LIBEDIT_LIBS="$LIBEDIT_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libedit\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libedit") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_LIBEDIT_LIBS=`$PKG_CONFIG --libs "libedit" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        LIBEDIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libedit" 2>&1`
+        else
+	        LIBEDIT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libedit" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$LIBEDIT_PKG_ERRORS" >&5
+
+
+            PBX_LIBEDIT=0
+
+
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+            PBX_LIBEDIT=0
+
+
+else
+	LIBEDIT_CFLAGS=$pkg_cv_LIBEDIT_CFLAGS
+	LIBEDIT_LIBS=$pkg_cv_LIBEDIT_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+            PBX_LIBEDIT=1
+            LIBEDIT_INCLUDE="$LIBEDIT_CFLAGS"
+            LIBEDIT_LIB="$LIBEDIT_LIBS"
+
+$as_echo "#define HAVE_LIBEDIT 1" >>confdefs.h
+
+
+fi
+   fi
+
+      if test "$PBX_LIBEDIT" = "1"; then
+	 LIBEDIT_INTERNAL="no"
+      fi
+   fi
+   if test "${LIBEDIT_INTERNAL}" = "yes"; then
+      PBX_LIBEDIT=1
+   fi
+fi
+
 
 if test "x${PBX_ICONV}" != "x1" -a "${USE_ICONV}" != "no"; then
    pbxlibdir=""
diff --git a/configure.ac b/configure.ac
index 55377d3184255590509ca4ea9c606e2ea9b838f2..99ed5110ed3fb8a6612effee8a25708648e33936 100644
--- a/configure.ac
+++ b/configure.ac
@@ -406,6 +406,7 @@ AST_EXT_LIB_SETUP([JACK], [Jack Audio Connection Kit], [jack])
 AST_EXT_LIB_SETUP([KQUEUE], [kqueue support], [kqueue])
 AST_EXT_LIB_SETUP([LDAP], [OpenLDAP], [ldap])
 AST_LIBCURL_CHECK_CONFIG([], [7.10.1])
+AST_EXT_LIB_SETUP([LIBEDIT], [NetBSD Editline library], [libedit], [, use 'internal' Editline otherwise])
 AST_EXT_LIB_SETUP([LIBXML2], [LibXML2], [libxml2])
 AST_EXT_LIB_SETUP([LTDL], [libtool], [ltdl])
 AST_EXT_LIB_SETUP([LUA], [Lua], [lua])
@@ -1262,8 +1263,8 @@ if test "${USE_ILBC}" != "no"; then
    fi
    if test "${ILBC_SYSTEM}" = "yes"; then
       AST_PKG_CONFIG_CHECK(ILBC, libilbc)
-      if test "$PBX_ILBC" = '1'; then
-	 ILBC_INTERNAL='no'
+      if test "$PBX_ILBC" = "1"; then
+	 ILBC_INTERNAL="no"
       fi
    fi
    if test "${ILBC_INTERNAL}" = "yes"; then
@@ -1271,6 +1272,26 @@ if test "${USE_ILBC}" != "no"; then
    fi
 fi
 
+LIBEDIT_INTERNAL="yes"
+AC_SUBST(LIBEDIT_INTERNAL)
+LIBEDIT_SYSTEM="yes"
+if test "${USE_LIBEDIT}" != "no"; then
+   if test "${LIBEDIT_DIR}" = "internal"; then
+      LIBEDIT_SYSTEM="no"
+   elif test "${LIBEDIT_DIR}" != ""; then
+      LIBEDIT_INTERNAL="no"
+   fi
+   if test "${LIBEDIT_SYSTEM}" = "yes"; then
+      AST_PKG_CONFIG_CHECK(LIBEDIT, libedit)
+      if test "$PBX_LIBEDIT" = "1"; then
+	 LIBEDIT_INTERNAL="no"
+      fi
+   fi
+   if test "${LIBEDIT_INTERNAL}" = "yes"; then
+      PBX_LIBEDIT=1
+   fi
+fi
+
 AST_EXT_LIB_CHECK([ICONV], [iconv], [iconv_open], [iconv.h])
 # GNU libiconv #define's iconv_open to libiconv_open, so we need to search for that symbol
 AST_EXT_LIB_CHECK([ICONV], [iconv], [libiconv_open], [iconv.h])
diff --git a/contrib/scripts/install_prereq b/contrib/scripts/install_prereq
index 609d400bec0fd65e900e7f219aa52f2b11f23cce..55da3ebfceebd15ae0a20cdb58077f19e6f2f56d 100755
--- a/contrib/scripts/install_prereq
+++ b/contrib/scripts/install_prereq
@@ -27,11 +27,11 @@ PACKAGES_DEBIAN="$PACKAGES_DEBIAN libcurl-dev libspeex-dev libspeexdsp-dev libog
 PACKAGES_DEBIAN="$PACKAGES_DEBIAN libpq-dev unixodbc-dev libsqlite0-dev libmysqlclient15-dev libneon27-dev libgmime-dev libusb-dev liblua5.1-0-dev lua5.1"
 PACKAGES_DEBIAN="$PACKAGES_DEBIAN libopenh323-dev libvpb-dev libgtk2.0-dev libmysqlclient-dev libbluetooth-dev libradiusclient-ng-dev freetds-dev"
 PACKAGES_DEBIAN="$PACKAGES_DEBIAN libsnmp-dev libiksemel-dev libcorosync-dev libnewt-dev libpopt-dev libical-dev libspandsp-dev libjack-dev"
-PACKAGES_DEBIAN="$PACKAGES_DEBIAN libresample-dev libc-client-dev binutils-dev libsrtp-dev libgsm1-dev"
+PACKAGES_DEBIAN="$PACKAGES_DEBIAN libresample-dev libc-client-dev binutils-dev libsrtp-dev libgsm1-dev libedit-dev"
 PACKAGES_RH="automake gcc gcc-c++ ncurses-devel openssl-devel libxml2-devel unixODBC-devel libcurl-devel libogg-devel libvorbis-devel speex-devel"
 PACKAGES_RH="$PACKAGES_RH spandsp-devel freetds-devel net-snmp-devel iksemel-devel corosynclib-devel newt-devel popt-devel libtool-ltdl-devel lua-devel"
 PACKAGES_RH="$PACKAGES_RH libsqlite3x-devel radiusclient-ng-devel portaudio-devel postgresql-devel libresample-devel neon-devel libical-devel"
-PACKAGES_RH="$PACKAGES_RH openldap-devel gmime22-devel sqlite2-devel mysql-devel bluez-libs-devel jack-audio-connection-kit-devel gsm-devel"
+PACKAGES_RH="$PACKAGES_RH openldap-devel gmime22-devel sqlite2-devel mysql-devel bluez-libs-devel jack-audio-connection-kit-devel gsm-devel libedit-devel"
 
 PACKAGES_OBSD="popt gmake wget libxml libogg libvorbis curl iksemel spandsp speex iodbc freetds-0.63p1-msdblib mysql-client gmime sqlite sqlite3 jack"
 
diff --git a/include/asterisk/autoconfig.h.in b/include/asterisk/autoconfig.h.in
index 481726269551761f86df827469233263b14f0445..9288cce545c276ccce244a98ead4f2c382251734 100644
--- a/include/asterisk/autoconfig.h.in
+++ b/include/asterisk/autoconfig.h.in
@@ -376,6 +376,9 @@
 /* Define to 1 if you have the OpenLDAP library. */
 #undef HAVE_LDAP
 
+/* Define if your system has the LIBEDIT libraries. */
+#undef HAVE_LIBEDIT
+
 /* Define to 1 if you have the <libintl.h> header file. */
 #undef HAVE_LIBINTL_H
 
diff --git a/main/Makefile b/main/Makefile
index 4d446f08c2e5206334b227ecb6bc8158f8b37e5a..0ff0deaf865d722f35ed2c9c86b3a571f32b9f94 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 23d6c2320c268ab9440e27d6a2734e3ae05f95df..e06d70a4aaa0df2d53fcc16f770c144ea727436e 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 bb20bc1fa9d23d08f66a1773a1c39916d5ef0cbd..7f71da924c71b8483639efa58bbc4be0e56a41d2 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 b5fc6e02c33e3fc818c1cba1dc4c4dcfd1b36ab4..d5d0a4deafbb55239a2c0c1039493a4d98a3ed0d 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 db533343d04af1f2ab848586475c6e10b3c53016..d8bc706b1fcbcf37d48632a48185a6d82b311eaf 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 77827c3f911945e6d0c5722085f77848e08a864d..adf054d633d381134c1394478430af2b30d95b26 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
similarity index 100%
rename from main/editline/readline/readline.h
rename to main/editline/readline.h
diff --git a/makeopts.in b/makeopts.in
index bcb3a51441f2c634a31b44ceef11d2b366871fd1..dd10f9b54ad785d9d28b7156da05c41eb44393e4 100644
--- a/makeopts.in
+++ b/makeopts.in
@@ -169,6 +169,10 @@ JACK_LIB=@JACK_LIB@
 LDAP_INCLUDE=@LDAP_INCLUDE@
 LDAP_LIB=@LDAP_LIB@
 
+LIBEDIT_INTERNAL=@LIBEDIT_INTERNAL@
+LIBEDIT_INCLUDE=@LIBEDIT_INCLUDE@
+LIBEDIT_LIB=@LIBEDIT_LIB@
+
 LUA_INCLUDE=@LUA_INCLUDE@
 LUA_LIB=@LUA_LIB@