mirror of
https://github.com/troglobit/editline.git
synced 2025-09-17 09:28:10 +08:00
Compare commits
10 Commits
readline-c
...
1.14.0
Author | SHA1 | Date | |
---|---|---|---|
![]() |
0646b511ab | ||
![]() |
4f134f1025 | ||
![]() |
850e36f9db | ||
![]() |
d72069144e | ||
![]() |
fc08d47bce | ||
![]() |
87e69be38b | ||
![]() |
f984a48dae | ||
![]() |
d4d0c002dc | ||
![]() |
2b747467f0 | ||
![]() |
56478685d6 |
44
INSTALL
Normal file
44
INSTALL
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
HowTo Build Minix Editline
|
||||||
|
==========================
|
||||||
|
|
||||||
|
Minix editline makes use of GNU configure tools, which includes autoconf, automake
|
||||||
|
and libtool. This enables high levels of portability and ease of use In most cases
|
||||||
|
all you need to do is unpack the tarball, enter the directory and type:
|
||||||
|
|
||||||
|
./configure
|
||||||
|
|
||||||
|
There are are, however, more options available. For instance, sometimes it is useful
|
||||||
|
to build editline as a static library, type:
|
||||||
|
|
||||||
|
./configure --disable-shared
|
||||||
|
|
||||||
|
By default editline employs a default handler for the TAB key, pressing it once
|
||||||
|
completes to the nearest matching filename in the current working directory, or it
|
||||||
|
can display a listing of possible completions. For some uses this default is not
|
||||||
|
desirable at all, type:
|
||||||
|
|
||||||
|
./configure --disable-default-complete
|
||||||
|
|
||||||
|
An even more common desire is to change the default install location. By default all
|
||||||
|
configure scripts setup /usr/local as the install "prefix", to change this type:
|
||||||
|
|
||||||
|
./configure --prefix=/home/troglobit/tmp
|
||||||
|
|
||||||
|
Advanced users are encouraged to read up on --libdir, --mandir, etc. in the GNU
|
||||||
|
Configure and Build System.
|
||||||
|
|
||||||
|
For more available options, type:
|
||||||
|
|
||||||
|
./configure --help
|
||||||
|
|
||||||
|
To build and install, simply type:
|
||||||
|
|
||||||
|
make
|
||||||
|
|
||||||
|
followed by
|
||||||
|
|
||||||
|
sudo make install
|
||||||
|
|
||||||
|
Good Luck!
|
||||||
|
//Joachim
|
||||||
|
|
@@ -36,8 +36,8 @@ host_triplet = @host@
|
|||||||
subdir = .
|
subdir = .
|
||||||
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||||
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
|
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
|
||||||
$(top_srcdir)/configure NEWS TODO config.guess config.sub \
|
$(top_srcdir)/configure INSTALL NEWS TODO config.guess \
|
||||||
depcomp install-sh ltmain.sh missing
|
config.sub depcomp install-sh ltmain.sh missing
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||||
|
43
README
43
README
@@ -1,39 +1,36 @@
|
|||||||
README -*-text-*-
|
README -*-text-*-
|
||||||
|
|
||||||
This is a line editing library. It can be linked into almost any program to
|
This is a line editing library. It can be linked into almost any program to
|
||||||
provide command-line editing and history.
|
provide command-line editing and history. It is call-compatible with the FSF
|
||||||
|
readline library, but is a fraction of the size (and offers fewer features).
|
||||||
|
|
||||||
It is call-compatible with the FSF readline library, but it is a fraction of
|
The editline library was created by Simmule Turner and Rich Salz back in 1992.
|
||||||
the size (and offers fewer features). It does not use standard I/O. It is
|
At the time they chose to distribute the code under a "C News-like" copyright,
|
||||||
distributed under a "C News-like" copyright, see the file LICENSE for details.
|
see the file LICENSE for details.
|
||||||
|
|
||||||
|
The small size (<30k), lack of dependencies (no ncurses needed!) and the free
|
||||||
|
license should make this library interesting to many embedded developers.
|
||||||
|
|
||||||
Configuration is made by supplying different options to the GNU configure
|
Configuration is made by supplying different options to the GNU configure
|
||||||
script. In the examples/ directory you can find some small code snippets
|
script. In the examples/ directory you can find some small code snippets used
|
||||||
used for testing.
|
for testing.
|
||||||
|
|
||||||
Before finding out about the Debian version I was on the lookout for a really
|
This version of the editline library is a fork off the Minix3 sources. Other
|
||||||
small replacement for the GNU readline package. Not only was libreadline large
|
know versions, often based off of the original comp.sources.unix posting are:
|
||||||
and GPL:ed (instead of LGPL:ed), it also depends on libncurses, the resulting
|
|
||||||
size was a bit too much for my embedded system. I eventually stubmled upon the
|
|
||||||
BSD libedit library, which was sufficient for a while, even though it too
|
|
||||||
depends on libncurses. I searched my soul and went back to where I, back in
|
|
||||||
1996, started out -- Minix. And there it was, a really small readline
|
|
||||||
replacement!
|
|
||||||
|
|
||||||
In 2000 Jim Studt packaged libeditline for Debian[1], the exact origin of the
|
* Debian libeditline, http://packages.qa.debian.org/e/editline.html
|
||||||
Debian code base is unclear, see the Sid package[2] for details. There were
|
* Heimdal, http://www.h5l.org
|
||||||
some notable differences between that version and the upstream Minix sources,
|
* Festival speech-tools, http://festvox.org/festival/
|
||||||
all of which have now been merged here.
|
* Steve Tell's editline patches, http://www.cs.unc.edu/~tell/dist.html
|
||||||
|
|
||||||
|
The most intersting patches and bug fixes from each fork have been merged here.
|
||||||
|
Outstanding issues are listed in the TODO file.
|
||||||
|
|
||||||
An explanation of the version numbering may be in order. I didn't know about
|
An explanation of the version numbering may be in order. I didn't know about
|
||||||
the Debian version for quite some time, so I kept a different name for the
|
the Debian version for quite some time, so I kept a different name for the
|
||||||
package and a different versioning scheme. In June 2009, I decided to line up
|
package and a different versioning scheme. In June 2009, I decided to line up
|
||||||
alongside Debian, with the intent of merging the efforts. Sorry for any
|
alongside Debian, with the intent of merging the efforts.
|
||||||
confusion this might cause.
|
|
||||||
|
|
||||||
Enjoy,
|
Enjoy,
|
||||||
Joachim Nilsson <troglobit()vmlinux!org>
|
Joachim Nilsson <troglobit()vmlinux!org>
|
||||||
|
|
||||||
[1] - http://lists.debian.org/debian-devel/2000/05/msg00548.html
|
|
||||||
[2] - http://packages.debian.org/sid/libeditline0
|
|
||||||
|
|
||||||
|
29
TODO
29
TODO
@@ -1,12 +1,35 @@
|
|||||||
TODO
|
TODO -*-org-*-
|
||||||
|
|
||||||
|
Issues in need of work. Mostly compatibility with GNU readline, BSD libedit,
|
||||||
|
http://www.thrysoee.dk/editline/, and usability improvements.
|
||||||
|
|
||||||
|
Remember, the general idea is to keep Minix editline small.
|
||||||
|
|
||||||
|
* Verify for 1.14.0 that custom completion handlers still work
|
||||||
|
After reverting "fix" in 0.2.2 that made rl_complete() a function pointer we need to
|
||||||
|
make sure the same functionality is still available with the new infrastructure.
|
||||||
|
(Which is more inspired by BSD libedit and GNU readline.
|
||||||
|
|
||||||
|
* Investigate GNU readline dependencies needed for "fileman" example
|
||||||
|
The BSD libedit library has imported the GNU readline "fileman" example into its
|
||||||
|
tree to demonstrate the abilities of that library. This would also be quite useful
|
||||||
|
for Minix editline.
|
||||||
|
|
||||||
|
The first task is to investigate the depependencies and form TODO list items
|
||||||
|
detailing what is missing and, if possible, proposals how to implement including any
|
||||||
|
optional configure flags.
|
||||||
|
|
||||||
* Port "fileman" example from BSD libedit, http://www.thrysoee.dk/editline/
|
|
||||||
* Instead of supporting multiline input, try the Emacs approach, line scrolling.
|
* Instead of supporting multiline input, try the Emacs approach, line scrolling.
|
||||||
|
|
||||||
* Add support for rl_bind_key(), currently only en editline specific el_bind_key() exists.
|
* Add support for rl_bind_key(), currently only en editline specific el_bind_key() exists.
|
||||||
* Add support for inhibiting completion: rl_inhibit_completion
|
|
||||||
* Make "char *rl_prompt" globally visible.
|
* Make "char *rl_prompt" globally visible.
|
||||||
|
|
||||||
* Add support for rl_set_prompt().
|
* Add support for rl_set_prompt().
|
||||||
|
|
||||||
* Add support for --enable-utf8 to configure
|
* Add support for --enable-utf8 to configure
|
||||||
|
|
||||||
* Use strcmp(nl_langinfo(CODESET), "UTF-8") to look for utf8 capable terminal.
|
* Use strcmp(nl_langinfo(CODESET), "UTF-8") to look for utf8 capable terminal.
|
||||||
|
|
||||||
* Implement simple UTF-8 parser according to http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
* Implement simple UTF-8 parser according to http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||||
|
|
||||||
|
20
configure
vendored
20
configure
vendored
@@ -1,6 +1,6 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.65 for editline 1.14.0-rc1.
|
# Generated by GNU Autoconf 2.65 for editline 1.14.0.
|
||||||
#
|
#
|
||||||
# Report bugs to <troglobit@vmlinux.org>.
|
# Report bugs to <troglobit@vmlinux.org>.
|
||||||
#
|
#
|
||||||
@@ -701,8 +701,8 @@ MAKEFLAGS=
|
|||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='editline'
|
PACKAGE_NAME='editline'
|
||||||
PACKAGE_TARNAME='editline'
|
PACKAGE_TARNAME='editline'
|
||||||
PACKAGE_VERSION='1.14.0-rc1'
|
PACKAGE_VERSION='1.14.0'
|
||||||
PACKAGE_STRING='editline 1.14.0-rc1'
|
PACKAGE_STRING='editline 1.14.0'
|
||||||
PACKAGE_BUGREPORT='troglobit@vmlinux.org'
|
PACKAGE_BUGREPORT='troglobit@vmlinux.org'
|
||||||
PACKAGE_URL=''
|
PACKAGE_URL=''
|
||||||
|
|
||||||
@@ -1424,7 +1424,7 @@ if test "$ac_init_help" = "long"; then
|
|||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# Omit some internal or obsolete options to make the list less imposing.
|
||||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures editline 1.14.0-rc1 to adapt to many kinds of systems.
|
\`configure' configures editline 1.14.0 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
@@ -1494,7 +1494,7 @@ fi
|
|||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of editline 1.14.0-rc1:";;
|
short | recursive ) echo "Configuration of editline 1.14.0:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
@@ -1604,7 +1604,7 @@ fi
|
|||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
editline configure 1.14.0-rc1
|
editline configure 1.14.0
|
||||||
generated by GNU Autoconf 2.65
|
generated by GNU Autoconf 2.65
|
||||||
|
|
||||||
Copyright (C) 2009 Free Software Foundation, Inc.
|
Copyright (C) 2009 Free Software Foundation, Inc.
|
||||||
@@ -2029,7 +2029,7 @@ cat >config.log <<_ACEOF
|
|||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by editline $as_me 1.14.0-rc1, which was
|
It was created by editline $as_me 1.14.0, which was
|
||||||
generated by GNU Autoconf 2.65. Invocation command line was
|
generated by GNU Autoconf 2.65. Invocation command line was
|
||||||
|
|
||||||
$ $0 $@
|
$ $0 $@
|
||||||
@@ -2843,7 +2843,7 @@ fi
|
|||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE='editline'
|
PACKAGE='editline'
|
||||||
VERSION='1.14.0-rc1'
|
VERSION='1.14.0'
|
||||||
|
|
||||||
|
|
||||||
cat >>confdefs.h <<_ACEOF
|
cat >>confdefs.h <<_ACEOF
|
||||||
@@ -11920,7 +11920,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
|||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by editline $as_me 1.14.0-rc1, which was
|
This file was extended by editline $as_me 1.14.0, which was
|
||||||
generated by GNU Autoconf 2.65. Invocation command line was
|
generated by GNU Autoconf 2.65. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
@@ -11986,7 +11986,7 @@ _ACEOF
|
|||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
editline config.status 1.14.0-rc1
|
editline config.status 1.14.0
|
||||||
configured by $0, generated by GNU Autoconf 2.65,
|
configured by $0, generated by GNU Autoconf 2.65,
|
||||||
with options \\"\$ac_cs_config\\"
|
with options \\"\$ac_cs_config\\"
|
||||||
|
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
AC_PREREQ(2.61)
|
AC_PREREQ(2.61)
|
||||||
AC_INIT(editline, 1.14.0-rc1, troglobit@vmlinux.org)
|
AC_INIT(editline, 1.14.0, troglobit@vmlinux.org)
|
||||||
AC_CONFIG_SRCDIR([src/editline.c])
|
AC_CONFIG_SRCDIR([src/editline.c])
|
||||||
AC_CONFIG_HEADER([config.h])
|
AC_CONFIG_HEADER([config.h])
|
||||||
AC_CONFIG_MACRO_DIR([m4])
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
|
6
debian/changelog
vendored
6
debian/changelog
vendored
@@ -1,3 +1,9 @@
|
|||||||
|
editline (1.14.0-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* Update to new configure based build.
|
||||||
|
|
||||||
|
-- Joachim Nilsson <joachim.nilsson@vmlinux.org> Wed, 11 Aug 2010 13:28:00 +0100
|
||||||
|
|
||||||
editline (1.12-6) unstable; urgency=low
|
editline (1.12-6) unstable; urgency=low
|
||||||
|
|
||||||
* Switch package format to 3.0 (quilt).
|
* Switch package format to 3.0 (quilt).
|
||||||
|
1
debian/editline1.files
vendored
1
debian/editline1.files
vendored
@@ -1 +0,0 @@
|
|||||||
usr/lib/*.so.*
|
|
4
debian/libeditline-dev.install
vendored
Normal file
4
debian/libeditline-dev.install
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
usr/include
|
||||||
|
usr/lib/libeditline*.*a
|
||||||
|
usr/lib/libeditline*.so
|
||||||
|
usr/share/man/man3
|
1
debian/libeditline0.install
vendored
Normal file
1
debian/libeditline0.install
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
usr/lib/libeditline*.so.*
|
33
debian/rules
vendored
33
debian/rules
vendored
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/make -f
|
#!/usr/bin/make -f
|
||||||
# Sample debian/rules that uses debhelper.
|
# debian/rules for libeditline
|
||||||
# GNU copyright 1997 to 1999 by Joey Hess.
|
# GNU copyright 1997 to 1999 by Joey Hess.
|
||||||
|
|
||||||
# Uncomment this to turn on verbose mode.
|
# Uncomment this to turn on verbose mode.
|
||||||
@@ -12,14 +12,12 @@ major=0
|
|||||||
build: build-stamp
|
build: build-stamp
|
||||||
build-stamp:
|
build-stamp:
|
||||||
dh_testdir
|
dh_testdir
|
||||||
$(MAKE)
|
dh_auto_configure
|
||||||
touch build-stamp
|
dh_auto_build
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
dh_testdir
|
dh_testdir
|
||||||
dh_testroot
|
dh_auto_clean
|
||||||
rm -f build-stamp
|
|
||||||
[ ! -f Makefile ] || $(MAKE) clean
|
|
||||||
dh_clean
|
dh_clean
|
||||||
|
|
||||||
install: build
|
install: build
|
||||||
@@ -27,29 +25,18 @@ install: build
|
|||||||
dh_testroot
|
dh_testroot
|
||||||
dh_clean -k
|
dh_clean -k
|
||||||
dh_installdirs
|
dh_installdirs
|
||||||
$(MAKE) install DESTDIR=`pwd`/debian/libeditline-dev
|
dh_auto_install
|
||||||
cp include_editline.h \
|
|
||||||
`pwd`/debian/libeditline-dev/usr/include/editline.h
|
|
||||||
|
|
||||||
binary-indep: build install
|
binary-indep: install
|
||||||
|
|
||||||
binary-arch: build install
|
# build libeditline${major} package by moving files from editline-dev
|
||||||
|
binary-arch: install
|
||||||
dh_testdir
|
dh_testdir
|
||||||
dh_testroot
|
dh_testroot
|
||||||
# build libeditline${major} package by moving files from editline-dev
|
dh_auto_install
|
||||||
dh_movefiles --sourcedir=debian/libeditline-dev \
|
dh_install --sourcedir=debian/tmp
|
||||||
-plibeditline$(major) \
|
|
||||||
usr/lib/libeditline.so.$(major) \
|
|
||||||
usr/lib/libeditline.so.$(version)
|
|
||||||
dh_installdocs
|
dh_installdocs
|
||||||
dh_installexamples
|
|
||||||
dh_installmenu
|
|
||||||
dh_installmanpages
|
|
||||||
rm -rf debian/libeditline0/usr/share/man/
|
|
||||||
dh_installcron
|
|
||||||
dh_installinfo
|
|
||||||
dh_installchangelogs
|
dh_installchangelogs
|
||||||
dh_link
|
|
||||||
dh_strip
|
dh_strip
|
||||||
dh_compress
|
dh_compress
|
||||||
dh_fixperms
|
dh_fixperms
|
||||||
|
@@ -53,6 +53,7 @@ extern int rl_list_possib(char *token, char ***av);
|
|||||||
extern int rl_point;
|
extern int rl_point;
|
||||||
extern int rl_mark;
|
extern int rl_mark;
|
||||||
extern int rl_end;
|
extern int rl_end;
|
||||||
|
extern int rl_inhibit_complete;
|
||||||
extern char *rl_line_buffer;
|
extern char *rl_line_buffer;
|
||||||
extern const char *rl_readline_name;
|
extern const char *rl_readline_name;
|
||||||
extern FILE *rl_instream; /* The stdio stream from which input is read. Defaults to stdin if NULL - Not supported yet! */
|
extern FILE *rl_instream; /* The stdio stream from which input is read. Defaults to stdin if NULL - Not supported yet! */
|
||||||
|
@@ -116,6 +116,7 @@ int rl_point;
|
|||||||
int rl_mark;
|
int rl_mark;
|
||||||
int rl_end;
|
int rl_end;
|
||||||
int rl_meta_chars = 0; /* Display 8-bit chars as the actual char(0) or as `M-x'(1)? */
|
int rl_meta_chars = 0; /* Display 8-bit chars as the actual char(0) or as `M-x'(1)? */
|
||||||
|
int rl_inhibit_complete = 0;
|
||||||
char *rl_line_buffer;
|
char *rl_line_buffer;
|
||||||
const char *rl_prompt;
|
const char *rl_prompt;
|
||||||
const char *rl_readline_name; /* Set by calling program, for conditional parsing of ~/.inputrc - Not supported yet! */
|
const char *rl_readline_name; /* Set by calling program, for conditional parsing of ~/.inputrc - Not supported yet! */
|
||||||
@@ -243,23 +244,6 @@ static void tty_backn(int n)
|
|||||||
|
|
||||||
static void tty_info(void)
|
static void tty_info(void)
|
||||||
{
|
{
|
||||||
static int init;
|
|
||||||
|
|
||||||
if (init) {
|
|
||||||
#ifdef TIOCGWINSZ
|
|
||||||
struct winsize W;
|
|
||||||
|
|
||||||
if (ioctl(el_outfd, TIOCGWINSZ, &W) >= 0 && W.ws_col > 0 && W.ws_row > 0) {
|
|
||||||
tty_cols = (int)W.ws_col;
|
|
||||||
tty_rows = (int)W.ws_row;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
init++;
|
|
||||||
|
|
||||||
/* Initialize to faulty values to trigger fallback if nothing else works. */
|
|
||||||
tty_cols = tty_rows = -1;
|
|
||||||
rl_reset_terminal(NULL);
|
rl_reset_terminal(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -904,7 +888,15 @@ static el_status_t emacs(int c)
|
|||||||
if (kp->Key == c)
|
if (kp->Key == c)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
s = kp->Function ? kp->Function() : insert_char(c);
|
|
||||||
|
if (kp->Function) {
|
||||||
|
s = kp->Function();
|
||||||
|
if (s == CSdispatch) /* If Function is inhibited. */
|
||||||
|
s = insert_char(c);
|
||||||
|
} else {
|
||||||
|
s = insert_char(c);
|
||||||
|
}
|
||||||
|
|
||||||
if (!el_pushed) {
|
if (!el_pushed) {
|
||||||
/* No pushback means no repeat count; hacky, but true. */
|
/* No pushback means no repeat count; hacky, but true. */
|
||||||
Repeat = NO_ARG;
|
Repeat = NO_ARG;
|
||||||
@@ -1073,7 +1065,7 @@ static char *read_redirected(void)
|
|||||||
void rl_reset_terminal(const char *terminal_name)
|
void rl_reset_terminal(const char *terminal_name)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USE_TERMCAP
|
#ifdef CONFIG_USE_TERMCAP
|
||||||
char buff[2048];
|
char buf[1024];
|
||||||
char *bp;
|
char *bp;
|
||||||
#endif
|
#endif
|
||||||
#ifdef TIOCGWINSZ
|
#ifdef TIOCGWINSZ
|
||||||
@@ -1082,15 +1074,16 @@ void rl_reset_terminal(const char *terminal_name)
|
|||||||
|
|
||||||
if (terminal_name) {
|
if (terminal_name) {
|
||||||
el_term = terminal_name;
|
el_term = terminal_name;
|
||||||
return;
|
} else if ((el_term = getenv("TERM")) == NULL) {
|
||||||
|
el_term = "dumb";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((el_term = getenv("TERM")) == NULL)
|
/* Initialize to faulty values to trigger fallback if nothing else works. */
|
||||||
el_term = "dumb";
|
tty_cols = tty_rows = -1;
|
||||||
|
|
||||||
#ifdef CONFIG_USE_TERMCAP
|
#ifdef CONFIG_USE_TERMCAP
|
||||||
bp = buff;
|
bp = buf;
|
||||||
if (-1 != tgetent(buff, el_term)) {
|
if (-1 != tgetent(buf, el_term)) {
|
||||||
if ((backspace = tgetstr("le", &bp)) != NULL)
|
if ((backspace = tgetstr("le", &bp)) != NULL)
|
||||||
backspace = strdup(backspace);
|
backspace = strdup(backspace);
|
||||||
tty_cols = tgetnum("co");
|
tty_cols = tgetnum("co");
|
||||||
@@ -1101,7 +1094,7 @@ void rl_reset_terminal(const char *terminal_name)
|
|||||||
|
|
||||||
if (tty_cols <= 0 || tty_rows <= 0) {
|
if (tty_cols <= 0 || tty_rows <= 0) {
|
||||||
#ifdef TIOCGWINSZ
|
#ifdef TIOCGWINSZ
|
||||||
if (-1 != ioctl(el_outfd, TIOCGWINSZ, &W)) {
|
if (ioctl(el_outfd, TIOCGWINSZ, &W) >= 0 && W.ws_col > 0 && W.ws_row > 0) {
|
||||||
tty_cols = (int)W.ws_col;
|
tty_cols = (int)W.ws_col;
|
||||||
tty_rows = (int)W.ws_row;
|
tty_rows = (int)W.ws_row;
|
||||||
return;
|
return;
|
||||||
@@ -1314,20 +1307,23 @@ static el_status_t c_complete(void)
|
|||||||
char *word, *new;
|
char *word, *new;
|
||||||
size_t len;
|
size_t len;
|
||||||
int unique;
|
int unique;
|
||||||
el_status_t s = 0;
|
el_status_t s = CSdone;
|
||||||
|
|
||||||
|
if (rl_inhibit_complete)
|
||||||
|
return CSdispatch;
|
||||||
|
|
||||||
word = el_find_word();
|
word = el_find_word();
|
||||||
p = (char *)rl_complete((char *)word, &unique);
|
p = rl_complete(word, &unique);
|
||||||
if (word)
|
if (word)
|
||||||
free(word);
|
free(word);
|
||||||
if (p) {
|
if (p) {
|
||||||
len = strlen((char *)p);
|
len = strlen(p);
|
||||||
word = p;
|
word = p;
|
||||||
new = q = malloc(sizeof(char) * (2 * len + 1));
|
new = q = malloc(sizeof(char) * (2 * len + 1));
|
||||||
if (!new)
|
if (!new)
|
||||||
return CSstay;
|
return CSstay;
|
||||||
while (*p) {
|
while (*p) {
|
||||||
if ((*p < ' ' || strchr(SEPS, (char) *p) != NULL)
|
if ((*p < ' ' || strchr(SEPS, *p) != NULL)
|
||||||
&& (!unique || p[1] != 0)) {
|
&& (!unique || p[1] != 0)) {
|
||||||
*q++ = '\\';
|
*q++ = '\\';
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user