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 = .
|
||||
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
|
||||
$(top_srcdir)/configure NEWS TODO config.guess config.sub \
|
||||
depcomp install-sh ltmain.sh missing
|
||||
$(top_srcdir)/configure INSTALL NEWS TODO config.guess \
|
||||
config.sub depcomp install-sh ltmain.sh missing
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
|
43
README
43
README
@@ -1,39 +1,36 @@
|
||||
README -*-text-*-
|
||||
|
||||
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 size (and offers fewer features). It does not use standard I/O. It is
|
||||
distributed under a "C News-like" copyright, see the file LICENSE for details.
|
||||
The editline library was created by Simmule Turner and Rich Salz back in 1992.
|
||||
At the time they chose to distribute the code under a "C News-like" copyright,
|
||||
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
|
||||
script. In the examples/ directory you can find some small code snippets
|
||||
used for testing.
|
||||
script. In the examples/ directory you can find some small code snippets used
|
||||
for testing.
|
||||
|
||||
Before finding out about the Debian version I was on the lookout for a really
|
||||
small replacement for the GNU readline package. Not only was libreadline large
|
||||
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!
|
||||
This version of the editline library is a fork off the Minix3 sources. Other
|
||||
know versions, often based off of the original comp.sources.unix posting are:
|
||||
|
||||
In 2000 Jim Studt packaged libeditline for Debian[1], the exact origin of the
|
||||
Debian code base is unclear, see the Sid package[2] for details. There were
|
||||
some notable differences between that version and the upstream Minix sources,
|
||||
all of which have now been merged here.
|
||||
* Debian libeditline, http://packages.qa.debian.org/e/editline.html
|
||||
* Heimdal, http://www.h5l.org
|
||||
* Festival speech-tools, http://festvox.org/festival/
|
||||
* 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
|
||||
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
|
||||
alongside Debian, with the intent of merging the efforts. Sorry for any
|
||||
confusion this might cause.
|
||||
alongside Debian, with the intent of merging the efforts.
|
||||
|
||||
Enjoy,
|
||||
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.
|
||||
|
||||
* 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.
|
||||
|
||||
* Add support for rl_set_prompt().
|
||||
|
||||
* Add support for --enable-utf8 to configure
|
||||
|
||||
* 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
|
||||
|
||||
|
20
configure
vendored
20
configure
vendored
@@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
# 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>.
|
||||
#
|
||||
@@ -701,8 +701,8 @@ MAKEFLAGS=
|
||||
# Identity of this package.
|
||||
PACKAGE_NAME='editline'
|
||||
PACKAGE_TARNAME='editline'
|
||||
PACKAGE_VERSION='1.14.0-rc1'
|
||||
PACKAGE_STRING='editline 1.14.0-rc1'
|
||||
PACKAGE_VERSION='1.14.0'
|
||||
PACKAGE_STRING='editline 1.14.0'
|
||||
PACKAGE_BUGREPORT='troglobit@vmlinux.org'
|
||||
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.
|
||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||
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]...
|
||||
|
||||
@@ -1494,7 +1494,7 @@ fi
|
||||
|
||||
if test -n "$ac_init_help"; then
|
||||
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
|
||||
cat <<\_ACEOF
|
||||
|
||||
@@ -1604,7 +1604,7 @@ fi
|
||||
test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
editline configure 1.14.0-rc1
|
||||
editline configure 1.14.0
|
||||
generated by GNU Autoconf 2.65
|
||||
|
||||
Copyright (C) 2009 Free Software Foundation, Inc.
|
||||
@@ -2029,7 +2029,7 @@ cat >config.log <<_ACEOF
|
||||
This file contains any messages produced by compilers while
|
||||
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
|
||||
|
||||
$ $0 $@
|
||||
@@ -2843,7 +2843,7 @@ fi
|
||||
|
||||
# Define the identity of the package.
|
||||
PACKAGE='editline'
|
||||
VERSION='1.14.0-rc1'
|
||||
VERSION='1.14.0'
|
||||
|
||||
|
||||
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
|
||||
# values after options handling.
|
||||
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
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
@@ -11986,7 +11986,7 @@ _ACEOF
|
||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||
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,
|
||||
with options \\"\$ac_cs_config\\"
|
||||
|
||||
|
@@ -13,7 +13,7 @@
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
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_HEADER([config.h])
|
||||
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
|
||||
|
||||
* 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
|
||||
# Sample debian/rules that uses debhelper.
|
||||
# debian/rules for libeditline
|
||||
# GNU copyright 1997 to 1999 by Joey Hess.
|
||||
|
||||
# Uncomment this to turn on verbose mode.
|
||||
@@ -12,14 +12,12 @@ major=0
|
||||
build: build-stamp
|
||||
build-stamp:
|
||||
dh_testdir
|
||||
$(MAKE)
|
||||
touch build-stamp
|
||||
dh_auto_configure
|
||||
dh_auto_build
|
||||
|
||||
clean:
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
rm -f build-stamp
|
||||
[ ! -f Makefile ] || $(MAKE) clean
|
||||
dh_auto_clean
|
||||
dh_clean
|
||||
|
||||
install: build
|
||||
@@ -27,29 +25,18 @@ install: build
|
||||
dh_testroot
|
||||
dh_clean -k
|
||||
dh_installdirs
|
||||
$(MAKE) install DESTDIR=`pwd`/debian/libeditline-dev
|
||||
cp include_editline.h \
|
||||
`pwd`/debian/libeditline-dev/usr/include/editline.h
|
||||
dh_auto_install
|
||||
|
||||
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_testroot
|
||||
# build libeditline${major} package by moving files from editline-dev
|
||||
dh_movefiles --sourcedir=debian/libeditline-dev \
|
||||
-plibeditline$(major) \
|
||||
usr/lib/libeditline.so.$(major) \
|
||||
usr/lib/libeditline.so.$(version)
|
||||
dh_auto_install
|
||||
dh_install --sourcedir=debian/tmp
|
||||
dh_installdocs
|
||||
dh_installexamples
|
||||
dh_installmenu
|
||||
dh_installmanpages
|
||||
rm -rf debian/libeditline0/usr/share/man/
|
||||
dh_installcron
|
||||
dh_installinfo
|
||||
dh_installchangelogs
|
||||
dh_link
|
||||
dh_strip
|
||||
dh_compress
|
||||
dh_fixperms
|
||||
|
@@ -53,6 +53,7 @@ extern int rl_list_possib(char *token, char ***av);
|
||||
extern int rl_point;
|
||||
extern int rl_mark;
|
||||
extern int rl_end;
|
||||
extern int rl_inhibit_complete;
|
||||
extern char *rl_line_buffer;
|
||||
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! */
|
||||
|
@@ -116,6 +116,7 @@ int rl_point;
|
||||
int rl_mark;
|
||||
int rl_end;
|
||||
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;
|
||||
const char *rl_prompt;
|
||||
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 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);
|
||||
}
|
||||
|
||||
@@ -904,7 +888,15 @@ static el_status_t emacs(int c)
|
||||
if (kp->Key == c)
|
||||
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) {
|
||||
/* No pushback means no repeat count; hacky, but true. */
|
||||
Repeat = NO_ARG;
|
||||
@@ -1073,7 +1065,7 @@ static char *read_redirected(void)
|
||||
void rl_reset_terminal(const char *terminal_name)
|
||||
{
|
||||
#ifdef CONFIG_USE_TERMCAP
|
||||
char buff[2048];
|
||||
char buf[1024];
|
||||
char *bp;
|
||||
#endif
|
||||
#ifdef TIOCGWINSZ
|
||||
@@ -1082,15 +1074,16 @@ void rl_reset_terminal(const char *terminal_name)
|
||||
|
||||
if (terminal_name) {
|
||||
el_term = terminal_name;
|
||||
return;
|
||||
} else if ((el_term = getenv("TERM")) == NULL) {
|
||||
el_term = "dumb";
|
||||
}
|
||||
|
||||
if ((el_term = getenv("TERM")) == NULL)
|
||||
el_term = "dumb";
|
||||
/* Initialize to faulty values to trigger fallback if nothing else works. */
|
||||
tty_cols = tty_rows = -1;
|
||||
|
||||
#ifdef CONFIG_USE_TERMCAP
|
||||
bp = buff;
|
||||
if (-1 != tgetent(buff, el_term)) {
|
||||
bp = buf;
|
||||
if (-1 != tgetent(buf, el_term)) {
|
||||
if ((backspace = tgetstr("le", &bp)) != NULL)
|
||||
backspace = strdup(backspace);
|
||||
tty_cols = tgetnum("co");
|
||||
@@ -1101,7 +1094,7 @@ void rl_reset_terminal(const char *terminal_name)
|
||||
|
||||
if (tty_cols <= 0 || tty_rows <= 0) {
|
||||
#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_rows = (int)W.ws_row;
|
||||
return;
|
||||
@@ -1314,20 +1307,23 @@ static el_status_t c_complete(void)
|
||||
char *word, *new;
|
||||
size_t len;
|
||||
int unique;
|
||||
el_status_t s = 0;
|
||||
el_status_t s = CSdone;
|
||||
|
||||
if (rl_inhibit_complete)
|
||||
return CSdispatch;
|
||||
|
||||
word = el_find_word();
|
||||
p = (char *)rl_complete((char *)word, &unique);
|
||||
p = rl_complete(word, &unique);
|
||||
if (word)
|
||||
free(word);
|
||||
if (p) {
|
||||
len = strlen((char *)p);
|
||||
len = strlen(p);
|
||||
word = p;
|
||||
new = q = malloc(sizeof(char) * (2 * len + 1));
|
||||
if (!new)
|
||||
return CSstay;
|
||||
while (*p) {
|
||||
if ((*p < ' ' || strchr(SEPS, (char) *p) != NULL)
|
||||
if ((*p < ' ' || strchr(SEPS, *p) != NULL)
|
||||
&& (!unique || p[1] != 0)) {
|
||||
*q++ = '\\';
|
||||
}
|
||||
|
Reference in New Issue
Block a user