Imported readline 6.2, and upstream patch 001.
[patch 0/3] readline-6.2 rebase http://sourceware.org/ml/gdb-patches/2011-05/msg00003.html [patch 1/3] readline-6.2: Merge of already posted patches http://sourceware.org/ml/gdb-patches/2011-05/msg00004.html = [Bug-readline] [RFC/readline] bind.c, rl_function_dumper, Free allocated http://lists.gnu.org/archive/html/bug-readline/2011-03/msg00000.html [Bug-readline] [patch] Fix underquotation in readline/examples/rlfe/conf http://lists.gnu.org/archive/html/bug-readline/2011-04/msg00001.html [Bug-readline] [patch] Makefile.in htm<->html http://lists.gnu.org/archive/html/bug-readline/2011-04/msg00002.html Re: [Bug-readline] [patch] Makefile.in dependency: callback.o: xmalloc.h http://lists.gnu.org/archive/html/bug-readline/2011-04/msg00004.html [Bug-readline] [patch] Remove . from the VPATH directive http://lists.gnu.org/archive/html/bug-readline/2011-04/msg00005.html Eli Zaretskii's __MSDOS__ / __GO32__ / __MINGW32__ / __DJGPP__ stuff: http://sourceware.org/ml/gdb/2011-04/msg00002.html Jan Kratochvil's patch for FSF GDB tree local-specific changes: http://sourceware.org/ml/gdb/2011-04/msg00006.html Preservation of existing ChangeLog.gdb files, their updates. [patch 2/3] readline-6.2: Workaround "ask" regression http://sourceware.org/ml/gdb-patches/2011-05/msg00005.html [patch 3/3] readline-6.2: Revert 5.x compat., apply 6.x compat. http://sourceware.org/ml/gdb-patches/2011-05/msg00006.html [patch 4/3] readline-6.2: Substitute inc-hist.texinfo http://sourceware.org/ml/gdb-patches/2011-05/msg00010.html readline/ Workaround gdb.base/completion.exp regression on readline-6.2. * complete.c (get_y_or_n): Disable the return on RL_STATE_CALLBACK. Imported readline 6.2, and upstream patch 001. * configure: Regenerate. readline/doc/ * hsuser.texi (Using History Interactively): Disable !BashFeatures @defcodeindex. Make the `Programming with GNU History' reference external. * inc-hist.texinfo: Remove. Imported readline 6.2, and upstream patch 001. readline/examples/ Imported readline 6.2, and upstream patch 001. readline/examples/rlfe/ Imported readline 6.2, and upstream patch 001. gdb/ * config.in: Regenerate. * configure: Regenerate. * configure.ac <--with-system-readline> (for readline_echoing_p): Remove the test. * tui/tui-io.c (tui_old_readline_echoing_p): Rename to ... (tui_old_rl_echoing_p): ... here. (tui_setup_io): Rename extern declaration readline_echoing_p to _rl_echoing_p. Adjust assignments for the both renames. gdb/doc/ * Makefile.in (GDB_DOC_SOURCE_INCLUDES): Rename inc-hist.texinfo to hsuser.texi. * gdb.texinfo <!SYSTEM_READLINE>: Rename inc-hist.texinfo inclusion and comment to hsuser.texi. Change rluser.texi name in the comment.
This commit is contained in:
parent
4cab4add34
commit
cc88a640ca
130 changed files with 10989 additions and 5035 deletions
|
@ -1,3 +1,14 @@
|
|||
2011-05-11 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* config.in: Regenerate.
|
||||
* configure: Regenerate.
|
||||
* configure.ac <--with-system-readline> (for readline_echoing_p):
|
||||
Remove the test.
|
||||
* tui/tui-io.c (tui_old_readline_echoing_p): Rename to ...
|
||||
(tui_old_rl_echoing_p): ... here.
|
||||
(tui_setup_io): Rename extern declaration readline_echoing_p to
|
||||
_rl_echoing_p. Adjust assignments for the both renames.
|
||||
|
||||
2011-05-11 Thiago Jung Bauermann <bauerman@br.ibm.com>
|
||||
|
||||
* symtab.c (lookup_symtab): Run cleanup before returning.
|
||||
|
|
|
@ -953,9 +953,6 @@
|
|||
/* Define to `int' if <sys/types.h> does not define. */
|
||||
#undef pid_t
|
||||
|
||||
/* readline-6.0 started to use different name. */
|
||||
#undef readline_echoing_p
|
||||
|
||||
/* Define to the equivalent of the C99 'restrict' keyword, or to
|
||||
nothing if this is not supported. Do not define if restrict is
|
||||
supported directly. */
|
||||
|
|
33
gdb/configure
vendored
33
gdb/configure
vendored
|
@ -9796,39 +9796,6 @@ if test "$with_system_readline" = yes; then
|
|||
READLINE_DEPS=
|
||||
READLINE_CFLAGS=
|
||||
READLINE_TEXI_INCFLAG=
|
||||
|
||||
# readline-6.0 started to use the name `_rl_echoing_p'.
|
||||
# `$(READLINE_DIR)/' of bundled readline would not resolve in configure.
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for readline_echoing_p" >&5
|
||||
$as_echo_n "checking for readline_echoing_p... " >&6; }
|
||||
save_LIBS=$LIBS
|
||||
LIBS="$LIBS $READLINE"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
extern int readline_echoing_p;
|
||||
return readline_echoing_p;
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_link "$LINENO"; then :
|
||||
READLINE_ECHOING_P=yes
|
||||
else
|
||||
READLINE_ECHOING_P=no
|
||||
|
||||
$as_echo "#define readline_echoing_p _rl_echoing_p" >>confdefs.h
|
||||
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
LIBS="$save_LIBS"
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $READLINE_ECHOING_P" >&5
|
||||
$as_echo "$READLINE_ECHOING_P" >&6; }
|
||||
else
|
||||
READLINE='$(READLINE_DIR)/libreadline.a'
|
||||
READLINE_DEPS='$(READLINE)'
|
||||
|
|
|
@ -562,21 +562,6 @@ if test "$with_system_readline" = yes; then
|
|||
READLINE_DEPS=
|
||||
READLINE_CFLAGS=
|
||||
READLINE_TEXI_INCFLAG=
|
||||
|
||||
# readline-6.0 started to use the name `_rl_echoing_p'.
|
||||
# `$(READLINE_DIR)/' of bundled readline would not resolve in configure.
|
||||
|
||||
AC_MSG_CHECKING([for readline_echoing_p])
|
||||
save_LIBS=$LIBS
|
||||
LIBS="$LIBS $READLINE"
|
||||
AC_LINK_IFELSE(AC_LANG_PROGRAM(,[[extern int readline_echoing_p;
|
||||
return readline_echoing_p;]]),
|
||||
[READLINE_ECHOING_P=yes],
|
||||
[READLINE_ECHOING_P=no
|
||||
AC_DEFINE([readline_echoing_p], [_rl_echoing_p],
|
||||
[readline-6.0 started to use different name.])])
|
||||
LIBS="$save_LIBS"
|
||||
AC_MSG_RESULT([$READLINE_ECHOING_P])
|
||||
else
|
||||
READLINE='$(READLINE_DIR)/libreadline.a'
|
||||
READLINE_DEPS='$(READLINE)'
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
2011-05-11 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* Makefile.in (GDB_DOC_SOURCE_INCLUDES): Rename inc-hist.texinfo to
|
||||
hsuser.texi.
|
||||
* gdb.texinfo <!SYSTEM_READLINE>: Rename inc-hist.texinfo inclusion and
|
||||
comment to hsuser.texi. Change rluser.texi name in the comment.
|
||||
|
||||
2011-05-10 Doug Evans <dje@google.com>
|
||||
|
||||
* gdb.texinfo (Threads): If an empty path is provided for
|
||||
|
|
|
@ -117,7 +117,7 @@ GDB_DOC_SOURCE_INCLUDES = \
|
|||
$(srcdir)/gpl.texi \
|
||||
$(srcdir)/agentexpr.texi \
|
||||
$(READLINE_DIR)/rluser.texi \
|
||||
$(READLINE_DIR)/inc-hist.texinfo
|
||||
$(READLINE_DIR)/hsuser.texi
|
||||
GDB_DOC_BUILD_INCLUDES = \
|
||||
gdb-cfg.texi \
|
||||
GDBvn.texi
|
||||
|
|
|
@ -31025,13 +31025,13 @@ things without first using the debugger to find the facts.
|
|||
|
||||
@c The readline documentation is distributed with the readline code
|
||||
@c and consists of the two following files:
|
||||
@c rluser.texinfo
|
||||
@c inc-hist.texinfo
|
||||
@c rluser.texi
|
||||
@c hsuser.texi
|
||||
@c Use -I with makeinfo to point to the appropriate directory,
|
||||
@c environment var TEXINPUTS with TeX.
|
||||
@ifclear SYSTEM_READLINE
|
||||
@include rluser.texi
|
||||
@include inc-hist.texinfo
|
||||
@include hsuser.texi
|
||||
@end ifclear
|
||||
|
||||
@node In Memoriam
|
||||
|
|
|
@ -133,7 +133,7 @@ static Function *tui_old_rl_getc_function;
|
|||
static VFunction *tui_old_rl_redisplay_function;
|
||||
static VFunction *tui_old_rl_prep_terminal;
|
||||
static VFunction *tui_old_rl_deprep_terminal;
|
||||
static int tui_old_readline_echoing_p;
|
||||
static int tui_old_rl_echoing_p;
|
||||
|
||||
/* Readline output stream.
|
||||
Should be removed when readline is clean. */
|
||||
|
@ -506,7 +506,7 @@ tui_rl_display_match_list (char **matches, int len, int max)
|
|||
void
|
||||
tui_setup_io (int mode)
|
||||
{
|
||||
extern int readline_echoing_p;
|
||||
extern int _rl_echoing_p;
|
||||
|
||||
if (mode)
|
||||
{
|
||||
|
@ -516,12 +516,12 @@ tui_setup_io (int mode)
|
|||
tui_old_rl_prep_terminal = rl_prep_term_function;
|
||||
tui_old_rl_getc_function = rl_getc_function;
|
||||
tui_old_rl_outstream = rl_outstream;
|
||||
tui_old_readline_echoing_p = readline_echoing_p;
|
||||
tui_old_rl_echoing_p = _rl_echoing_p;
|
||||
rl_redisplay_function = tui_redisplay_readline;
|
||||
rl_deprep_term_function = tui_deprep_terminal;
|
||||
rl_prep_term_function = tui_prep_terminal;
|
||||
rl_getc_function = tui_getc;
|
||||
readline_echoing_p = 0;
|
||||
_rl_echoing_p = 0;
|
||||
rl_outstream = tui_rl_outstream;
|
||||
rl_prompt = 0;
|
||||
rl_completion_display_matches_hook = tui_rl_display_match_list;
|
||||
|
@ -560,7 +560,7 @@ tui_setup_io (int mode)
|
|||
rl_getc_function = tui_old_rl_getc_function;
|
||||
rl_outstream = tui_old_rl_outstream;
|
||||
rl_completion_display_matches_hook = 0;
|
||||
readline_echoing_p = tui_old_readline_echoing_p;
|
||||
_rl_echoing_p = tui_old_rl_echoing_p;
|
||||
rl_already_prompted = 0;
|
||||
|
||||
/* Save tty for SIGCONT. */
|
||||
|
|
|
@ -918,3 +918,178 @@ configure.in
|
|||
- changed release status to `release'
|
||||
|
||||
[readline-5.1 frozen]
|
||||
|
||||
12/9
|
||||
----
|
||||
[readline-5.1 released]
|
||||
|
||||
12/14
|
||||
-----
|
||||
examples/rlfe/Makefile.in
|
||||
- add @LIBS@ to LIBS assignment to pick up extra libraries from
|
||||
configure
|
||||
|
||||
1/3/2006
|
||||
--------
|
||||
support/shlib-install
|
||||
- Install shared libraries with execute bit set on Linux
|
||||
|
||||
6/9
|
||||
---
|
||||
[readline-5.2-alpha frozen]
|
||||
|
||||
6/26
|
||||
----
|
||||
configure.in
|
||||
- set CROSS_COMPILE to the empty string by default, so we don't inherit
|
||||
a random value from the environment
|
||||
|
||||
7/8
|
||||
---
|
||||
[readline-5.2-alpha released]
|
||||
|
||||
|
||||
[readline-5.2-beta released]
|
||||
|
||||
9/12
|
||||
----
|
||||
config.h.in
|
||||
- add defines for wcscoll, iswctype, iswupper, iswlower, towupper,
|
||||
towlower functions
|
||||
- replace define for wctomb with one for wcrtomb
|
||||
- add defines for wchar_t, wint_t, wctype_t types
|
||||
|
||||
10/11
|
||||
-----
|
||||
[readline-5.2 released]
|
||||
|
||||
11/9
|
||||
----
|
||||
examples/rlfe/{configure.in,Makefile.in,config.h.in,rlfe.c,pty.c}
|
||||
- portability fixes from Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
11/21
|
||||
-----
|
||||
Makefile.in
|
||||
- add `install-examples' and `uninstall-examples' targets
|
||||
|
||||
examples/Makefile.in
|
||||
- add correct variables to build examples on Windows
|
||||
- add appropriate rules to install and uninstall example sources in
|
||||
$(datadir)/readline
|
||||
|
||||
11/27
|
||||
-----
|
||||
config.h.in
|
||||
- move #undef of HAVE_STRCOLL out of config.h.in, since autoconf tries
|
||||
to substitute it based on configure tests
|
||||
|
||||
4/27/2007
|
||||
---------
|
||||
examples/autoconf
|
||||
- new directory with example autoconf macros to detect readline and
|
||||
return information about the installed version
|
||||
|
||||
6/13
|
||||
----
|
||||
support/shlib-install
|
||||
- changes to support AIX 5.x shared library installation
|
||||
|
||||
3/20/2008
|
||||
---------
|
||||
support/shlib-install
|
||||
- add support for NetBSD and Interix shared library installation
|
||||
|
||||
4/22
|
||||
----
|
||||
support/wcwidth.c
|
||||
- updated implementation from 2007-05
|
||||
|
||||
7/18
|
||||
----
|
||||
support/shlib-install
|
||||
- support for mingw32, contributed by Carlo Bramix <carlo.bramix@libero.it>
|
||||
|
||||
8/4
|
||||
---
|
||||
configure.in
|
||||
- changed to readline-6.0
|
||||
|
||||
8/18
|
||||
----
|
||||
support/config.{guess,sub}
|
||||
- updated to newer versions from autoconf-2.62 distribution
|
||||
|
||||
3/5/2009
|
||||
--------
|
||||
support/shlib-install
|
||||
- take a new -V host_vendor argument
|
||||
- add ${host_vendor} to string tested in case statement for symlink
|
||||
creation section
|
||||
- add support for FreeBSD/gentoo, which uses Linux library naming
|
||||
scheme
|
||||
- change FreeBSD symlink rules, since FreeBSD 7+ has only ELF shared
|
||||
libraries. DragonflyBSD rules are the same. Fix from Timothy
|
||||
Redaelli <drizzt@gentoo.org>
|
||||
|
||||
shlib/Makefile.in
|
||||
- add definition of host_vendor, substituted by configure
|
||||
- add -V host_vendor argument to all invocations of shlib-install.
|
||||
Fix from Timothy Redaelli <drizzt@gentoo.org>
|
||||
|
||||
3/10
|
||||
----
|
||||
configure.in
|
||||
- add call to AC_SYS_LARGEFILE for readdir and largefile support on
|
||||
Linux
|
||||
|
||||
config.h.in
|
||||
- add _FILE_OFFSET_BITS define
|
||||
|
||||
4/19
|
||||
----
|
||||
Makefile.in
|
||||
- add targets for making and installing documentation required by GNU
|
||||
coding standards. Fix from Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
posixselect.h
|
||||
- pick up from bash. Inspired by Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
10/28
|
||||
-----
|
||||
support/shlib-install
|
||||
- decrease the default version of FreeBSD that installs shared libraries
|
||||
to 4.x. Advice from Peter Jeremy <peterjeremy@acm.org>
|
||||
|
||||
12/18
|
||||
-----
|
||||
[readline-6.1-rc1 released]
|
||||
|
||||
12/23
|
||||
-----
|
||||
doc/Makefile.in
|
||||
- make sure $(topdir) is not ".." before removing all of the formatted
|
||||
documentation in `make distclean'. $(topdir) is set to `..' if
|
||||
readline is being built in the source directory. Fixes problem
|
||||
noticed by THOUMIN Damien <thoumin@ipanematech.com>
|
||||
|
||||
12/29
|
||||
-----
|
||||
[readline-6.1 frozen]
|
||||
|
||||
2/5/2010
|
||||
--------
|
||||
examples/Makefile.in
|
||||
- make sure to install example C files using $(srcdir)/$$f in case
|
||||
we're building outside the source directory. Bug report and fix
|
||||
from Peter Breitenlohner <peb@mppmu.mpg.de>
|
||||
|
||||
7/25
|
||||
----
|
||||
xfree.c
|
||||
- new file with xfree() implementation, moved from xmalloc.c
|
||||
|
||||
12/28
|
||||
-----
|
||||
{examples,shlib}/Makefile.in
|
||||
- Cygwin-based changes from Eric Blake <eblake@redhat.com>
|
||||
|
|
317
readline/CHANGES
317
readline/CHANGES
|
@ -1,3 +1,320 @@
|
|||
This document details the changes between this version, readline-6.2,
|
||||
and the previous version, readline-6.1.
|
||||
|
||||
1. Changes to Readline
|
||||
|
||||
a. Fixed a bug that caused the unconverted filename to be added to the list of
|
||||
completions when the application specified filename conversion functions.
|
||||
|
||||
b. Fixed a bug that caused the wrong filename to be passed to opendir when the
|
||||
application has specified a filename dequoting function.
|
||||
|
||||
c. Fixed a bug when repeating a character search in vi mode in the case where
|
||||
there was no search to repeat.
|
||||
|
||||
d. When show-all-if-ambiguous is set, the completion routines no longer insert
|
||||
a common match prefix that is shorter than the text being completed.
|
||||
|
||||
e. The full set of vi editing commands may now be used in callback mode.
|
||||
|
||||
f. Fixed a bug that caused readline to not update its idea of the terminal
|
||||
dimensions while running in `no-echo' mode.
|
||||
|
||||
h. Fixed a bug that caused readline to dump core if an application called
|
||||
rl_prep_terminal without setting rl_instream.
|
||||
|
||||
i. Fixed a bug that caused meta-prefixed characters bound to incremental
|
||||
search forward or backward to not be recognized if they were typed
|
||||
subsequently.
|
||||
|
||||
j. The incremental search code treats key sequences that map to the same
|
||||
functions as (default) ^G, ^W, and ^Y as equivalent to those characters.
|
||||
|
||||
k. Fixed a bug in menu-complete that caused it to misbehave with large
|
||||
negative argument.
|
||||
|
||||
l. Fixed a bug that caused vi-mode yank-last-arg to ring the bell when invoked
|
||||
at the end of the line.
|
||||
|
||||
m. Fixed a bug that made an explicit argument of 0 to yank-last-arg behave
|
||||
as if it were a negative argument.
|
||||
|
||||
n. Fixed a bug that caused directory names in words to be completed to not
|
||||
be dequoted correctly.
|
||||
|
||||
2. New Features in Readline
|
||||
|
||||
a. The history library does not try to write the history filename in the
|
||||
current directory if $HOME is unset. This closes a potential security
|
||||
problem if the application does not specify a history filename.
|
||||
|
||||
b. New bindable variable `completion-display-width' to set the number of
|
||||
columns used when displaying completions.
|
||||
|
||||
c. New bindable variable `completion-case-map' to cause case-insensitive
|
||||
completion to treat `-' and `_' as identical.
|
||||
|
||||
d. There are new bindable vi-mode command names to avoid readline's case-
|
||||
insensitive matching not allowing them to be bound separately.
|
||||
|
||||
e. New bindable variable `menu-complete-display-prefix' causes the menu
|
||||
completion code to display the common prefix of the possible completions
|
||||
before cycling through the list, instead of after.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
This document details the changes between this version, readline-6.1,
|
||||
and the previous version, readline-6.0.
|
||||
|
||||
1. Changes to Readline
|
||||
|
||||
a. The SIGWINCH signal handler now avoids calling the redisplay code if
|
||||
one arrives while in the middle of redisplay.
|
||||
|
||||
b. Changes to the timeout code to make sure that timeout values greater
|
||||
than one second are handled better.
|
||||
|
||||
c. Fixed a bug in the redisplay code that was triggered by a prompt
|
||||
containing invisible characters exactly the width of the screen.
|
||||
|
||||
d. Fixed a bug in the redisplay code encountered when running in horizontal
|
||||
scroll mode.
|
||||
|
||||
e. Fixed a bug that prevented menu completion from properly completing
|
||||
filenames.
|
||||
|
||||
f. Fixed a redisplay bug caused by a multibyte character causing a line to
|
||||
wrap.
|
||||
|
||||
g. Fixed a bug that caused key sequences of two characters to not be
|
||||
recognized when a longer sequence identical in the first two characters
|
||||
was bound.
|
||||
|
||||
h. Fixed a bug that caused history expansion to be attempted on $'...'
|
||||
single-quoted strings.
|
||||
|
||||
i. Fixed a bug that caused incorrect redisplay when the prompt contained
|
||||
multibyte characters in an `invisible' sequence bracketed by \[ and
|
||||
\].
|
||||
|
||||
j. Fixed a bug that caused history expansion to short-circuit after
|
||||
encountering a multibyte character.
|
||||
|
||||
k. Fixed a bug that caused applications using the callback interface to not
|
||||
react to SIGINT (or other signals) until another character arrived.
|
||||
|
||||
2. New Features in Readline
|
||||
|
||||
a. New bindable function: menu-complete-backward.
|
||||
|
||||
b. In the vi insertion keymap, C-n is now bound to menu-complete by default,
|
||||
and C-p to menu-complete-backward.
|
||||
|
||||
c. When in vi command mode, repeatedly hitting ESC now does nothing, even
|
||||
when ESC introduces a bound key sequence. This is closer to how
|
||||
historical vi behaves.
|
||||
|
||||
d. New bindable function: skip-csi-sequence. Can be used as a default to
|
||||
consume key sequences generated by keys like Home and End without having
|
||||
to bind all keys.
|
||||
|
||||
e. New application-settable function: rl_filename_rewrite_hook. Can be used
|
||||
to rewite or modify filenames read from the file system before they are
|
||||
compared to the word to be completed.
|
||||
|
||||
f. New bindable variable: skip-completed-text, active when completing in the
|
||||
middle of a word. If enabled, it means that characters in the completion
|
||||
that match characters in the remainder of the word are "skipped" rather
|
||||
than inserted into the line.
|
||||
|
||||
g. The pre-readline-6.0 version of menu completion is available as
|
||||
"old-menu-complete" for users who do not like the readline-6.0 version.
|
||||
|
||||
h. New bindable variable: echo-control-characters. If enabled, and the
|
||||
tty ECHOCTL bit is set, controls the echoing of characters corresponding
|
||||
to keyboard-generated signals.
|
||||
|
||||
i. New bindable variable: enable-meta-key. Controls whether or not readline
|
||||
sends the smm/rmm sequences if the terminal indicates it has a meta key
|
||||
that enables eight-bit characters.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
This document details the changes between this version, readline-6.0,
|
||||
and the previous version, readline-5.2.
|
||||
|
||||
1. Changes to Readline
|
||||
|
||||
a. Fixed a number of redisplay errors in environments supporting multibyte
|
||||
characters.
|
||||
|
||||
b. Fixed bugs in vi command mode that caused motion commands to inappropriately
|
||||
set the mark.
|
||||
|
||||
c. When using the arrow keys in vi insertion mode, readline allows movement
|
||||
beyond the current end of the line (unlike command mode).
|
||||
|
||||
d. Fixed bugs that caused readline to loop when the terminal has been taken
|
||||
away and reads return -1/EIO.
|
||||
|
||||
e. Fixed bugs in redisplay occurring when displaying prompts containing
|
||||
invisible characters.
|
||||
|
||||
f. Fixed a bug that caused the completion append character to not be reset to
|
||||
the default after an application-specified completion function changed it.
|
||||
|
||||
g. Fixed a problem that caused incorrect positioning of the cursor while in
|
||||
emacs editing mode when moving forward at the end of a line while using
|
||||
a locale supporting multibyte characters.
|
||||
|
||||
h. Fixed an off-by-one error that caused readline to drop every 511th
|
||||
character of buffered input.
|
||||
|
||||
i. Fixed a bug that resulted in SIGTERM not being caught or cleaned up.
|
||||
|
||||
j. Fixed redisplay bugs caused by multiline prompts with invisible characters
|
||||
or no characters following the final newline.
|
||||
|
||||
k. Fixed redisplay bug caused by prompts consisting solely of invisible
|
||||
characters.
|
||||
|
||||
l. Fixed a bug in the code that buffers characters received very quickly in
|
||||
succession which caused characters to be dropped.
|
||||
|
||||
m. Fixed a bug that caused readline to reference uninitialized data structures
|
||||
if it received a SIGWINCH before completing initialzation.
|
||||
|
||||
n. Fixed a bug that caused the vi-mode `last command' to be set incorrectly
|
||||
and therefore unrepeatable.
|
||||
|
||||
o. Fixed a bug that caused readline to disable echoing when it was being used
|
||||
with an output file descriptor that was not a terminal.
|
||||
|
||||
p. Readline now blocks SIGINT while manipulating internal data structures
|
||||
during redisplay.
|
||||
|
||||
q. Fixed a bug in redisplay that caused readline to segfault when pasting a
|
||||
very long line (over 130,000 characters).
|
||||
|
||||
r. Fixed bugs in redisplay when using prompts with no visible printing
|
||||
characters.
|
||||
|
||||
s. Fixed a bug that caused redisplay errors when using prompts with invisible
|
||||
characters and numeric arguments to a command in a multibyte locale.
|
||||
|
||||
t. Fixed a bug that caused redisplay errors when using prompts with invisible
|
||||
characters spanning more than two physical screen lines.
|
||||
|
||||
2. New Features in Readline
|
||||
|
||||
a. A new variable, rl_sort_completion_matches; allows applications to inhibit
|
||||
match list sorting (but beware: some things don't work right if
|
||||
applications do this).
|
||||
|
||||
b. A new variable, rl_completion_invoking_key; allows applications to discover
|
||||
the key that invoked rl_complete or rl_menu_complete.
|
||||
|
||||
c. The functions rl_block_sigint and rl_release_sigint are now public and
|
||||
available to calling applications who want to protect critical sections
|
||||
(like redisplay).
|
||||
|
||||
d. The functions rl_save_state and rl_restore_state are now public and
|
||||
available to calling applications; documented rest of readline's state
|
||||
flag values.
|
||||
|
||||
e. A new user-settable variable, `history-size', allows setting the maximum
|
||||
number of entries in the history list.
|
||||
|
||||
f. There is a new implementation of menu completion, with several improvements
|
||||
over the old; the most notable improvement is a better `completions
|
||||
browsing' mode.
|
||||
|
||||
g. The menu completion code now uses the rl_menu_completion_entry_function
|
||||
variable, allowing applications to provide their own menu completion
|
||||
generators.
|
||||
|
||||
h. There is support for replacing a prefix of a pathname with a `...' when
|
||||
displaying possible completions. This is controllable by setting the
|
||||
`completion-prefix-display-length' variable. Matches with a common prefix
|
||||
longer than this value have the common prefix replaced with `...'.
|
||||
|
||||
i. There is a new `revert-all-at-newline' variable. If enabled, readline will
|
||||
undo all outstanding changes to all history lines when `accept-line' is
|
||||
executed.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
This document details the changes between this version, readline-5.2,
|
||||
and the previous version, readline-5.1.
|
||||
|
||||
1. Changes to Readline
|
||||
|
||||
a. Fixed a problem that caused segmentation faults when using readline in
|
||||
callback mode and typing consecutive DEL characters on an empty line.
|
||||
|
||||
b. Fixed several redisplay problems with multibyte characters, all having to
|
||||
do with the different code paths and variable meanings between single-byte
|
||||
and multibyte character redisplay.
|
||||
|
||||
c. Fixed a problem with key sequence translation when presented with the
|
||||
sequence \M-\C-x.
|
||||
|
||||
d. Fixed a problem that prevented the `a' command in vi mode from being
|
||||
undone and redone properly.
|
||||
|
||||
e. Fixed a problem that prevented empty inserts in vi mode from being undone
|
||||
properly.
|
||||
|
||||
f. Fixed a problem that caused readline to initialize with an incorrect idea
|
||||
of whether or not the terminal can autowrap.
|
||||
|
||||
g. Fixed output of key bindings (like bash `bind -p') to honor the setting of
|
||||
convert-meta and use \e where appropriate.
|
||||
|
||||
h. Changed the default filename completion function to call the filename
|
||||
dequoting function if the directory completion hook isn't set. This means
|
||||
that any directory completion hooks need to dequote the directory name,
|
||||
since application-specific hooks need to know how the word was quoted,
|
||||
even if no other changes are made.
|
||||
|
||||
i. Fixed a bug with creating the prompt for a non-interactive search string
|
||||
when there are non-printing characters in the primary prompt.
|
||||
|
||||
j. Fixed a bug that caused prompts with invisible characters to be redrawn
|
||||
multiple times in a multibyte locale.
|
||||
|
||||
k. Fixed a bug that could cause the key sequence scanning code to return the
|
||||
wrong function.
|
||||
|
||||
l. Fixed a problem with the callback interface that caused it to fail when
|
||||
using multi-character keyboard macros.
|
||||
|
||||
m. Fixed a bug that could cause a core dump when an edited history entry was
|
||||
re-executed under certain conditions.
|
||||
|
||||
n. Fixed a bug that caused readline to reference freed memory when attmpting
|
||||
to display a portion of the prompt.
|
||||
|
||||
o. Fixed a bug with prompt redisplay in a multi-byte locale to avoid redrawing
|
||||
the prompt and input line multiple times.
|
||||
|
||||
p. Fixed history expansion to not be confused by here-string redirection.
|
||||
|
||||
q. Readline no longer treats read errors by converting them to newlines, as
|
||||
it does with EOF. This caused partial lines to be returned from readline().
|
||||
|
||||
r. Fixed a redisplay bug that occurred in multibyte-capable locales when the
|
||||
prompt was one character longer than the screen width.
|
||||
|
||||
2. New Features in Readline
|
||||
|
||||
a. Calling applications can now set the keyboard timeout to 0, allowing
|
||||
poll-like behavior.
|
||||
|
||||
b. The value of SYS_INPUTRC (configurable at compilation time) is now used as
|
||||
the default last-ditch startup file.
|
||||
|
||||
c. The history file reading functions now allow windows-like \r\n line
|
||||
terminators.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
This document details the changes between this version, readline-5.1,
|
||||
and the previous version, readline-5.0.
|
||||
|
||||
|
|
843
readline/COPYING
843
readline/COPYING
|
@ -1,285 +1,626 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
0. Definitions.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
1. Source Code.
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
14. Revised Versions of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
NO WARRANTY
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Appendix: How to Apply These Terms to Your New Programs
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
|
@ -287,15 +628,15 @@ free software which everyone can redistribute and change under these terms.
|
|||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
|
@ -304,36 +645,30 @@ the "copyright" line and a pointer to where the full notice is found.
|
|||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
|
|
|
@ -1,3 +1,13 @@
|
|||
2011-05-11 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
Workaround gdb.base/completion.exp regression on readline-6.2.
|
||||
* complete.c (get_y_or_n): Disable the return on RL_STATE_CALLBACK.
|
||||
|
||||
2011-05-11 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
Imported readline 6.2, and upstream patch 001.
|
||||
* configure: Regenerate.
|
||||
|
||||
2011-03-04 Michael Snyder <msnyder@vmware.com>
|
||||
|
||||
* bind.c (rl_function_dumper): Free allocated memory.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Basic Installation
|
||||
==================
|
||||
|
||||
These are installation instructions for Readline-5.1.
|
||||
These are installation instructions for Readline-6.2.
|
||||
|
||||
The simplest way to compile readline is:
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#
|
||||
doc d
|
||||
examples d
|
||||
examples/autoconf d
|
||||
examples/rlfe d
|
||||
support d
|
||||
shlib d
|
||||
|
@ -26,6 +27,7 @@ histlib.h f
|
|||
keymaps.h f
|
||||
posixdir.h f
|
||||
posixjmp.h f
|
||||
posixselect.h f
|
||||
posixstat.h f
|
||||
readline.h f
|
||||
rlconf.h f
|
||||
|
@ -69,11 +71,13 @@ undo.c f
|
|||
util.c f
|
||||
vi_keymap.c f
|
||||
vi_mode.c f
|
||||
xfree.c f
|
||||
xmalloc.c f
|
||||
history.c f
|
||||
histexpand.c f
|
||||
histfile.c f
|
||||
histsearch.c f
|
||||
patchlevel f
|
||||
shlib/Makefile.in f
|
||||
support/config.guess f
|
||||
support/config.rpath f
|
||||
|
@ -107,12 +111,16 @@ examples/manexamp.c f
|
|||
examples/readlinebuf.h f
|
||||
examples/rl-fgets.c f
|
||||
examples/rlcat.c f
|
||||
examples/rlevent.c f
|
||||
examples/rltest.c f
|
||||
examples/rl.c f
|
||||
examples/rlptytest.c f
|
||||
examples/rlversion.c f
|
||||
examples/histexamp.c f
|
||||
examples/Inputrc f
|
||||
examples/autoconf/BASH_CHECK_LIB_TERMCAP f
|
||||
examples/autoconf/RL_LIB_READLINE_VERSION f
|
||||
examples/autoconf/wi_LIB_READLINE f
|
||||
examples/rlfe/ChangeLog f
|
||||
examples/rlfe/Makefile.in f
|
||||
examples/rlfe/README f
|
||||
|
@ -124,6 +132,7 @@ examples/rlfe/os.h f
|
|||
examples/rlfe/pty.c f
|
||||
examples/rlfe/rlfe.c f
|
||||
examples/rlfe/screen.h f
|
||||
examples/rlwrap-0.30.tar.gz f
|
||||
# formatted documentation, from MANIFEST.doc
|
||||
doc/readline.ps f
|
||||
doc/history.ps f
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
## -*- text -*- ##
|
||||
# Master Makefile for the GNU readline library.
|
||||
# Copyright (C) 1994-2004 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994-2009 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -13,8 +13,8 @@
|
|||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
RL_LIBRARY_VERSION = @LIBVERSION@
|
||||
RL_LIBRARY_NAME = readline
|
||||
|
||||
|
@ -58,7 +58,7 @@ libdir = @libdir@
|
|||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
datadir = @datadir@
|
||||
localedir = $(datadir)/locale
|
||||
localedir = @localedir@
|
||||
|
||||
infodir = @infodir@
|
||||
|
||||
|
@ -68,7 +68,7 @@ man3dir = $(mandir)/man3
|
|||
DESTDIR =
|
||||
|
||||
# Programs to make tags files.
|
||||
ETAGS = etags -tw
|
||||
ETAGS = etags
|
||||
CTAGS = ctags -tw
|
||||
|
||||
CFLAGS = @CFLAGS@
|
||||
|
@ -100,8 +100,6 @@ GCC_LINT_CFLAGS = $(XCCFLAGS) $(GCC_LINT_FLAGS) @CFLAGS@ @LOCAL_CFLAGS@
|
|||
LIBRARY_NAME = libreadline.a
|
||||
STATIC_LIBS = libreadline.a libhistory.a
|
||||
|
||||
WCWIDTH_OBJ = @WCWIDTH_OBJ@
|
||||
|
||||
# The C code source files for this library.
|
||||
CSOURCES = $(srcdir)/readline.c $(srcdir)/funmap.c $(srcdir)/keymaps.c \
|
||||
$(srcdir)/vi_mode.c $(srcdir)/parens.c $(srcdir)/rltty.c \
|
||||
|
@ -109,26 +107,28 @@ CSOURCES = $(srcdir)/readline.c $(srcdir)/funmap.c $(srcdir)/keymaps.c \
|
|||
$(srcdir)/display.c $(srcdir)/signals.c $(srcdir)/emacs_keymap.c \
|
||||
$(srcdir)/vi_keymap.c $(srcdir)/util.c $(srcdir)/kill.c \
|
||||
$(srcdir)/undo.c $(srcdir)/macro.c $(srcdir)/input.c \
|
||||
$(srcdir)/callback.c $(srcdir)/terminal.c $(srcdir)/xmalloc.c \
|
||||
$(srcdir)/callback.c $(srcdir)/terminal.c $(srcdir)/xmalloc.c $(srcdir)/xfree.c \
|
||||
$(srcdir)/history.c $(srcdir)/histsearch.c $(srcdir)/histexpand.c \
|
||||
$(srcdir)/histfile.c $(srcdir)/nls.c $(srcdir)/search.c \
|
||||
$(srcdir)/shell.c $(srcdir)/savestring.c $(srcdir)/tilde.c \
|
||||
$(srcdir)/text.c $(srcdir)/misc.c $(srcdir)/compat.c \
|
||||
$(srcdir)/mbutil.c $(srcdir)/support/wcwidth.c
|
||||
$(srcdir)/mbutil.c
|
||||
|
||||
# The header files for this library.
|
||||
HSOURCES = readline.h rldefs.h chardefs.h keymaps.h history.h histlib.h \
|
||||
posixstat.h posixdir.h posixjmp.h tilde.h rlconf.h rltty.h \
|
||||
ansi_stdlib.h tcap.h rlstdc.h xmalloc.h rlprivate.h rlshell.h \
|
||||
rltypedefs.h rlmbutil.h
|
||||
HSOURCES = $(srcdir)/readline.h $(srcdir)/rldefs.h $(srcdir)/chardefs.h \
|
||||
$(srcdir)/keymaps.h $(srcdir)/history.h $(srcdir)/histlib.h \
|
||||
$(srcdir)/posixstat.h $(srcdir)/posixdir.h $(srcdir)/posixjmp.h \
|
||||
$(srcdir)/tilde.h $(srcdir)/rlconf.h $(srcdir)/rltty.h \
|
||||
$(srcdir)/ansi_stdlib.h $(srcdir)/tcap.h $(srcdir)/rlstdc.h \
|
||||
$(srcdir)/xmalloc.h $(srcdir)/rlprivate.h $(srcdir)/rlshell.h \
|
||||
$(srcdir)/rltypedefs.h $(srcdir)/rlmbutil.h
|
||||
|
||||
HISTOBJ = history.o histexpand.o histfile.o histsearch.o shell.o mbutil.o
|
||||
TILDEOBJ = tilde.o
|
||||
OBJECTS = readline.o vi_mode.o funmap.o keymaps.o parens.o search.o \
|
||||
rltty.o complete.o bind.o isearch.o display.o signals.o \
|
||||
util.o kill.o undo.o macro.o input.o callback.o terminal.o \
|
||||
text.o nls.o misc.o compat.o xmalloc.o $(HISTOBJ) $(TILDEOBJ) \
|
||||
$(WCWIDTH_OBJ)
|
||||
text.o nls.o misc.o compat.o xfree.o xmalloc.o $(HISTOBJ) $(TILDEOBJ)
|
||||
|
||||
# The texinfo files which document this library.
|
||||
DOCSOURCE = doc/rlman.texinfo doc/rltech.texinfo doc/rluser.texinfo
|
||||
|
@ -159,15 +159,11 @@ libreadline.a: $(OBJECTS)
|
|||
$(AR) $(ARFLAGS) $@ $(OBJECTS)
|
||||
-test -n "$(RANLIB)" && $(RANLIB) $@
|
||||
|
||||
libhistory.a: $(HISTOBJ) xmalloc.o
|
||||
libhistory.a: $(HISTOBJ) xmalloc.o xfree.o
|
||||
$(RM) $@
|
||||
$(AR) $(ARFLAGS) $@ $(HISTOBJ) xmalloc.o
|
||||
$(AR) $(ARFLAGS) $@ $(HISTOBJ) xmalloc.o xfree.o
|
||||
-test -n "$(RANLIB)" && $(RANLIB) $@
|
||||
|
||||
wcwidth.o: $(srcdir)/support/wcwidth.c
|
||||
$(RM) $@
|
||||
$(CC) $(CCFLAGS) -c $(srcdir)/support/wcwidth.c
|
||||
|
||||
# Since tilde.c is shared between readline and bash, make sure we compile
|
||||
# it with the right flags when it's built as part of readline
|
||||
tilde.o: tilde.c
|
||||
|
@ -175,7 +171,7 @@ tilde.o: tilde.c
|
|||
$(CC) $(CCFLAGS) -DREADLINE_LIBRARY -c $(srcdir)/tilde.c
|
||||
|
||||
readline: $(OBJECTS) readline.h rldefs.h chardefs.h ./libreadline.a
|
||||
$(CC) $(CCFLAGS) -o $@ ./examples/rl.c ./libreadline.a ${TERMCAP_LIB}
|
||||
$(CC) $(CCFLAGS) -DREADLINE_LIBRARY -o $@ $(top_srcdir)/examples/rl.c ./libreadline.a ${TERMCAP_LIB}
|
||||
|
||||
lint: force
|
||||
$(MAKE) $(MFLAGS) CCFLAGS='$(GCC_LINT_CFLAGS)' static
|
||||
|
@ -200,6 +196,7 @@ stamp-h: config.status $(srcdir)/config.h.in
|
|||
#$(srcdir)/configure: $(srcdir)/configure.in ## Comment-me-out in distribution
|
||||
# cd $(srcdir) && autoconf ## Comment-me-out in distribution
|
||||
|
||||
|
||||
shared: force
|
||||
-test -d shlib || mkdir shlib
|
||||
-( cd shlib ; ${MAKE} ${MFLAGS} all )
|
||||
|
@ -214,17 +211,6 @@ examples: force
|
|||
|
||||
force:
|
||||
|
||||
install-headers: installdirs ${INSTALLED_HEADERS}
|
||||
for f in ${INSTALLED_HEADERS}; do \
|
||||
$(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(includedir)/readline ; \
|
||||
done
|
||||
|
||||
uninstall-headers:
|
||||
-test -n "$(includedir)" && cd $(DESTDIR)$(includedir)/readline && \
|
||||
${RM} ${INSTALLED_HEADERS}
|
||||
|
||||
maybe-uninstall-headers: uninstall-headers
|
||||
|
||||
## GDB LOCAL
|
||||
## Don't mess with people's installed readline's.
|
||||
## This tries to install this version of readline over whatever
|
||||
|
@ -237,7 +223,18 @@ install:
|
|||
|
||||
#install: $(INSTALL_TARGETS)
|
||||
|
||||
install-static: installdirs $(STATIC_LIBS) install-headers install-doc
|
||||
install-headers: installdirs ${INSTALLED_HEADERS}
|
||||
for f in ${INSTALLED_HEADERS}; do \
|
||||
$(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(includedir)/readline ; \
|
||||
done
|
||||
|
||||
uninstall-headers:
|
||||
-test -n "$(includedir)" && cd $(DESTDIR)$(includedir)/readline && \
|
||||
${RM} ${INSTALLED_HEADERS}
|
||||
|
||||
maybe-uninstall-headers: uninstall-headers
|
||||
|
||||
install-static: installdirs $(STATIC_LIBS) install-headers install-doc install-examples
|
||||
-$(MV) $(DESTDIR)$(libdir)/libreadline.a $(DESTDIR)$(libdir)/libreadline.old
|
||||
$(INSTALL_DATA) libreadline.a $(DESTDIR)$(libdir)/libreadline.a
|
||||
-test -n "$(RANLIB)" && $(RANLIB) $(DESTDIR)$(libdir)/libreadline.a
|
||||
|
@ -250,7 +247,7 @@ installdirs: $(srcdir)/support/mkinstalldirs
|
|||
$(DESTDIR)$(includedir)/readline $(DESTDIR)$(libdir) \
|
||||
$(DESTDIR)$(infodir) $(DESTDIR)$(man3dir)
|
||||
|
||||
uninstall: uninstall-headers uninstall-doc
|
||||
uninstall: uninstall-headers uninstall-doc uninstall-examples
|
||||
-test -n "$(DESTDIR)$(libdir)" && cd $(DESTDIR)$(libdir) && \
|
||||
${RM} libreadline.a libreadline.old libhistory.a libhistory.old $(SHARED_LIBS)
|
||||
-( cd shlib; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} uninstall )
|
||||
|
@ -261,6 +258,12 @@ install-shared: installdirs install-headers shared install-doc
|
|||
uninstall-shared: maybe-uninstall-headers
|
||||
-( cd shlib; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} uninstall )
|
||||
|
||||
install-examples: installdirs install-headers shared
|
||||
-( cd examples ; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} install )
|
||||
|
||||
uninstall-examples: maybe-uninstall-headers
|
||||
-( cd examples; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} uninstall )
|
||||
|
||||
install-doc: installdirs
|
||||
-( if test -d doc ; then \
|
||||
cd doc && \
|
||||
|
@ -274,10 +277,10 @@ uninstall-doc:
|
|||
fi )
|
||||
|
||||
TAGS: force
|
||||
$(ETAGS) $(CSOURCES) $(HSOURCES)
|
||||
-( cd $(srcdir) && $(ETAGS) $(CSOURCES) $(HSOURCES) )
|
||||
|
||||
tags: force
|
||||
$(CTAGS) $(CSOURCES) $(HSOURCES)
|
||||
-( cd $(srcdir) && $(CTAGS) $(CSOURCES) $(HSOURCES) )
|
||||
|
||||
clean: force
|
||||
$(RM) $(OBJECTS) $(STATIC_LIBS)
|
||||
|
@ -299,12 +302,14 @@ distclean maintainer-clean: clean
|
|||
$(RM) $(CREATED_CONFIGURE)
|
||||
$(RM) $(CREATED_TAGS)
|
||||
|
||||
info dvi html pdf:
|
||||
info dvi html pdf ps:
|
||||
-( cd doc && $(MAKE) $(MFLAGS) $@ )
|
||||
|
||||
install-info:
|
||||
install-dvi:
|
||||
install-html:
|
||||
install-pdf:
|
||||
install-ps:
|
||||
check:
|
||||
installcheck:
|
||||
|
||||
|
@ -416,6 +421,8 @@ util.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h
|
|||
vi_mode.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h
|
||||
vi_mode.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h
|
||||
vi_mode.o: history.h ansi_stdlib.h rlstdc.h
|
||||
xfree.o: ${BUILD_DIR}/config.h
|
||||
xfree.o: ansi_stdlib.h
|
||||
xmalloc.o: ${BUILD_DIR}/config.h
|
||||
xmalloc.o: ansi_stdlib.h
|
||||
|
||||
|
@ -474,6 +481,7 @@ tilde.o: xmalloc.h
|
|||
undo.o: xmalloc.h
|
||||
util.o: xmalloc.h
|
||||
vi_mode.o: xmalloc.h
|
||||
xfree.o: xmalloc.h
|
||||
xmalloc.o: xmalloc.h
|
||||
|
||||
complete.o: rlmbutil.h
|
||||
|
@ -515,6 +523,7 @@ tilde.o: $(srcdir)/tilde.c
|
|||
undo.o: $(srcdir)/undo.c
|
||||
util.o: $(srcdir)/util.c
|
||||
vi_mode.o: $(srcdir)/vi_mode.c
|
||||
xfree.o: $(srcdir)/xfree.c
|
||||
xmalloc.o: $(srcdir)/xmalloc.c
|
||||
|
||||
histexpand.o: $(srcdir)/histexpand.c
|
||||
|
@ -549,6 +558,7 @@ tilde.o: tilde.c
|
|||
undo.o: undo.c
|
||||
util.o: util.c
|
||||
vi_mode.o: vi_mode.c
|
||||
xfree.o: xfree.c
|
||||
xmalloc.o: xmalloc.c
|
||||
|
||||
histexpand.o: histexpand.c
|
||||
|
|
|
@ -1,32 +1,19 @@
|
|||
This is a terse description of the new features added to readline-5.1 since
|
||||
the release of readline-5.0.
|
||||
This is a terse description of the new features added to readline-6.2 since
|
||||
the release of readline-6.1.
|
||||
|
||||
1. New Features in Readline
|
||||
a. The history library does not try to write the history filename in the
|
||||
current directory if $HOME is unset. This closes a potential security
|
||||
problem if the application does not specify a history filename.
|
||||
|
||||
a. The key sequence sent by the keypad `delete' key is now automatically
|
||||
bound to delete-char.
|
||||
b. New bindable variable `completion-display-width' to set the number of
|
||||
columns used when displaying completions.
|
||||
|
||||
b. A negative argument to menu-complete now cycles backward through the
|
||||
completion list.
|
||||
c. New bindable variable `completion-case-map' to cause case-insensitive
|
||||
completion to treat `-' and `_' as identical.
|
||||
|
||||
c. A new bindable readline variable: bind-tty-special-chars. If non-zero,
|
||||
readline will bind the terminal special characters to their readline
|
||||
equivalents when it's called (on by default).
|
||||
d. There are new bindable vi-mode command names to avoid readline's case-
|
||||
insensitive matching not allowing them to be bound separately.
|
||||
|
||||
d. New bindable command: vi-rubout. Saves deleted text for possible
|
||||
reinsertion, as with any vi-mode `text modification' command; `X' is bound
|
||||
to this in vi command mode.
|
||||
|
||||
e. If the rl_completion_query_items is set to a value < 0, readline never
|
||||
asks the user whether or not to view the possible completions.
|
||||
|
||||
f. New application-callable auxiliary function, rl_variable_value, returns
|
||||
a string corresponding to a readline variable's value.
|
||||
|
||||
g. When parsing inputrc files and variable binding commands, the parser
|
||||
strips trailing whitespace from values assigned to boolean variables
|
||||
before checking them.
|
||||
|
||||
h. A new external application-controllable variable that allows the LINES
|
||||
and COLUMNS environment variables to set the window size regardless of
|
||||
what the kernel returns.
|
||||
e. New bindable variable `menu-complete-display-prefix' causes the menu
|
||||
completion code to display the common prefix of the possible completions
|
||||
before cycling through the list, instead of after.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Introduction
|
||||
============
|
||||
|
||||
This is the Gnu Readline library, version 5.1.
|
||||
This is the Gnu Readline library, version 6.2.
|
||||
|
||||
The Readline library provides a set of functions for use by applications
|
||||
that allow users to edit command lines as they are typed in. Both
|
||||
|
@ -16,8 +16,9 @@ may be used without Readline in applications which desire its
|
|||
capabilities.
|
||||
|
||||
The Readline library is free software, distributed under the terms of
|
||||
the [GNU] General Public License, version 2. For more information, see
|
||||
the file COPYING.
|
||||
the [GNU] General Public License as published by the Free Software
|
||||
Foundation, version 3 of the License. For more information, see the
|
||||
file COPYING.
|
||||
|
||||
To build the library, try typing `./configure', then `make'. The
|
||||
configuration process is automated, so no further intervention should
|
||||
|
@ -183,4 +184,4 @@ list (mirrored to the Usenet newsgroup gnu.bash.bug) often contains
|
|||
Readline bug reports and fixes.
|
||||
|
||||
Chet Ramey
|
||||
chet@po.cwru.edu
|
||||
chet.ramey@case.edu
|
||||
|
|
285
readline/aclocal.m4
vendored
285
readline/aclocal.m4
vendored
|
@ -80,6 +80,9 @@ AC_CACHE_VAL(bash_cv_type_$1,
|
|||
#if HAVE_INTTYPES_H
|
||||
#include <inttypes.h>
|
||||
#endif
|
||||
#if HAVE_STDINT_H
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
$2
|
||||
], bash_cv_type_$1=yes, bash_cv_type_$1=no)])
|
||||
AC_MSG_RESULT($bash_cv_type_$1)
|
||||
|
@ -215,7 +218,7 @@ AC_CACHE_VAL(bash_cv_sys_siglist,
|
|||
#ifdef HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
#ifndef SYS_SIGLIST_DECLARED
|
||||
#if !HAVE_DECL_SYS_SIGLIST
|
||||
extern char *sys_siglist[];
|
||||
#endif
|
||||
main()
|
||||
|
@ -336,18 +339,18 @@ main()
|
|||
{
|
||||
DIR *dir;
|
||||
int fd, err;
|
||||
err = mkdir("/tmp/bash-aclocal", 0700);
|
||||
err = mkdir("bash-aclocal", 0700);
|
||||
if (err < 0) {
|
||||
perror("mkdir");
|
||||
exit(1);
|
||||
}
|
||||
unlink("/tmp/bash-aclocal/not_a_directory");
|
||||
fd = open("/tmp/bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666);
|
||||
unlink("bash-aclocal/not_a_directory");
|
||||
fd = open("bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666);
|
||||
write(fd, "\n", 1);
|
||||
close(fd);
|
||||
dir = opendir("/tmp/bash-aclocal/not_a_directory");
|
||||
unlink("/tmp/bash-aclocal/not_a_directory");
|
||||
rmdir("/tmp/bash-aclocal");
|
||||
dir = opendir("bash-aclocal/not_a_directory");
|
||||
unlink("bash-aclocal/not_a_directory");
|
||||
rmdir("bash-aclocal");
|
||||
exit (dir == 0);
|
||||
}], bash_cv_opendir_not_robust=yes,bash_cv_opendir_not_robust=no,
|
||||
[AC_MSG_WARN(cannot check opendir if cross compiling -- defaulting to no)
|
||||
|
@ -531,6 +534,18 @@ AC_DEFINE(RLIMTYPE, rlim_t)
|
|||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN(BASH_TYPE_SIG_ATOMIC_T,
|
||||
[AC_CACHE_CHECK([for sig_atomic_t in signal.h], ac_cv_have_sig_atomic_t,
|
||||
[AC_TRY_LINK([
|
||||
#include <signal.h>
|
||||
],[ sig_atomic_t x; ],
|
||||
ac_cv_have_sig_atomic_t=yes, ac_cv_have_sig_atomic_t=no)])
|
||||
if test "$ac_cv_have_sig_atomic_t" = "no"
|
||||
then
|
||||
AC_CHECK_TYPE(sig_atomic_t,int)
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN(BASH_FUNC_LSTAT,
|
||||
[dnl Cannot use AC_CHECK_FUNCS(lstat) because Linux defines lstat() as an
|
||||
dnl inline function in <sys/stat.h>.
|
||||
|
@ -685,7 +700,7 @@ fi
|
|||
])
|
||||
|
||||
AC_DEFUN(BASH_FUNC_GETCWD,
|
||||
[AC_MSG_CHECKING([if getcwd() will dynamically allocate memory])
|
||||
[AC_MSG_CHECKING([if getcwd() will dynamically allocate memory with 0 size])
|
||||
AC_CACHE_VAL(bash_cv_getcwd_malloc,
|
||||
[AC_TRY_RUN([
|
||||
#include <stdio.h>
|
||||
|
@ -933,7 +948,7 @@ AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS)
|
|||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN(BASH_CHECK_LIB_TERMCAP,
|
||||
AC_DEFUN([BASH_CHECK_LIB_TERMCAP],
|
||||
[
|
||||
if test "X$bash_cv_termcap_lib" = "X"; then
|
||||
_bash_needmsg=yes
|
||||
|
@ -1423,19 +1438,19 @@ exit (1);
|
|||
#if defined (NeXT)
|
||||
exit (1);
|
||||
#endif
|
||||
err = mkdir("/tmp/bash-aclocal", 0700);
|
||||
err = mkdir("bash-aclocal", 0700);
|
||||
if (err < 0) {
|
||||
perror ("mkdir");
|
||||
exit(1);
|
||||
}
|
||||
fd = mknod ("/tmp/bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0);
|
||||
fd = mknod ("bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0);
|
||||
if (fd == -1) {
|
||||
rmdir ("/tmp/bash-aclocal");
|
||||
rmdir ("bash-aclocal");
|
||||
exit (1);
|
||||
}
|
||||
close(fd);
|
||||
unlink ("/tmp/bash-aclocal/sh-np-autoconf");
|
||||
rmdir ("/tmp/bash-aclocal");
|
||||
unlink ("bash-aclocal/sh-np-autoconf");
|
||||
rmdir ("bash-aclocal");
|
||||
exit(0);
|
||||
}], bash_cv_sys_named_pipes=present, bash_cv_sys_named_pipes=missing,
|
||||
[AC_MSG_WARN(cannot check for named pipes if cross-compiling -- defaulting to missing)
|
||||
|
@ -1540,20 +1555,22 @@ fi
|
|||
AC_DEFUN(BASH_CHECK_DEV_FD,
|
||||
[AC_MSG_CHECKING(whether /dev/fd is available)
|
||||
AC_CACHE_VAL(bash_cv_dev_fd,
|
||||
[if test -d /dev/fd && test -r /dev/fd/0 < /dev/null; then
|
||||
[bash_cv_dev_fd=""
|
||||
if test -d /dev/fd && (exec test -r /dev/fd/0 < /dev/null) ; then
|
||||
# check for systems like FreeBSD 5 that only provide /dev/fd/[012]
|
||||
exec 3<&0
|
||||
if test -r /dev/fd/3; then
|
||||
if (exec test -r /dev/fd/3 3</dev/null) ; then
|
||||
bash_cv_dev_fd=standard
|
||||
else
|
||||
bash_cv_dev_fd=absent
|
||||
fi
|
||||
exec 3<&-
|
||||
elif test -d /proc/self/fd && test -r /proc/self/fd/0 < /dev/null; then
|
||||
fi
|
||||
if test -z "$bash_cv_dev_fd" ; then
|
||||
if test -d /proc/self/fd && (exec test -r /proc/self/fd/0 < /dev/null) ; then
|
||||
bash_cv_dev_fd=whacky
|
||||
else
|
||||
bash_cv_dev_fd=absent
|
||||
fi
|
||||
fi
|
||||
])
|
||||
AC_MSG_RESULT($bash_cv_dev_fd)
|
||||
if test $bash_cv_dev_fd = "standard"; then
|
||||
|
@ -1568,9 +1585,9 @@ fi
|
|||
AC_DEFUN(BASH_CHECK_DEV_STDIN,
|
||||
[AC_MSG_CHECKING(whether /dev/stdin stdout stderr are available)
|
||||
AC_CACHE_VAL(bash_cv_dev_stdin,
|
||||
[if test -d /dev/fd && test -r /dev/stdin < /dev/null; then
|
||||
[if test -d /dev/fd && (exec test -r /dev/stdin < /dev/null) ; then
|
||||
bash_cv_dev_stdin=present
|
||||
elif test -d /proc/self/fd && test -r /dev/stdin < /dev/null; then
|
||||
elif test -d /proc/self/fd && (exec test -r /dev/stdin < /dev/null) ; then
|
||||
bash_cv_dev_stdin=present
|
||||
else
|
||||
bash_cv_dev_stdin=absent
|
||||
|
@ -1667,37 +1684,39 @@ fi
|
|||
dnl
|
||||
dnl check for availability of multibyte characters and functions
|
||||
dnl
|
||||
dnl geez, I wish I didn't have to check for all of this stuff separately
|
||||
dnl
|
||||
AC_DEFUN(BASH_CHECK_MULTIBYTE,
|
||||
[
|
||||
AC_CHECK_HEADERS(wctype.h)
|
||||
AC_CHECK_HEADERS(wchar.h)
|
||||
AC_CHECK_HEADERS(langinfo.h)
|
||||
|
||||
AC_CHECK_FUNC(mbsrtowcs, AC_DEFINE(HAVE_MBSRTOWCS))
|
||||
AC_CHECK_FUNC(mbrtowc, AC_DEFINE(HAVE_MBRTOWC))
|
||||
AC_CHECK_FUNC(mbrlen, AC_DEFINE(HAVE_MBRLEN))
|
||||
AC_CHECK_FUNC(wctomb, AC_DEFINE(HAVE_WCTOMB))
|
||||
AC_CHECK_FUNC(wcwidth, AC_DEFINE(HAVE_WCWIDTH))
|
||||
AC_CHECK_FUNC(mbscasecmp, AC_DEFINE(HAVE_MBSCMP))
|
||||
AC_CHECK_FUNC(mbscmp, AC_DEFINE(HAVE_MBSCMP))
|
||||
AC_CHECK_FUNC(mbsnrtowcs, AC_DEFINE(HAVE_MBSNRTOWCS))
|
||||
AC_CHECK_FUNC(mbsrtowcs, AC_DEFINE(HAVE_MBSRTOWCS))
|
||||
|
||||
|
||||
AC_REPLACE_FUNCS(mbschr)
|
||||
|
||||
AC_CHECK_FUNC(wcrtomb, AC_DEFINE(HAVE_WCRTOMB))
|
||||
AC_CHECK_FUNC(wcscoll, AC_DEFINE(HAVE_WCSCOLL))
|
||||
AC_CHECK_FUNC(wcsdup, AC_DEFINE(HAVE_WCSDUP))
|
||||
AC_CHECK_FUNC(wcwidth, AC_DEFINE(HAVE_WCWIDTH))
|
||||
AC_CHECK_FUNC(wctype, AC_DEFINE(HAVE_WCTYPE))
|
||||
|
||||
if test "$ac_cv_func_wcwidth" = no && test "$ac_cv_header_wchar_h" = yes; then
|
||||
WCWIDTH_OBJ=wcwidth.o
|
||||
else
|
||||
WCWIDTH_OBJ=
|
||||
fi
|
||||
AC_SUBST(WCWIDTH_OBJ)
|
||||
AC_REPLACE_FUNCS(wcswidth)
|
||||
|
||||
AC_CACHE_CHECK([for mbstate_t], bash_cv_have_mbstate_t,
|
||||
[AC_TRY_COMPILE([
|
||||
#include <wchar.h>], [
|
||||
mbstate_t ps;
|
||||
mbstate_t *psp;
|
||||
psp = (mbstate_t *)0;
|
||||
], bash_cv_have_mbstate_t=yes, bash_cv_have_mbstate_t=no)])
|
||||
if test $bash_cv_have_mbstate_t = yes; then
|
||||
dnl checks for both mbrtowc and mbstate_t
|
||||
AC_FUNC_MBRTOWC
|
||||
if test $ac_cv_func_mbrtowc = yes; then
|
||||
AC_DEFINE(HAVE_MBSTATE_T)
|
||||
fi
|
||||
|
||||
AC_CHECK_FUNCS(iswlower iswupper towlower towupper iswctype)
|
||||
|
||||
AC_CACHE_CHECK([for nl_langinfo and CODESET], bash_cv_langinfo_codeset,
|
||||
[AC_TRY_LINK(
|
||||
[#include <langinfo.h>],
|
||||
|
@ -1707,6 +1726,50 @@ if test $bash_cv_langinfo_codeset = yes; then
|
|||
AC_DEFINE(HAVE_LANGINFO_CODESET)
|
||||
fi
|
||||
|
||||
dnl check for wchar_t in <wchar.h>
|
||||
AC_CACHE_CHECK([for wchar_t in wchar.h], bash_cv_type_wchar_t,
|
||||
[AC_TRY_COMPILE(
|
||||
[#include <wchar.h>
|
||||
],
|
||||
[
|
||||
wchar_t foo;
|
||||
foo = 0;
|
||||
], bash_cv_type_wchar_t=yes, bash_cv_type_wchar_t=no)])
|
||||
if test $bash_cv_type_wchar_t = yes; then
|
||||
AC_DEFINE(HAVE_WCHAR_T, 1, [systems should define this type here])
|
||||
fi
|
||||
|
||||
dnl check for wctype_t in <wctype.h>
|
||||
AC_CACHE_CHECK([for wctype_t in wctype.h], bash_cv_type_wctype_t,
|
||||
[AC_TRY_COMPILE(
|
||||
[#include <wctype.h>],
|
||||
[
|
||||
wctype_t foo;
|
||||
foo = 0;
|
||||
], bash_cv_type_wctype_t=yes, bash_cv_type_wctype_t=no)])
|
||||
if test $bash_cv_type_wctype_t = yes; then
|
||||
AC_DEFINE(HAVE_WCTYPE_T, 1, [systems should define this type here])
|
||||
fi
|
||||
|
||||
dnl check for wint_t in <wctype.h>
|
||||
AC_CACHE_CHECK([for wint_t in wctype.h], bash_cv_type_wint_t,
|
||||
[AC_TRY_COMPILE(
|
||||
[#include <wctype.h>],
|
||||
[
|
||||
wint_t foo;
|
||||
foo = 0;
|
||||
], bash_cv_type_wint_t=yes, bash_cv_type_wint_t=no)])
|
||||
if test $bash_cv_type_wint_t = yes; then
|
||||
AC_DEFINE(HAVE_WINT_T, 1, [systems should define this type here])
|
||||
fi
|
||||
|
||||
if test "$am_cv_func_iconv" = yes; then
|
||||
OLDLIBS="$LIBS"
|
||||
LIBS="$LIBS $LIBICONV"
|
||||
AC_CHECK_FUNCS(locale_charset)
|
||||
LIBS="$OLDLIBS"
|
||||
fi
|
||||
|
||||
])
|
||||
|
||||
dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB
|
||||
|
@ -1714,7 +1777,7 @@ dnl require:
|
|||
dnl AC_PROG_CC
|
||||
dnl BASH_CHECK_LIB_TERMCAP
|
||||
|
||||
AC_DEFUN(RL_LIB_READLINE_VERSION,
|
||||
AC_DEFUN([RL_LIB_READLINE_VERSION],
|
||||
[
|
||||
AC_REQUIRE([BASH_CHECK_LIB_TERMCAP])
|
||||
|
||||
|
@ -2331,7 +2394,7 @@ AC_DEFUN([AM_INTL_SUBDIR],
|
|||
AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \
|
||||
stdlib.h string.h unistd.h sys/param.h])
|
||||
AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \
|
||||
geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \
|
||||
geteuid getgid getuid mempcpy munmap putenv setenv setlocale localeconv stpcpy \
|
||||
strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \
|
||||
__fsetlocking])
|
||||
|
||||
|
@ -3964,3 +4027,143 @@ AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG],
|
|||
[Define if you have the unsigned long long type.])
|
||||
fi
|
||||
])
|
||||
|
||||
dnl From gnulib
|
||||
AC_DEFUN([BASH_FUNC_FPURGE],
|
||||
[
|
||||
AC_CHECK_FUNCS_ONCE([fpurge])
|
||||
AC_CHECK_FUNCS_ONCE([__fpurge])
|
||||
AC_CHECK_DECLS([fpurge], , , [#include <stdio.h>])
|
||||
])
|
||||
|
||||
AC_DEFUN([BASH_FUNC_SNPRINTF],
|
||||
[
|
||||
AC_CHECK_FUNCS_ONCE([snprintf])
|
||||
if test X$ac_cv_func_snprintf = Xyes; then
|
||||
AC_CACHE_CHECK([for standard-conformant snprintf], [bash_cv_func_snprintf],
|
||||
[AC_TRY_RUN([
|
||||
#include <stdio.h>
|
||||
|
||||
main()
|
||||
{
|
||||
int n;
|
||||
n = snprintf (0, 0, "%s", "0123456");
|
||||
exit(n != 7);
|
||||
}
|
||||
], bash_cv_func_snprintf=yes, bash_cv_func_snprintf=no,
|
||||
[AC_MSG_WARN([cannot check standard snprintf if cross-compiling])
|
||||
bash_cv_func_snprintf=yes]
|
||||
)])
|
||||
if test $bash_cv_func_snprintf = no; then
|
||||
ac_cv_func_snprintf=no
|
||||
fi
|
||||
fi
|
||||
if test $ac_cv_func_snprintf = no; then
|
||||
AC_DEFINE(HAVE_SNPRINTF, 0,
|
||||
[Define if you have a standard-conformant snprintf function.])
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([BASH_FUNC_VSNPRINTF],
|
||||
[
|
||||
AC_CHECK_FUNCS_ONCE([vsnprintf])
|
||||
if test X$ac_cv_func_vsnprintf = Xyes; then
|
||||
AC_CACHE_CHECK([for standard-conformant vsnprintf], [bash_cv_func_vsnprintf],
|
||||
[AC_TRY_RUN([
|
||||
#if HAVE_STDARG_H
|
||||
#include <stdarg.h>
|
||||
#else
|
||||
#include <varargs.h>
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
static int
|
||||
#if HAVE_STDARG_H
|
||||
foo(const char *fmt, ...)
|
||||
#else
|
||||
foo(format, va_alist)
|
||||
const char *format;
|
||||
va_dcl
|
||||
#endif
|
||||
{
|
||||
va_list args;
|
||||
int n;
|
||||
|
||||
#if HAVE_STDARG_H
|
||||
va_start(args, fmt);
|
||||
#else
|
||||
va_start(args);
|
||||
#endif
|
||||
n = vsnprintf(0, 0, fmt, args);
|
||||
va_end (args);
|
||||
return n;
|
||||
}
|
||||
|
||||
main()
|
||||
{
|
||||
int n;
|
||||
n = foo("%s", "0123456");
|
||||
exit(n != 7);
|
||||
}
|
||||
], bash_cv_func_vsnprintf=yes, bash_cv_func_vsnprintf=no,
|
||||
[AC_MSG_WARN([cannot check standard vsnprintf if cross-compiling])
|
||||
bash_cv_func_vsnprintf=yes]
|
||||
)])
|
||||
if test $bash_cv_func_vsnprintf = no; then
|
||||
ac_cv_func_vsnprintf=no
|
||||
fi
|
||||
fi
|
||||
if test $ac_cv_func_vsnprintf = no; then
|
||||
AC_DEFINE(HAVE_VSNPRINTF, 0,
|
||||
[Define if you have a standard-conformant vsnprintf function.])
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN(BASH_STRUCT_WEXITSTATUS_OFFSET,
|
||||
[AC_MSG_CHECKING(for offset of exit status in return status from wait)
|
||||
AC_CACHE_VAL(bash_cv_wexitstatus_offset,
|
||||
[AC_RUN_IFELSE([
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <sys/wait.h>
|
||||
|
||||
main(c, v)
|
||||
int c;
|
||||
char **v;
|
||||
{
|
||||
pid_t pid, p;
|
||||
int s, i, n;
|
||||
|
||||
s = 0;
|
||||
pid = fork();
|
||||
if (pid == 0)
|
||||
exit (42);
|
||||
|
||||
/* wait for the process */
|
||||
p = wait(&s);
|
||||
if (p != pid)
|
||||
exit (255);
|
||||
|
||||
/* crack s */
|
||||
for (i = 0; i < (sizeof(s) - 8); i++)
|
||||
{
|
||||
n = (s >> i) & 0xff;
|
||||
if (n == 42)
|
||||
exit (i);
|
||||
}
|
||||
|
||||
exit (254);
|
||||
}
|
||||
], bash_cv_wexitstatus_offset=0, bash_cv_wexitstatus_offset=$?,
|
||||
[AC_MSG_WARN(cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0)
|
||||
bash_cv_wexitstatus_offset=0]
|
||||
)])
|
||||
if test "$bash_cv_wexitstatus_offset" -gt 32 ; then
|
||||
AC_MSG_WARN(bad exit status from test program -- defaulting to 0)
|
||||
bash_cv_wexitstatus_offset=0
|
||||
fi
|
||||
AC_MSG_RESULT($bash_cv_wexitstatus_offset)
|
||||
AC_DEFINE_UNQUOTED([WEXITSTATUS_OFFSET], [$bash_cv_wexitstatus_offset], [Offset of exit status in wait status word])
|
||||
])
|
||||
|
|
|
@ -6,19 +6,19 @@
|
|||
|
||||
This file is part of GNU Bash, the Bourne Again SHell.
|
||||
|
||||
Bash is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation; either version 2, or (at your option) any later
|
||||
version.
|
||||
Bash is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Bash is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
Bash is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with Bash; see the file COPYING. If not, write to the Free Software
|
||||
Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Bash. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#if !defined (_STDLIB_H_)
|
||||
#define _STDLIB_H_ 1
|
||||
|
|
273
readline/bind.c
273
readline/bind.c
|
@ -1,24 +1,23 @@
|
|||
/* bind.c -- key binding and startup file support for the readline library. */
|
||||
|
||||
/* Copyright (C) 1987-2005 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1987-2010 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define READLINE_LIBRARY
|
||||
|
||||
|
@ -80,7 +79,7 @@ static int glean_key_from_name PARAMS((char *));
|
|||
static int find_boolean_var PARAMS((const char *));
|
||||
|
||||
static char *_rl_get_string_variable_value PARAMS((const char *));
|
||||
static int substring_member_of_array PARAMS((char *, const char **));
|
||||
static int substring_member_of_array PARAMS((const char *, const char * const *));
|
||||
|
||||
static int currently_reading_init_file;
|
||||
|
||||
|
@ -317,7 +316,7 @@ rl_macro_bind (keyseq, macro, map)
|
|||
|
||||
if (rl_translate_keyseq (macro, macro_keys, ¯o_keys_len))
|
||||
{
|
||||
free (macro_keys);
|
||||
xfree (macro_keys);
|
||||
return -1;
|
||||
}
|
||||
rl_generic_bind (ISMACR, keyseq, macro_keys, map);
|
||||
|
@ -347,7 +346,7 @@ rl_generic_bind (type, keyseq, data, map)
|
|||
if (keyseq == 0 || *keyseq == 0)
|
||||
{
|
||||
if (type == ISMACR)
|
||||
free (data);
|
||||
xfree (data);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -358,7 +357,7 @@ rl_generic_bind (type, keyseq, data, map)
|
|||
KEYS into KEYS_LEN. */
|
||||
if (rl_translate_keyseq (keyseq, keys, &keys_len))
|
||||
{
|
||||
free (keys);
|
||||
xfree (keys);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -370,7 +369,10 @@ rl_generic_bind (type, keyseq, data, map)
|
|||
|
||||
ic = uc;
|
||||
if (ic < 0 || ic >= KEYMAP_SIZE)
|
||||
{
|
||||
xfree (keys);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (META_CHAR (ic) && _rl_convert_meta_chars_to_ascii)
|
||||
{
|
||||
|
@ -411,11 +413,18 @@ rl_generic_bind (type, keyseq, data, map)
|
|||
else
|
||||
{
|
||||
if (map[ic].type == ISMACR)
|
||||
free ((char *)map[ic].function);
|
||||
xfree ((char *)map[ic].function);
|
||||
else if (map[ic].type == ISKMAP)
|
||||
{
|
||||
map = FUNCTION_TO_KEYMAP (map, ic);
|
||||
ic = ANYOTHERKEY;
|
||||
/* If we're trying to override a keymap with a null function
|
||||
(e.g., trying to unbind it), we can't use a null pointer
|
||||
here because that's indistinguishable from having not been
|
||||
overridden. We use a special bindable function that does
|
||||
nothing. */
|
||||
if (type == ISFUNC && data == 0)
|
||||
data = (char *)_rl_null_function;
|
||||
}
|
||||
|
||||
map[ic].function = KEYMAP_TO_FUNCTION (data);
|
||||
|
@ -424,7 +433,7 @@ rl_generic_bind (type, keyseq, data, map)
|
|||
|
||||
rl_binding_keymap = map;
|
||||
}
|
||||
free (keys);
|
||||
xfree (keys);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -462,12 +471,21 @@ rl_translate_keyseq (seq, array, len)
|
|||
}
|
||||
else if (c == 'M')
|
||||
{
|
||||
i++;
|
||||
/* XXX - should obey convert-meta setting? */
|
||||
i++; /* seq[i] == '-' */
|
||||
/* XXX - obey convert-meta setting */
|
||||
if (_rl_convert_meta_chars_to_ascii && _rl_keymap[ESC].type == ISKMAP)
|
||||
array[l++] = ESC; /* ESC is meta-prefix */
|
||||
else if (seq[i+1] == '\\' && seq[i+2] == 'C' && seq[i+3] == '-')
|
||||
{
|
||||
i += 4;
|
||||
temp = (seq[i] == '?') ? RUBOUT : CTRL (_rl_to_upper (seq[i]));
|
||||
array[l++] = META (temp);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* This doesn't yet handle things like \M-\a, which may
|
||||
or may not have any reasonable meaning. You're
|
||||
probably better off using straight octal or hex. */
|
||||
i++;
|
||||
array[l++] = META (seq[i]);
|
||||
}
|
||||
|
@ -565,6 +583,11 @@ rl_untranslate_keyseq (seq)
|
|||
kseq[i++] = '-';
|
||||
c = UNMETA (c);
|
||||
}
|
||||
else if (c == ESC)
|
||||
{
|
||||
kseq[i++] = '\\';
|
||||
c = 'e';
|
||||
}
|
||||
else if (CTRL_CHAR (c))
|
||||
{
|
||||
kseq[i++] = '\\';
|
||||
|
@ -613,7 +636,12 @@ _rl_untranslate_macro_value (seq)
|
|||
*r++ = '-';
|
||||
c = UNMETA (c);
|
||||
}
|
||||
else if (CTRL_CHAR (c) && c != ESC)
|
||||
else if (c == ESC)
|
||||
{
|
||||
*r++ = '\\';
|
||||
c = 'e';
|
||||
}
|
||||
else if (CTRL_CHAR (c))
|
||||
{
|
||||
*r++ = '\\';
|
||||
*r++ = 'C';
|
||||
|
@ -672,7 +700,7 @@ rl_function_of_keyseq (keyseq, map, type)
|
|||
{
|
||||
register int i;
|
||||
|
||||
if (!map)
|
||||
if (map == 0)
|
||||
map = _rl_keymap;
|
||||
|
||||
for (i = 0; keyseq && keyseq[i]; i++)
|
||||
|
@ -681,25 +709,27 @@ rl_function_of_keyseq (keyseq, map, type)
|
|||
|
||||
if (META_CHAR (ic) && _rl_convert_meta_chars_to_ascii)
|
||||
{
|
||||
if (map[ESC].type != ISKMAP)
|
||||
if (map[ESC].type == ISKMAP)
|
||||
{
|
||||
map = FUNCTION_TO_KEYMAP (map, ESC);
|
||||
ic = UNMETA (ic);
|
||||
}
|
||||
/* XXX - should we just return NULL here, since this obviously
|
||||
doesn't match? */
|
||||
else
|
||||
{
|
||||
if (type)
|
||||
*type = map[ESC].type;
|
||||
|
||||
return (map[ESC].function);
|
||||
}
|
||||
else
|
||||
{
|
||||
map = FUNCTION_TO_KEYMAP (map, ESC);
|
||||
ic = UNMETA (ic);
|
||||
}
|
||||
}
|
||||
|
||||
if (map[ic].type == ISKMAP)
|
||||
{
|
||||
/* If this is the last key in the key sequence, return the
|
||||
map. */
|
||||
if (!keyseq[i + 1])
|
||||
if (keyseq[i + 1] == '\0')
|
||||
{
|
||||
if (type)
|
||||
*type = ISKMAP;
|
||||
|
@ -709,7 +739,12 @@ rl_function_of_keyseq (keyseq, map, type)
|
|||
else
|
||||
map = FUNCTION_TO_KEYMAP (map, ic);
|
||||
}
|
||||
else
|
||||
/* If we're not at the end of the key sequence, and the current key
|
||||
is bound to something other than a keymap, then the entire key
|
||||
sequence is not bound. */
|
||||
else if (map[ic].type != ISKMAP && keyseq[i+1])
|
||||
return ((rl_command_func_t *)NULL);
|
||||
else /* map[ic].type != ISKMAP && keyseq[i+1] == 0 */
|
||||
{
|
||||
if (type)
|
||||
*type = map[ic].type;
|
||||
|
@ -764,10 +799,12 @@ _rl_read_file (filename, sizep)
|
|||
|
||||
if (i < 0)
|
||||
{
|
||||
free (buffer);
|
||||
xfree (buffer);
|
||||
return ((char *)NULL);
|
||||
}
|
||||
|
||||
RL_CHECK_SIGNALS ();
|
||||
|
||||
buffer[i] = '\0';
|
||||
if (sizep)
|
||||
*sizep = i;
|
||||
|
@ -791,6 +828,7 @@ rl_re_read_init_file (count, ignore)
|
|||
1. the filename used for the previous call
|
||||
2. the value of the shell variable `INPUTRC'
|
||||
3. ~/.inputrc
|
||||
4. /etc/inputrc
|
||||
If the file existed and could be opened and read, 0 is returned,
|
||||
otherwise errno is returned. */
|
||||
int
|
||||
|
@ -799,17 +837,18 @@ rl_read_init_file (filename)
|
|||
{
|
||||
/* Default the filename. */
|
||||
if (filename == 0)
|
||||
{
|
||||
filename = last_readline_init_file;
|
||||
if (filename == 0)
|
||||
filename = sh_get_env_value ("INPUTRC");
|
||||
if (filename == 0)
|
||||
if (filename == 0 || *filename == 0)
|
||||
{
|
||||
filename = DEFAULT_INPUTRC;
|
||||
/* Try to read DEFAULT_INPUTRC; fall back to SYS_INPUTRC on failure */
|
||||
if (_rl_read_init_file (filename, 0) == 0)
|
||||
return 0;
|
||||
filename = SYS_INPUTRC;
|
||||
}
|
||||
|
||||
if (*filename == 0)
|
||||
filename = DEFAULT_INPUTRC;
|
||||
|
||||
#if defined (__MSDOS__)
|
||||
if (_rl_read_init_file (filename, 0) == 0)
|
||||
return 0;
|
||||
|
@ -832,8 +871,9 @@ _rl_read_init_file (filename, include_level)
|
|||
|
||||
openname = tilde_expand (filename);
|
||||
buffer = _rl_read_file (openname, &file_size);
|
||||
free (openname);
|
||||
xfree (openname);
|
||||
|
||||
RL_CHECK_SIGNALS ();
|
||||
if (buffer == 0)
|
||||
return (errno);
|
||||
|
||||
|
@ -880,7 +920,7 @@ _rl_read_init_file (filename, include_level)
|
|||
current_readline_init_lineno++;
|
||||
}
|
||||
|
||||
free (buffer);
|
||||
xfree (buffer);
|
||||
currently_reading_init_file = 0;
|
||||
return (0);
|
||||
}
|
||||
|
@ -890,10 +930,10 @@ _rl_init_file_error (msg)
|
|||
const char *msg;
|
||||
{
|
||||
if (currently_reading_init_file)
|
||||
fprintf (stderr, "readline: %s: line %d: %s\n", current_readline_init_file,
|
||||
_rl_errmsg ("%s: line %d: %s\n", current_readline_init_file,
|
||||
current_readline_init_lineno, msg);
|
||||
else
|
||||
fprintf (stderr, "readline: %s\n", msg);
|
||||
_rl_errmsg ("%s", msg);
|
||||
}
|
||||
|
||||
/* **************************************************************** */
|
||||
|
@ -905,11 +945,11 @@ _rl_init_file_error (msg)
|
|||
typedef int _rl_parser_func_t PARAMS((char *));
|
||||
|
||||
/* Things that mean `Control'. */
|
||||
const char *_rl_possible_control_prefixes[] = {
|
||||
const char * const _rl_possible_control_prefixes[] = {
|
||||
"Control-", "C-", "CTRL-", (const char *)NULL
|
||||
};
|
||||
|
||||
const char *_rl_possible_meta_prefixes[] = {
|
||||
const char * const _rl_possible_meta_prefixes[] = {
|
||||
"Meta", "M-", (const char *)NULL
|
||||
};
|
||||
|
||||
|
@ -971,7 +1011,7 @@ parser_if (args)
|
|||
`$if term=sun-cmd' into their .inputrc. */
|
||||
_rl_parsing_conditionalized_out = _rl_stricmp (args + 5, tname) &&
|
||||
_rl_stricmp (args + 5, rl_terminal_name);
|
||||
free (tname);
|
||||
xfree (tname);
|
||||
}
|
||||
#if defined (VI_MODE)
|
||||
else if (_rl_strnicmp (args, "mode=", 5) == 0)
|
||||
|
@ -1068,8 +1108,8 @@ parser_include (args)
|
|||
}
|
||||
|
||||
/* Associate textual names with actual functions. */
|
||||
static struct {
|
||||
const char *name;
|
||||
static const struct {
|
||||
const char * const name;
|
||||
_rl_parser_func_t *function;
|
||||
} parser_directives [] = {
|
||||
{ "if", parser_if },
|
||||
|
@ -1321,7 +1361,7 @@ rl_parse_and_bind (string)
|
|||
else
|
||||
rl_bind_keyseq (seq, rl_named_function (funname));
|
||||
|
||||
free (seq);
|
||||
xfree (seq);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1375,8 +1415,8 @@ rl_parse_and_bind (string)
|
|||
|
||||
#define V_SPECIAL 0x1
|
||||
|
||||
static struct {
|
||||
const char *name;
|
||||
static const struct {
|
||||
const char * const name;
|
||||
int *value;
|
||||
int flags;
|
||||
} boolean_varlist [] = {
|
||||
|
@ -1384,9 +1424,12 @@ static struct {
|
|||
{ "blink-matching-paren", &rl_blink_matching_paren, V_SPECIAL },
|
||||
{ "byte-oriented", &rl_byte_oriented, 0 },
|
||||
{ "completion-ignore-case", &_rl_completion_case_fold, 0 },
|
||||
{ "completion-map-case", &_rl_completion_case_map, 0 },
|
||||
{ "convert-meta", &_rl_convert_meta_chars_to_ascii, 0 },
|
||||
{ "disable-completion", &rl_inhibit_completion, 0 },
|
||||
{ "echo-control-characters", &_rl_echo_control_chars, 0 },
|
||||
{ "enable-keypad", &_rl_enable_keypad, 0 },
|
||||
{ "enable-meta-key", &_rl_enable_meta, 0 },
|
||||
{ "expand-tilde", &rl_complete_with_tilde_expansion, 0 },
|
||||
{ "history-preserve-point", &_rl_history_preserve_point, 0 },
|
||||
{ "horizontal-scroll-mode", &_rl_horizontal_scroll_mode, 0 },
|
||||
|
@ -1395,17 +1438,20 @@ static struct {
|
|||
{ "mark-modified-lines", &_rl_mark_modified_lines, 0 },
|
||||
{ "mark-symlinked-directories", &_rl_complete_mark_symlink_dirs, 0 },
|
||||
{ "match-hidden-files", &_rl_match_hidden_files, 0 },
|
||||
{ "menu-complete-display-prefix", &_rl_menu_complete_prefix_first, 0 },
|
||||
{ "meta-flag", &_rl_meta_flag, 0 },
|
||||
{ "output-meta", &_rl_output_meta_chars, 0 },
|
||||
{ "page-completions", &_rl_page_completions, 0 },
|
||||
{ "prefer-visible-bell", &_rl_prefer_visible_bell, V_SPECIAL },
|
||||
{ "print-completions-horizontally", &_rl_print_completions_horizontally, 0 },
|
||||
{ "revert-all-at-newline", &_rl_revert_all_at_newline, 0 },
|
||||
{ "show-all-if-ambiguous", &_rl_complete_show_all, 0 },
|
||||
{ "show-all-if-unmodified", &_rl_complete_show_unmodified, 0 },
|
||||
{ "skip-completed-text", &_rl_skip_completed_text, 0 },
|
||||
#if defined (VISIBLE_STATS)
|
||||
{ "visible-stats", &rl_visible_stats, 0 },
|
||||
#endif /* VISIBLE_STATS */
|
||||
{ (char *)NULL, (int *)NULL }
|
||||
{ (char *)NULL, (int *)NULL, 0 }
|
||||
};
|
||||
|
||||
static int
|
||||
|
@ -1458,23 +1504,29 @@ typedef int _rl_sv_func_t PARAMS((const char *));
|
|||
/* Forward declarations */
|
||||
static int sv_bell_style PARAMS((const char *));
|
||||
static int sv_combegin PARAMS((const char *));
|
||||
static int sv_dispprefix PARAMS((const char *));
|
||||
static int sv_compquery PARAMS((const char *));
|
||||
static int sv_compwidth PARAMS((const char *));
|
||||
static int sv_editmode PARAMS((const char *));
|
||||
static int sv_histsize PARAMS((const char *));
|
||||
static int sv_isrchterm PARAMS((const char *));
|
||||
static int sv_keymap PARAMS((const char *));
|
||||
|
||||
static struct {
|
||||
const char *name;
|
||||
static const struct {
|
||||
const char * const name;
|
||||
int flags;
|
||||
_rl_sv_func_t *set_func;
|
||||
} string_varlist[] = {
|
||||
{ "bell-style", V_STRING, sv_bell_style },
|
||||
{ "comment-begin", V_STRING, sv_combegin },
|
||||
{ "completion-display-width", V_INT, sv_compwidth },
|
||||
{ "completion-prefix-display-length", V_INT, sv_dispprefix },
|
||||
{ "completion-query-items", V_INT, sv_compquery },
|
||||
{ "editing-mode", V_STRING, sv_editmode },
|
||||
{ "history-size", V_INT, sv_histsize },
|
||||
{ "isearch-terminators", V_STRING, sv_isrchterm },
|
||||
{ "keymap", V_STRING, sv_keymap },
|
||||
{ (char *)NULL, 0 }
|
||||
{ (char *)NULL, 0, (_rl_sv_func_t *)0 }
|
||||
};
|
||||
|
||||
static int
|
||||
|
@ -1506,8 +1558,6 @@ rl_variable_value (name)
|
|||
const char *name;
|
||||
{
|
||||
register int i;
|
||||
int v;
|
||||
char *ret;
|
||||
|
||||
/* Check for simple variables first. */
|
||||
i = find_boolean_var (name);
|
||||
|
@ -1584,6 +1634,22 @@ sv_combegin (value)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
sv_dispprefix (value)
|
||||
const char *value;
|
||||
{
|
||||
int nval = 0;
|
||||
|
||||
if (value && *value)
|
||||
{
|
||||
nval = atoi (value);
|
||||
if (nval < 0)
|
||||
nval = 0;
|
||||
}
|
||||
_rl_completion_prefix_display_length = nval;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
sv_compquery (value)
|
||||
const char *value;
|
||||
|
@ -1600,6 +1666,35 @@ sv_compquery (value)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
sv_compwidth (value)
|
||||
const char *value;
|
||||
{
|
||||
int nval = -1;
|
||||
|
||||
if (value && *value)
|
||||
nval = atoi (value);
|
||||
|
||||
_rl_completion_columns = nval;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
sv_histsize (value)
|
||||
const char *value;
|
||||
{
|
||||
int nval = 500;
|
||||
|
||||
if (value && *value)
|
||||
{
|
||||
nval = atoi (value);
|
||||
if (nval < 0)
|
||||
return 1;
|
||||
}
|
||||
stifle_history (nval);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
sv_keymap (value)
|
||||
const char *value;
|
||||
|
@ -1664,7 +1759,7 @@ sv_isrchterm (value)
|
|||
rl_translate_keyseq (v + beg, _rl_isearch_terminators, &end);
|
||||
_rl_isearch_terminators[end] = '\0';
|
||||
|
||||
free (v);
|
||||
xfree (v);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1672,11 +1767,11 @@ sv_isrchterm (value)
|
|||
For example, `Space' returns ' '. */
|
||||
|
||||
typedef struct {
|
||||
const char *name;
|
||||
const char * const name;
|
||||
int value;
|
||||
} assoc_list;
|
||||
|
||||
static assoc_list name_key_alist[] = {
|
||||
static const assoc_list name_key_alist[] = {
|
||||
{ "DEL", 0x7f },
|
||||
{ "ESC", '\033' },
|
||||
{ "Escape", '\033' },
|
||||
|
@ -1705,8 +1800,8 @@ glean_key_from_name (name)
|
|||
}
|
||||
|
||||
/* Auxiliary functions to manage keymaps. */
|
||||
static struct {
|
||||
const char *name;
|
||||
static const struct {
|
||||
const char * const name;
|
||||
Keymap map;
|
||||
} keymap_names[] = {
|
||||
{ "emacs", emacs_standard_keymap },
|
||||
|
@ -1809,7 +1904,7 @@ rl_list_funmap_names ()
|
|||
for (i = 0; funmap_names[i]; i++)
|
||||
fprintf (rl_outstream, "%s\n", funmap_names[i]);
|
||||
|
||||
free (funmap_names);
|
||||
xfree (funmap_names);
|
||||
}
|
||||
|
||||
static char *
|
||||
|
@ -1948,12 +2043,16 @@ rl_invoking_keyseqs_in_map (function, map)
|
|||
char *keyname = (char *)xmalloc (6 + strlen (seqs[i]));
|
||||
|
||||
if (key == ESC)
|
||||
#if 0
|
||||
sprintf (keyname, "\\e");
|
||||
#else
|
||||
/* XXX - experimental */
|
||||
{
|
||||
/* If ESC is the meta prefix and we're converting chars
|
||||
with the eighth bit set to ESC-prefixed sequences, then
|
||||
we can use \M-. Otherwise we need to use the sequence
|
||||
for ESC. */
|
||||
if (_rl_convert_meta_chars_to_ascii && map[ESC].type == ISKMAP)
|
||||
sprintf (keyname, "\\M-");
|
||||
#endif
|
||||
else
|
||||
sprintf (keyname, "\\e");
|
||||
}
|
||||
else if (CTRL_CHAR (key))
|
||||
sprintf (keyname, "\\C-%c", _rl_to_lower (UNCTRL (key)));
|
||||
else if (key == RUBOUT)
|
||||
|
@ -1971,7 +2070,7 @@ rl_invoking_keyseqs_in_map (function, map)
|
|||
}
|
||||
|
||||
strcat (keyname, seqs[i]);
|
||||
free (seqs[i]);
|
||||
xfree (seqs[i]);
|
||||
|
||||
if (result_index + 2 > result_size)
|
||||
{
|
||||
|
@ -1983,7 +2082,7 @@ rl_invoking_keyseqs_in_map (function, map)
|
|||
result[result_index] = (char *)NULL;
|
||||
}
|
||||
|
||||
free (seqs);
|
||||
xfree (seqs);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -2035,10 +2134,10 @@ rl_function_dumper (print_readably)
|
|||
{
|
||||
fprintf (rl_outstream, "\"%s\": %s\n",
|
||||
invokers[j], name);
|
||||
free (invokers[j]);
|
||||
xfree (invokers[j]);
|
||||
}
|
||||
|
||||
free (invokers);
|
||||
xfree (invokers);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -2062,9 +2161,9 @@ rl_function_dumper (print_readably)
|
|||
fprintf (rl_outstream, "...\n");
|
||||
|
||||
for (j = 0; invokers[j]; j++)
|
||||
free (invokers[j]);
|
||||
xfree (invokers[j]);
|
||||
|
||||
free (invokers);
|
||||
xfree (invokers);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2111,8 +2210,8 @@ _rl_macro_dumper_internal (print_readably, map, prefix)
|
|||
fprintf (rl_outstream, "%s%s outputs %s\n", prefix ? prefix : "",
|
||||
keyname,
|
||||
out ? out : "");
|
||||
free (keyname);
|
||||
free (out);
|
||||
xfree (keyname);
|
||||
xfree (out);
|
||||
break;
|
||||
case ISFUNC:
|
||||
break;
|
||||
|
@ -2135,13 +2234,13 @@ _rl_macro_dumper_internal (print_readably, map, prefix)
|
|||
out = (char *)xmalloc (strlen (keyname) + prefix_len + 1);
|
||||
strcpy (out, prefix);
|
||||
strcpy (out + prefix_len, keyname);
|
||||
free (keyname);
|
||||
xfree (keyname);
|
||||
keyname = out;
|
||||
}
|
||||
}
|
||||
|
||||
_rl_macro_dumper_internal (print_readably, FUNCTION_TO_KEYMAP (map, key), keyname);
|
||||
free (keyname);
|
||||
xfree (keyname);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -2171,7 +2270,6 @@ _rl_get_string_variable_value (name)
|
|||
{
|
||||
static char numbuf[32];
|
||||
char *ret;
|
||||
int n;
|
||||
|
||||
if (_rl_stricmp (name, "bell-style") == 0)
|
||||
{
|
||||
|
@ -2188,6 +2286,16 @@ _rl_get_string_variable_value (name)
|
|||
}
|
||||
else if (_rl_stricmp (name, "comment-begin") == 0)
|
||||
return (_rl_comment_begin ? _rl_comment_begin : RL_COMMENT_BEGIN_DEFAULT);
|
||||
else if (_rl_stricmp (name, "completion-display-width") == 0)
|
||||
{
|
||||
sprintf (numbuf, "%d", _rl_completion_columns);
|
||||
return (numbuf);
|
||||
}
|
||||
else if (_rl_stricmp (name, "completion-prefix-display-length") == 0)
|
||||
{
|
||||
sprintf (numbuf, "%d", _rl_completion_prefix_display_length);
|
||||
return (numbuf);
|
||||
}
|
||||
else if (_rl_stricmp (name, "completion-query-items") == 0)
|
||||
{
|
||||
sprintf (numbuf, "%d", rl_completion_query_items);
|
||||
|
@ -2195,6 +2303,11 @@ _rl_get_string_variable_value (name)
|
|||
}
|
||||
else if (_rl_stricmp (name, "editing-mode") == 0)
|
||||
return (rl_get_keymap_name_from_edit_mode ());
|
||||
else if (_rl_stricmp (name, "history-size") == 0)
|
||||
{
|
||||
sprintf (numbuf, "%d", history_is_stifled() ? history_max_entries : 0);
|
||||
return (numbuf);
|
||||
}
|
||||
else if (_rl_stricmp (name, "isearch-terminators") == 0)
|
||||
{
|
||||
if (_rl_isearch_terminators == 0)
|
||||
|
@ -2203,7 +2316,7 @@ _rl_get_string_variable_value (name)
|
|||
if (ret)
|
||||
{
|
||||
strncpy (numbuf, ret, sizeof (numbuf) - 1);
|
||||
free (ret);
|
||||
xfree (ret);
|
||||
numbuf[sizeof(numbuf) - 1] = '\0';
|
||||
}
|
||||
else
|
||||
|
@ -2267,8 +2380,8 @@ rl_dump_variables (count, key)
|
|||
/* Return non-zero if any members of ARRAY are a substring in STRING. */
|
||||
static int
|
||||
substring_member_of_array (string, array)
|
||||
char *string;
|
||||
const char **array;
|
||||
const char *string;
|
||||
const char * const *array;
|
||||
{
|
||||
while (*array)
|
||||
{
|
||||
|
|
|
@ -1,24 +1,24 @@
|
|||
/* callback.c -- functions to use readline as an X `callback' mechanism. */
|
||||
|
||||
/* Copyright (C) 1987-2005 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define READLINE_LIBRARY
|
||||
|
||||
#if defined (HAVE_CONFIG_H)
|
||||
|
@ -87,6 +87,7 @@ _rl_callback_newline ()
|
|||
}
|
||||
|
||||
readline_internal_setup ();
|
||||
RL_CHECK_SIGNALS ();
|
||||
}
|
||||
|
||||
/* Install a readline handler, set up the terminal, and issue the prompt. */
|
||||
|
@ -111,20 +112,23 @@ rl_callback_read_char ()
|
|||
|
||||
if (rl_linefunc == NULL)
|
||||
{
|
||||
fprintf (stderr, "readline: readline_callback_read_char() called with no handler!\r\n");
|
||||
_rl_errmsg ("readline_callback_read_char() called with no handler!");
|
||||
abort ();
|
||||
}
|
||||
|
||||
memcpy ((void *)olevel, (void *)readline_top_level, sizeof (procenv_t));
|
||||
jcode = setjmp (readline_top_level);
|
||||
memcpy ((void *)olevel, (void *)_rl_top_level, sizeof (procenv_t));
|
||||
jcode = setjmp (_rl_top_level);
|
||||
if (jcode)
|
||||
{
|
||||
(*rl_redisplay_function) ();
|
||||
_rl_want_redisplay = 0;
|
||||
memcpy ((void *)readline_top_level, (void *)olevel, sizeof (procenv_t));
|
||||
memcpy ((void *)_rl_top_level, (void *)olevel, sizeof (procenv_t));
|
||||
return;
|
||||
}
|
||||
|
||||
do
|
||||
{
|
||||
RL_CHECK_SIGNALS ();
|
||||
if (RL_ISSTATE (RL_STATE_ISEARCH))
|
||||
{
|
||||
eof = _rl_isearch_callback (_rl_iscxt);
|
||||
|
@ -138,6 +142,18 @@ rl_callback_read_char ()
|
|||
eof = _rl_nsearch_callback (_rl_nscxt);
|
||||
return;
|
||||
}
|
||||
#if defined (VI_MODE)
|
||||
else if (RL_ISSTATE (RL_STATE_VIMOTION))
|
||||
{
|
||||
eof = _rl_vi_domove_callback (_rl_vimvcxt);
|
||||
/* Should handle everything, including cleanup, numeric arguments,
|
||||
and turning off RL_STATE_VIMOTION */
|
||||
if (RL_ISSTATE (RL_STATE_NUMERICARG) == 0)
|
||||
_rl_internal_char_cleanup ();
|
||||
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
else if (RL_ISSTATE (RL_STATE_NUMERICARG))
|
||||
{
|
||||
eof = _rl_arg_callback (_rl_argcxt);
|
||||
|
@ -162,14 +178,15 @@ rl_callback_read_char ()
|
|||
}
|
||||
else if (_rl_callback_func)
|
||||
{
|
||||
/* This allows functions that simply need to read an additional character
|
||||
(like quoted-insert) to register a function to be called when input is
|
||||
available. _rl_callback_data is simply a pointer to a struct that has
|
||||
the argument count originally passed to the registering function and
|
||||
space for any additional parameters. */
|
||||
/* This allows functions that simply need to read an additional
|
||||
character (like quoted-insert) to register a function to be
|
||||
called when input is available. _rl_callback_data is simply a
|
||||
pointer to a struct that has the argument count originally
|
||||
passed to the registering function and space for any additional
|
||||
parameters. */
|
||||
eof = (*_rl_callback_func) (_rl_callback_data);
|
||||
/* If the function `deregisters' itself, make sure the data is cleaned
|
||||
up. */
|
||||
/* If the function `deregisters' itself, make sure the data is
|
||||
cleaned up. */
|
||||
if (_rl_callback_func == 0)
|
||||
{
|
||||
if (_rl_callback_data)
|
||||
|
@ -183,15 +200,13 @@ rl_callback_read_char ()
|
|||
else
|
||||
eof = readline_internal_char ();
|
||||
|
||||
RL_CHECK_SIGNALS ();
|
||||
if (rl_done == 0 && _rl_want_redisplay)
|
||||
{
|
||||
(*rl_redisplay_function) ();
|
||||
_rl_want_redisplay = 0;
|
||||
}
|
||||
|
||||
/* We loop in case some function has pushed input back with rl_execute_next. */
|
||||
for (;;)
|
||||
{
|
||||
if (rl_done)
|
||||
{
|
||||
line = readline_internal_teardown (eof);
|
||||
|
@ -213,11 +228,8 @@ rl_callback_read_char ()
|
|||
if (in_handler == 0 && rl_linefunc)
|
||||
_rl_callback_newline ();
|
||||
}
|
||||
if (rl_pending_input || _rl_pushed_input_available () || RL_ISSTATE (RL_STATE_MACROINPUT))
|
||||
eof = readline_internal_char ();
|
||||
else
|
||||
break;
|
||||
}
|
||||
while (rl_pending_input || _rl_pushed_input_available () || RL_ISSTATE (RL_STATE_MACROINPUT));
|
||||
}
|
||||
|
||||
/* Remove the handler, and make sure the terminal is in its normal state. */
|
||||
|
@ -226,6 +238,7 @@ rl_callback_handler_remove ()
|
|||
{
|
||||
rl_linefunc = NULL;
|
||||
RL_UNSETSTATE (RL_STATE_CALLBACK);
|
||||
RL_CHECK_SIGNALS ();
|
||||
if (in_handler)
|
||||
{
|
||||
in_handler = 0;
|
||||
|
@ -254,8 +267,7 @@ _rl_callback_data_alloc (count)
|
|||
void _rl_callback_data_dispose (arg)
|
||||
_rl_callback_generic_arg *arg;
|
||||
{
|
||||
if (arg)
|
||||
free (arg);
|
||||
xfree (arg);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,24 +1,23 @@
|
|||
/* chardefs.h -- Character definitions for readline. */
|
||||
|
||||
/* Copyright (C) 1994 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1994-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _CHARDEFS_H_
|
||||
#define _CHARDEFS_H_
|
||||
|
|
|
@ -1,24 +1,24 @@
|
|||
/* compat.c -- backwards compatibility functions. */
|
||||
|
||||
/* Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2000-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define READLINE_LIBRARY
|
||||
|
||||
#if defined (HAVE_CONFIG_H)
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -4,6 +4,8 @@
|
|||
characters, even if the OS supports them. */
|
||||
#undef NO_MULTIBYTE_SUPPORT
|
||||
|
||||
#undef _FILE_OFFSET_BITS
|
||||
|
||||
/* Define if on MINIX. */
|
||||
#undef _MINIX
|
||||
|
||||
|
@ -13,12 +15,16 @@
|
|||
#undef VOID_SIGHANDLER
|
||||
|
||||
/* Characteristics of the compiler. */
|
||||
#undef const
|
||||
#undef sig_atomic_t
|
||||
|
||||
#undef size_t
|
||||
|
||||
#undef ssize_t
|
||||
|
||||
#undef const
|
||||
|
||||
#undef volatile
|
||||
|
||||
#undef PROTOTYPES
|
||||
|
||||
#undef __CHAR_UNSIGNED__
|
||||
|
@ -41,6 +47,15 @@
|
|||
/* Define if you have the isascii function. */
|
||||
#undef HAVE_ISASCII
|
||||
|
||||
/* Define if you have the iswctype function. */
|
||||
#undef HAVE_ISWCTYPE
|
||||
|
||||
/* Define if you have the iswlower function. */
|
||||
#undef HAVE_ISWLOWER
|
||||
|
||||
/* Define if you have the iswupper function. */
|
||||
#undef HAVE_ISWUPPER
|
||||
|
||||
/* Define if you have the isxdigit function. */
|
||||
#undef HAVE_ISXDIGIT
|
||||
|
||||
|
@ -88,11 +103,23 @@
|
|||
/* Define if you have the tcgetattr function. */
|
||||
#undef HAVE_TCGETATTR
|
||||
|
||||
/* Define if you have the towlower function. */
|
||||
#undef HAVE_TOWLOWER
|
||||
|
||||
/* Define if you have the towupper function. */
|
||||
#undef HAVE_TOWUPPER
|
||||
|
||||
/* Define if you have the vsnprintf function. */
|
||||
#undef HAVE_VSNPRINTF
|
||||
|
||||
/* Define if you have the wctomb function. */
|
||||
#undef HAVE_WCTOMB
|
||||
/* Define if you have the wcrtomb function. */
|
||||
#undef HAVE_WCRTOMB
|
||||
|
||||
/* Define if you have the wcscoll function. */
|
||||
#undef HAVE_WCSCOLL
|
||||
|
||||
/* Define if you have the wctype function. */
|
||||
#undef HAVE_WCTYPE
|
||||
|
||||
/* Define if you have the wcwidth function. */
|
||||
#undef HAVE_WCWIDTH
|
||||
|
@ -174,11 +201,20 @@
|
|||
/* Define if you have the <wchar.h> header file. */
|
||||
#undef HAVE_WCHAR_H
|
||||
|
||||
/* Define if you have the <varargs.h> header file. */
|
||||
/* Define if you have the <wctype.h> header file. */
|
||||
#undef HAVE_WCTYPE_H
|
||||
|
||||
#undef HAVE_MBSTATE_T
|
||||
|
||||
/* Define if you have wchar_t in <wctype.h>. */
|
||||
#undef HAVE_WCHAR_T
|
||||
|
||||
/* Define if you have wctype_t in <wctype.h>. */
|
||||
#undef HAVE_WCTYPE_T
|
||||
|
||||
/* Define if you have wint_t in <wctype.h>. */
|
||||
#undef HAVE_WINT_T
|
||||
|
||||
/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
|
||||
#undef HAVE_LANGINFO_CODESET
|
||||
|
||||
|
@ -223,10 +259,6 @@
|
|||
# define TERMIOS_MISSING
|
||||
#endif
|
||||
|
||||
#if defined (STRCOLL_BROKEN)
|
||||
# undef HAVE_STRCOLL
|
||||
#endif
|
||||
|
||||
#if defined (__STDC__) && defined (HAVE_STDARG_H)
|
||||
# define PREFER_STDARG
|
||||
# define USE_VARARGS
|
||||
|
|
614
readline/configure
vendored
614
readline/configure
vendored
|
@ -1,7 +1,7 @@
|
|||
#! /bin/sh
|
||||
# From configure.in for Readline 5.1, version 2.59.
|
||||
# From configure.in for Readline 6.2, version 2.67.
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.64 for readline 5.1-release.
|
||||
# Generated by GNU Autoconf 2.64 for readline 6.2.
|
||||
#
|
||||
# Report bugs to <bug-readline@gnu.org>.
|
||||
#
|
||||
|
@ -550,8 +550,8 @@ MAKEFLAGS=
|
|||
# Identity of this package.
|
||||
PACKAGE_NAME='readline'
|
||||
PACKAGE_TARNAME='readline'
|
||||
PACKAGE_VERSION='5.1-release'
|
||||
PACKAGE_STRING='readline 5.1-release'
|
||||
PACKAGE_VERSION='6.2'
|
||||
PACKAGE_STRING='readline 6.2'
|
||||
PACKAGE_BUGREPORT='bug-readline@gnu.org'
|
||||
PACKAGE_URL=''
|
||||
|
||||
|
@ -593,7 +593,6 @@ ac_includes_default="\
|
|||
#endif"
|
||||
|
||||
ac_subst_vars='LTLIBOBJS
|
||||
LIBOBJS
|
||||
TERMCAP_LIB
|
||||
LIBVERSION
|
||||
ARFLAGS
|
||||
|
@ -623,14 +622,13 @@ SHOBJ_LDFLAGS
|
|||
SHOBJ_LD
|
||||
SHOBJ_CFLAGS
|
||||
SHOBJ_CC
|
||||
WCWIDTH_OBJ
|
||||
LIBOBJS
|
||||
MAKE_SHELL
|
||||
RANLIB
|
||||
AR
|
||||
INSTALL_DATA
|
||||
INSTALL_SCRIPT
|
||||
INSTALL_PROGRAM
|
||||
CC_FOR_BUILD
|
||||
EGREP
|
||||
GREP
|
||||
CPP
|
||||
|
@ -696,6 +694,7 @@ with_curses
|
|||
with_purify
|
||||
enable_multibyte
|
||||
enable_static
|
||||
enable_largefile
|
||||
'
|
||||
ac_precious_vars='build_alias
|
||||
host_alias
|
||||
|
@ -1247,7 +1246,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 readline 5.1-release to adapt to many kinds of systems.
|
||||
\`configure' configures readline 6.2 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
|
@ -1312,7 +1311,7 @@ fi
|
|||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of readline 5.1-release:";;
|
||||
short | recursive ) echo "Configuration of readline 6.2:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
|
@ -1322,6 +1321,7 @@ Optional Features:
|
|||
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
|
||||
--enable-multibyte enable multibyte characters if OS supports them
|
||||
--enable-static build static libraries [default=YES]
|
||||
--disable-largefile omit support for large files
|
||||
|
||||
Optional Packages:
|
||||
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
||||
|
@ -1406,7 +1406,7 @@ fi
|
|||
test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
readline configure 5.1-release
|
||||
readline configure 6.2
|
||||
generated by GNU Autoconf 2.64
|
||||
|
||||
Copyright (C) 2009 Free Software Foundation, Inc.
|
||||
|
@ -1831,7 +1831,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 readline $as_me 5.1-release, which was
|
||||
It was created by readline $as_me 6.2, which was
|
||||
generated by GNU Autoconf 2.64. Invocation command line was
|
||||
|
||||
$ $0 $@
|
||||
|
@ -2211,7 +2211,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
|
|||
ac_config_headers="$ac_config_headers config.h"
|
||||
|
||||
|
||||
LIBVERSION=5.1
|
||||
LIBVERSION=6.2
|
||||
|
||||
# Make sure we can run config.sub.
|
||||
$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
|
||||
|
@ -3622,39 +3622,6 @@ $as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
|
|||
|
||||
|
||||
|
||||
|
||||
if test "x$cross_compiling" = "xyes"; then
|
||||
case "${host}" in
|
||||
*-cygwin*)
|
||||
cross_cache=${srcdir}/cross-build/cygwin.cache
|
||||
LOCAL_CFLAGS="$LOCAL_CFLAGS -I${srcdir}/../libtermcap"
|
||||
;;
|
||||
*-mingw32*)
|
||||
cross_cache=${srcdir}/cross-build/mingw.cache
|
||||
;;
|
||||
*) echo "configure: cross-compiling for a non-cygwin target is not supported" >&2
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "x$cross_cache" != "x"; then
|
||||
if test -r "${cross_cache}"; then
|
||||
echo "loading cross-build cache file ${cross_cache}"
|
||||
. ${cross_cache}
|
||||
fi
|
||||
unset cross_cache
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -z "$CC_FOR_BUILD"; then
|
||||
if test "x$cross_compiling" = "xno"; then
|
||||
CC_FOR_BUILD='$(CC)'
|
||||
else
|
||||
CC_FOR_BUILD=gcc
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# If we're using gcc and the user hasn't specified CFLAGS, add -O to CFLAGS.
|
||||
test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O"
|
||||
|
||||
|
@ -4056,6 +4023,40 @@ if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then
|
|||
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5
|
||||
$as_echo_n "checking for working volatile... " >&6; }
|
||||
if test "${ac_cv_c_volatile+set}" = set; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
volatile int x;
|
||||
int * volatile y = (int *) 0;
|
||||
return !x && !y;
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
ac_cv_c_volatile=yes
|
||||
else
|
||||
ac_cv_c_volatile=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5
|
||||
$as_echo "$ac_cv_c_volatile" >&6; }
|
||||
if test $ac_cv_c_volatile = no; then
|
||||
|
||||
$as_echo "#define volatile /**/" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5
|
||||
$as_echo_n "checking return type of signal handlers... " >&6; }
|
||||
|
@ -4571,6 +4572,205 @@ fi
|
|||
done
|
||||
|
||||
|
||||
# Check whether --enable-largefile was given.
|
||||
if test "${enable_largefile+set}" = set; then :
|
||||
enableval=$enable_largefile;
|
||||
fi
|
||||
|
||||
if test "$enable_largefile" != no; then
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
|
||||
$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
|
||||
if test "${ac_cv_sys_largefile_CC+set}" = set; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
ac_cv_sys_largefile_CC=no
|
||||
if test "$GCC" != yes; then
|
||||
ac_save_CC=$CC
|
||||
while :; do
|
||||
# IRIX 6.2 and later do not support large files by default,
|
||||
# so use the C compiler's -n32 option if that helps.
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#include <sys/types.h>
|
||||
/* Check that off_t can represent 2**63 - 1 correctly.
|
||||
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||
since some C++ compilers masquerading as C compilers
|
||||
incorrectly reject 9223372036854775807. */
|
||||
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||
&& LARGE_OFF_T % 2147483647 == 1)
|
||||
? 1 : -1];
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
break
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext
|
||||
CC="$CC -n32"
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
ac_cv_sys_largefile_CC=' -n32'; break
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext
|
||||
break
|
||||
done
|
||||
CC=$ac_save_CC
|
||||
rm -f conftest.$ac_ext
|
||||
fi
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
|
||||
$as_echo "$ac_cv_sys_largefile_CC" >&6; }
|
||||
if test "$ac_cv_sys_largefile_CC" != no; then
|
||||
CC=$CC$ac_cv_sys_largefile_CC
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
|
||||
$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
|
||||
if test "${ac_cv_sys_file_offset_bits+set}" = set; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
while :; do
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#include <sys/types.h>
|
||||
/* Check that off_t can represent 2**63 - 1 correctly.
|
||||
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||
since some C++ compilers masquerading as C compilers
|
||||
incorrectly reject 9223372036854775807. */
|
||||
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||
&& LARGE_OFF_T % 2147483647 == 1)
|
||||
? 1 : -1];
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
ac_cv_sys_file_offset_bits=no; break
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#define _FILE_OFFSET_BITS 64
|
||||
#include <sys/types.h>
|
||||
/* Check that off_t can represent 2**63 - 1 correctly.
|
||||
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||
since some C++ compilers masquerading as C compilers
|
||||
incorrectly reject 9223372036854775807. */
|
||||
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||
&& LARGE_OFF_T % 2147483647 == 1)
|
||||
? 1 : -1];
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
ac_cv_sys_file_offset_bits=64; break
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
ac_cv_sys_file_offset_bits=unknown
|
||||
break
|
||||
done
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
|
||||
$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
|
||||
case $ac_cv_sys_file_offset_bits in #(
|
||||
no | unknown) ;;
|
||||
*)
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
|
||||
_ACEOF
|
||||
;;
|
||||
esac
|
||||
rm -rf conftest*
|
||||
if test $ac_cv_sys_file_offset_bits = unknown; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
|
||||
$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
|
||||
if test "${ac_cv_sys_large_files+set}" = set; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
while :; do
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#include <sys/types.h>
|
||||
/* Check that off_t can represent 2**63 - 1 correctly.
|
||||
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||
since some C++ compilers masquerading as C compilers
|
||||
incorrectly reject 9223372036854775807. */
|
||||
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||
&& LARGE_OFF_T % 2147483647 == 1)
|
||||
? 1 : -1];
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
ac_cv_sys_large_files=no; break
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#define _LARGE_FILES 1
|
||||
#include <sys/types.h>
|
||||
/* Check that off_t can represent 2**63 - 1 correctly.
|
||||
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||
since some C++ compilers masquerading as C compilers
|
||||
incorrectly reject 9223372036854775807. */
|
||||
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||
&& LARGE_OFF_T % 2147483647 == 1)
|
||||
? 1 : -1];
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
ac_cv_sys_large_files=1; break
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
ac_cv_sys_large_files=unknown
|
||||
break
|
||||
done
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
|
||||
$as_echo "$ac_cv_sys_large_files" >&6; }
|
||||
case $ac_cv_sys_large_files in #(
|
||||
no | unknown) ;;
|
||||
*)
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define _LARGE_FILES $ac_cv_sys_large_files
|
||||
_ACEOF
|
||||
;;
|
||||
esac
|
||||
rm -rf conftest*
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for type of signal functions" >&5
|
||||
$as_echo_n "checking for type of signal functions... " >&6; }
|
||||
|
@ -5078,6 +5278,49 @@ $as_echo "#define GWINSZ_IN_SYS_IOCTL 1" >>confdefs.h
|
|||
fi
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sig_atomic_t in signal.h" >&5
|
||||
$as_echo_n "checking for sig_atomic_t in signal.h... " >&6; }
|
||||
if test "${ac_cv_have_sig_atomic_t+set}" = set; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
#include <signal.h>
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
sig_atomic_t x;
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_link "$LINENO"; then :
|
||||
ac_cv_have_sig_atomic_t=yes
|
||||
else
|
||||
ac_cv_have_sig_atomic_t=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_sig_atomic_t" >&5
|
||||
$as_echo "$ac_cv_have_sig_atomic_t" >&6; }
|
||||
if test "$ac_cv_have_sig_atomic_t" = "no"
|
||||
then
|
||||
ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "$ac_includes_default"
|
||||
if test "x$ac_cv_type_sig_atomic_t" = x""yes; then :
|
||||
|
||||
else
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define sig_atomic_t int
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether signal handlers are of type void" >&5
|
||||
$as_echo_n "checking whether signal handlers are of type void... " >&6; }
|
||||
if test "${bash_cv_void_sighandler+set}" = set; then :
|
||||
|
@ -5116,6 +5359,7 @@ $as_echo "#define VOID_SIGHANDLER 1" >>confdefs.h
|
|||
|
||||
fi
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIOCSTAT in sys/ioctl.h" >&5
|
||||
$as_echo_n "checking for TIOCSTAT in sys/ioctl.h... " >&6; }
|
||||
if test "${bash_cv_tiocstat_in_ioctl+set}" = set; then :
|
||||
|
@ -5638,33 +5882,67 @@ fi
|
|||
done
|
||||
|
||||
|
||||
ac_fn_c_check_func "$LINENO" "mbsrtowcs" "ac_cv_func_mbsrtowcs"
|
||||
if test "x$ac_cv_func_mbsrtowcs" = x""yes; then :
|
||||
$as_echo "#define HAVE_MBSRTOWCS 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
ac_fn_c_check_func "$LINENO" "mbrtowc" "ac_cv_func_mbrtowc"
|
||||
if test "x$ac_cv_func_mbrtowc" = x""yes; then :
|
||||
$as_echo "#define HAVE_MBRTOWC 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
ac_fn_c_check_func "$LINENO" "mbrlen" "ac_cv_func_mbrlen"
|
||||
if test "x$ac_cv_func_mbrlen" = x""yes; then :
|
||||
$as_echo "#define HAVE_MBRLEN 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
ac_fn_c_check_func "$LINENO" "wctomb" "ac_cv_func_wctomb"
|
||||
if test "x$ac_cv_func_wctomb" = x""yes; then :
|
||||
$as_echo "#define HAVE_WCTOMB 1" >>confdefs.h
|
||||
ac_fn_c_check_func "$LINENO" "mbscasecmp" "ac_cv_func_mbscasecmp"
|
||||
if test "x$ac_cv_func_mbscasecmp" = x""yes; then :
|
||||
$as_echo "#define HAVE_MBSCMP 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
ac_fn_c_check_func "$LINENO" "wcwidth" "ac_cv_func_wcwidth"
|
||||
if test "x$ac_cv_func_wcwidth" = x""yes; then :
|
||||
$as_echo "#define HAVE_WCWIDTH 1" >>confdefs.h
|
||||
ac_fn_c_check_func "$LINENO" "mbscmp" "ac_cv_func_mbscmp"
|
||||
if test "x$ac_cv_func_mbscmp" = x""yes; then :
|
||||
$as_echo "#define HAVE_MBSCMP 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
ac_fn_c_check_func "$LINENO" "mbsnrtowcs" "ac_cv_func_mbsnrtowcs"
|
||||
if test "x$ac_cv_func_mbsnrtowcs" = x""yes; then :
|
||||
$as_echo "#define HAVE_MBSNRTOWCS 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
ac_fn_c_check_func "$LINENO" "mbsrtowcs" "ac_cv_func_mbsrtowcs"
|
||||
if test "x$ac_cv_func_mbsrtowcs" = x""yes; then :
|
||||
$as_echo "#define HAVE_MBSRTOWCS 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
for ac_func in mbschr
|
||||
do :
|
||||
ac_fn_c_check_func "$LINENO" "mbschr" "ac_cv_func_mbschr"
|
||||
if test "x$ac_cv_func_mbschr" = x""yes; then :
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_MBSCHR 1
|
||||
_ACEOF
|
||||
|
||||
else
|
||||
case " $LIBOBJS " in
|
||||
*" $ac_func.$ac_objext "* ) ;;
|
||||
*) LIBOBJS="$LIBOBJS $ac_func.$ac_objext"
|
||||
;;
|
||||
esac
|
||||
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
|
||||
ac_fn_c_check_func "$LINENO" "wcrtomb" "ac_cv_func_wcrtomb"
|
||||
if test "x$ac_cv_func_wcrtomb" = x""yes; then :
|
||||
$as_echo "#define HAVE_WCRTOMB 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
ac_fn_c_check_func "$LINENO" "wcscoll" "ac_cv_func_wcscoll"
|
||||
if test "x$ac_cv_func_wcscoll" = x""yes; then :
|
||||
$as_echo "#define HAVE_WCSCOLL 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
|
@ -5674,49 +5952,95 @@ if test "x$ac_cv_func_wcsdup" = x""yes; then :
|
|||
|
||||
fi
|
||||
|
||||
ac_fn_c_check_func "$LINENO" "wcwidth" "ac_cv_func_wcwidth"
|
||||
if test "x$ac_cv_func_wcwidth" = x""yes; then :
|
||||
$as_echo "#define HAVE_WCWIDTH 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
ac_fn_c_check_func "$LINENO" "wctype" "ac_cv_func_wctype"
|
||||
if test "x$ac_cv_func_wctype" = x""yes; then :
|
||||
$as_echo "#define HAVE_WCTYPE 1" >>confdefs.h
|
||||
|
||||
if test "$ac_cv_func_wcwidth" = no && test "$ac_cv_header_wchar_h" = yes; then
|
||||
WCWIDTH_OBJ=wcwidth.o
|
||||
else
|
||||
WCWIDTH_OBJ=
|
||||
fi
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for mbstate_t" >&5
|
||||
$as_echo_n "checking for mbstate_t... " >&6; }
|
||||
if test "${bash_cv_have_mbstate_t+set}" = set; then :
|
||||
for ac_func in wcswidth
|
||||
do :
|
||||
ac_fn_c_check_func "$LINENO" "wcswidth" "ac_cv_func_wcswidth"
|
||||
if test "x$ac_cv_func_wcswidth" = x""yes; then :
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_WCSWIDTH 1
|
||||
_ACEOF
|
||||
|
||||
else
|
||||
case " $LIBOBJS " in
|
||||
*" $ac_func.$ac_objext "* ) ;;
|
||||
*) LIBOBJS="$LIBOBJS $ac_func.$ac_objext"
|
||||
;;
|
||||
esac
|
||||
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc and mbstate_t are properly declared" >&5
|
||||
$as_echo_n "checking whether mbrtowc and mbstate_t are properly declared... " >&6; }
|
||||
if test "${ac_cv_func_mbrtowc+set}" = set; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
#include <wchar.h>
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
mbstate_t ps;
|
||||
mbstate_t *psp;
|
||||
psp = (mbstate_t *)0;
|
||||
|
||||
wchar_t wc;
|
||||
char const s[] = "";
|
||||
size_t n = 1;
|
||||
mbstate_t state;
|
||||
return ! (sizeof state && (mbrtowc) (&wc, s, n, &state));
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
bash_cv_have_mbstate_t=yes
|
||||
if ac_fn_c_try_link "$LINENO"; then :
|
||||
ac_cv_func_mbrtowc=yes
|
||||
else
|
||||
bash_cv_have_mbstate_t=no
|
||||
ac_cv_func_mbrtowc=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_mbstate_t" >&5
|
||||
$as_echo "$bash_cv_have_mbstate_t" >&6; }
|
||||
if test $bash_cv_have_mbstate_t = yes; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mbrtowc" >&5
|
||||
$as_echo "$ac_cv_func_mbrtowc" >&6; }
|
||||
if test $ac_cv_func_mbrtowc = yes; then
|
||||
|
||||
$as_echo "#define HAVE_MBRTOWC 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
if test $ac_cv_func_mbrtowc = yes; then
|
||||
$as_echo "#define HAVE_MBSTATE_T 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
for ac_func in iswlower iswupper towlower towupper iswctype
|
||||
do :
|
||||
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
|
||||
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
|
||||
eval as_val=\$$as_ac_var
|
||||
if test "x$as_val" = x""yes; then :
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
|
||||
$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
|
||||
if test "${bash_cv_langinfo_codeset+set}" = set; then :
|
||||
|
@ -5748,6 +6072,126 @@ if test $bash_cv_langinfo_codeset = yes; then
|
|||
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t in wchar.h" >&5
|
||||
$as_echo_n "checking for wchar_t in wchar.h... " >&6; }
|
||||
if test "${bash_cv_type_wchar_t+set}" = set; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#include <wchar.h>
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
wchar_t foo;
|
||||
foo = 0;
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
bash_cv_type_wchar_t=yes
|
||||
else
|
||||
bash_cv_type_wchar_t=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wchar_t" >&5
|
||||
$as_echo "$bash_cv_type_wchar_t" >&6; }
|
||||
if test $bash_cv_type_wchar_t = yes; then
|
||||
|
||||
$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wctype_t in wctype.h" >&5
|
||||
$as_echo_n "checking for wctype_t in wctype.h... " >&6; }
|
||||
if test "${bash_cv_type_wctype_t+set}" = set; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#include <wctype.h>
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
wctype_t foo;
|
||||
foo = 0;
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
bash_cv_type_wctype_t=yes
|
||||
else
|
||||
bash_cv_type_wctype_t=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wctype_t" >&5
|
||||
$as_echo "$bash_cv_type_wctype_t" >&6; }
|
||||
if test $bash_cv_type_wctype_t = yes; then
|
||||
|
||||
$as_echo "#define HAVE_WCTYPE_T 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t in wctype.h" >&5
|
||||
$as_echo_n "checking for wint_t in wctype.h... " >&6; }
|
||||
if test "${bash_cv_type_wint_t+set}" = set; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#include <wctype.h>
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
wint_t foo;
|
||||
foo = 0;
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
bash_cv_type_wint_t=yes
|
||||
else
|
||||
bash_cv_type_wint_t=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wint_t" >&5
|
||||
$as_echo "$bash_cv_type_wint_t" >&6; }
|
||||
if test $bash_cv_type_wint_t = yes; then
|
||||
|
||||
$as_echo "#define HAVE_WINT_T 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
if test "$am_cv_func_iconv" = yes; then
|
||||
OLDLIBS="$LIBS"
|
||||
LIBS="$LIBS $LIBICONV"
|
||||
for ac_func in locale_charset
|
||||
do :
|
||||
ac_fn_c_check_func "$LINENO" "locale_charset" "ac_cv_func_locale_charset"
|
||||
if test "x$ac_cv_func_locale_charset" = x""yes; then :
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_LOCALE_CHARSET 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
done
|
||||
|
||||
LIBS="$OLDLIBS"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
case "$host_cpu" in
|
||||
|
@ -6357,7 +6801,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 readline $as_me 5.1-release, which was
|
||||
This file was extended by readline $as_me 6.2, which was
|
||||
generated by GNU Autoconf 2.64. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
|
@ -6421,7 +6865,7 @@ Report bugs to <bug-readline@gnu.org>."
|
|||
_ACEOF
|
||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
ac_cs_version="\\
|
||||
readline config.status 5.1-release
|
||||
readline config.status 6.2
|
||||
configured by $0, generated by GNU Autoconf 2.64,
|
||||
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
|
||||
|
||||
|
|
|
@ -5,12 +5,12 @@ dnl report bugs to chet@po.cwru.edu
|
|||
dnl
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
# Copyright (C) 1987-2005 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1987-2009 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -18,15 +18,13 @@ dnl Process this file with autoconf to produce a configure script.
|
|||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
AC_REVISION([for Readline 5.1, version 2.59])
|
||||
AC_REVISION([for Readline 6.2, version 2.67])
|
||||
|
||||
m4_include([../config/override.m4])
|
||||
|
||||
AC_INIT(readline, 5.1-release, bug-readline@gnu.org)
|
||||
AC_INIT(readline, 6.2, bug-readline@gnu.org)
|
||||
|
||||
dnl make sure we are using a recent autoconf version
|
||||
AC_PREREQ(2.50)
|
||||
|
@ -38,7 +36,7 @@ AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..)
|
|||
AC_CONFIG_HEADERS(config.h)
|
||||
|
||||
dnl update the value of RL_READLINE_VERSION in readline.h when this changes
|
||||
LIBVERSION=5.1
|
||||
LIBVERSION=6.2
|
||||
|
||||
AC_CANONICAL_HOST
|
||||
|
||||
|
@ -115,44 +113,6 @@ AC_PROG_CC
|
|||
dnl AC_AIX
|
||||
AC_MINIX
|
||||
|
||||
dnl BEGIN changes for CYGNUS cross-building for Cygwin
|
||||
dnl NOTE: Some of these changes may no longer be necessary.
|
||||
|
||||
dnl load up the cross-building cache file -- add more cases and cache
|
||||
dnl files as necessary
|
||||
if test "x$cross_compiling" = "xyes"; then
|
||||
case "${host}" in
|
||||
*-cygwin*)
|
||||
cross_cache=${srcdir}/cross-build/cygwin.cache
|
||||
LOCAL_CFLAGS="$LOCAL_CFLAGS -I${srcdir}/../libtermcap"
|
||||
;;
|
||||
*-mingw32*)
|
||||
cross_cache=${srcdir}/cross-build/mingw.cache
|
||||
;;
|
||||
*) echo "configure: cross-compiling for a non-cygwin target is not supported" >&2
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "x$cross_cache" != "x"; then
|
||||
if test -r "${cross_cache}"; then
|
||||
echo "loading cross-build cache file ${cross_cache}"
|
||||
. ${cross_cache}
|
||||
fi
|
||||
unset cross_cache
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -z "$CC_FOR_BUILD"; then
|
||||
if test "x$cross_compiling" = "xno"; then
|
||||
CC_FOR_BUILD='$(CC)'
|
||||
else
|
||||
CC_FOR_BUILD=gcc
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(CC_FOR_BUILD)
|
||||
|
||||
dnl END changes for CYGNUS cross-building for Cygwin
|
||||
|
||||
# If we're using gcc and the user hasn't specified CFLAGS, add -O to CFLAGS.
|
||||
test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O"
|
||||
|
||||
|
@ -170,6 +130,7 @@ AC_SUBST(MAKE_SHELL)
|
|||
AC_C_CONST
|
||||
AC_C_PROTOTYPES
|
||||
AC_C_CHAR_UNSIGNED
|
||||
AC_C_VOLATILE
|
||||
|
||||
AC_TYPE_SIGNAL
|
||||
|
||||
|
@ -200,6 +161,8 @@ AC_CHECK_HEADERS(sys/ptem.h,,,
|
|||
#endif
|
||||
]])
|
||||
|
||||
AC_SYS_LARGEFILE
|
||||
|
||||
BASH_SYS_SIGNAL_VINTAGE
|
||||
BASH_SYS_REINSTALL_SIGHANDLERS
|
||||
|
||||
|
@ -212,7 +175,9 @@ BASH_CHECK_GETPW_FUNCS
|
|||
|
||||
AC_HEADER_TIOCGWINSZ
|
||||
|
||||
BASH_TYPE_SIG_ATOMIC_T
|
||||
BASH_TYPE_SIGHANDLER
|
||||
|
||||
BASH_HAVE_TIOCSTAT
|
||||
BASH_HAVE_FIONREAD
|
||||
BASH_CHECK_SPEED_T
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,3 +1,14 @@
|
|||
2011-05-11 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* hsuser.texi (Using History Interactively): Disable !BashFeatures
|
||||
@defcodeindex. Make the `Programming with GNU History' reference
|
||||
external.
|
||||
* inc-hist.texinfo: Remove.
|
||||
|
||||
2011-05-11 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
Imported readline 6.2, and upstream patch 001.
|
||||
|
||||
2006-04-24 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
Imported readline 5.1, and upstream patches 001-004.
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
# This makefile for Readline library documentation is in -*- text -*- mode.
|
||||
# Emacs likes it that way.
|
||||
|
||||
# Copyright (C) 1996-2004 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1996-2009 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -14,12 +14,11 @@
|
|||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
topdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = .:@srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
prefix = @prefix@
|
||||
|
||||
|
@ -64,9 +63,9 @@ PSPDF = gs -sPAPERSIZE=${PAPERSIZE} -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -s
|
|||
|
||||
RLSRC = $(srcdir)/rlman.texi $(srcdir)/rluser.texi \
|
||||
$(srcdir)/rltech.texi $(srcdir)/version.texi \
|
||||
$(srcdir)/rluserman.texi
|
||||
$(srcdir)/rluserman.texi $(srcdir)/fdl.texi
|
||||
HISTSRC = $(srcdir)/history.texi $(srcdir)/hsuser.texi \
|
||||
$(srcdir)/hstech.texi $(srcdir)/version.texi
|
||||
$(srcdir)/hstech.texi $(srcdir)/version.texi $(srcdir)/fdl.texi
|
||||
|
||||
# This should be a program that converts troff to an ascii-readable format
|
||||
NROFF = groff -Tascii
|
||||
|
@ -83,7 +82,7 @@ PDFOBJ = readline.pdf history.pdf rluserman.pdf
|
|||
|
||||
INTERMEDIATE_OBJ = rlman.dvi
|
||||
|
||||
DIST_DOCS = $(DVIOBJ) $(PSOBJ) $(HTMLOBJ) $(INFOOBJ) $(TEXTOBJ)
|
||||
DIST_DOCS = $(DVIOBJ) $(PSOBJ) $(HTMLOBJ) $(INFOOBJ) $(TEXTOBJ) $(PDFOBJ)
|
||||
|
||||
.SUFFIXES: .0 .3 .ps .txt .dvi .html .pdf
|
||||
|
||||
|
@ -99,9 +98,11 @@ DIST_DOCS = $(DVIOBJ) $(PSOBJ) $(HTMLOBJ) $(INFOOBJ) $(TEXTOBJ)
|
|||
$(RM) $@
|
||||
-${DVIPDF} $<
|
||||
|
||||
all: info dvi html ps text
|
||||
all: info dvi html ps text pdf
|
||||
nodvi: info html text
|
||||
|
||||
xdist: $(DIST_DOCS)
|
||||
|
||||
info: $(INFOOBJ)
|
||||
dvi: $(DVIOBJ)
|
||||
ps: $(PSOBJ)
|
||||
|
@ -156,13 +157,13 @@ history.html: ${HISTSRC}
|
|||
|
||||
readline.0: readline.3
|
||||
|
||||
readline_3.ps: readline.3
|
||||
readline_3.ps: $(srcdir)/readline.3
|
||||
${RM} $@
|
||||
${GROFF} -man < $(srcdir)/readline.3 > $@
|
||||
|
||||
history.0: history.3
|
||||
|
||||
history_3.ps: history.3
|
||||
history_3.ps: $(srcdir)/history.3
|
||||
${RM} $@
|
||||
${GROFF} -man < $(srcdir)/history.3 > $@
|
||||
|
||||
|
@ -182,7 +183,7 @@ distclean: clean maybe-clean
|
|||
$(RM) Makefile
|
||||
|
||||
maybe-clean:
|
||||
-if test "X$(topdir)" != "X$(BUILD_DIR)"; then \
|
||||
-if test "X$(topdir)" != "X.." && test "X$(topdir)" != "X$(BUILD_DIR)"; then \
|
||||
$(RM) $(DIST_DOCS); \
|
||||
fi
|
||||
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
@c The GNU Free Documentation License.
|
||||
@center Version 1.3, 3 November 2008
|
||||
|
||||
@node GNU Free Documentation License
|
||||
@appendixsec GNU Free Documentation License
|
||||
|
||||
@cindex FDL, GNU Free Documentation License
|
||||
@center Version 1.2, November 2002
|
||||
@c This file is intended to be included within another document,
|
||||
@c hence no sectioning command or @node.
|
||||
|
||||
@display
|
||||
Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
|
||||
Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
|
||||
@uref{http://fsf.org/}
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
@ -112,6 +111,9 @@ formats which do not have any title page as such, ``Title Page'' means
|
|||
the text near the most prominent appearance of the work's title,
|
||||
preceding the beginning of the body of the text.
|
||||
|
||||
The ``publisher'' means any person or entity that distributes copies
|
||||
of the Document to the public.
|
||||
|
||||
A section ``Entitled XYZ'' means a named subunit of the Document whose
|
||||
title either is precisely XYZ or contains XYZ in parentheses following
|
||||
text that translates XYZ in another language. (Here XYZ stands for a
|
||||
|
@ -344,7 +346,7 @@ and independent documents or works, in or on a volume of a storage or
|
|||
distribution medium, is called an ``aggregate'' if the copyright
|
||||
resulting from the compilation is not used to limit the legal rights
|
||||
of the compilation's users beyond what the individual works permit.
|
||||
When the Document is included an aggregate, this License does not
|
||||
When the Document is included in an aggregate, this License does not
|
||||
apply to the other works in the aggregate which are not themselves
|
||||
derivative works of the Document.
|
||||
|
||||
|
@ -380,13 +382,30 @@ title.
|
|||
@item
|
||||
TERMINATION
|
||||
|
||||
You may not copy, modify, sublicense, or distribute the Document except
|
||||
as expressly provided for under this License. Any other attempt to
|
||||
copy, modify, sublicense or distribute the Document is void, and will
|
||||
automatically terminate your rights under this License. However,
|
||||
parties who have received copies, or rights, from you under this
|
||||
License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
You may not copy, modify, sublicense, or distribute the Document
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense, or distribute it is void, and
|
||||
will automatically terminate your rights under this License.
|
||||
|
||||
However, if you cease all violation of this License, then your license
|
||||
from a particular copyright holder is reinstated (a) provisionally,
|
||||
unless and until the copyright holder explicitly and finally
|
||||
terminates your license, and (b) permanently, if the copyright holder
|
||||
fails to notify you of the violation by some reasonable means prior to
|
||||
60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, receipt of a copy of some or all of the same material does
|
||||
not give you any rights to use it.
|
||||
|
||||
@item
|
||||
FUTURE REVISIONS OF THIS LICENSE
|
||||
|
@ -404,11 +423,46 @@ following the terms and conditions either of that specified version or
|
|||
of any later version that has been published (not as a draft) by the
|
||||
Free Software Foundation. If the Document does not specify a version
|
||||
number of this License, you may choose any version ever published (not
|
||||
as a draft) by the Free Software Foundation.
|
||||
as a draft) by the Free Software Foundation. If the Document
|
||||
specifies that a proxy can decide which future versions of this
|
||||
License can be used, that proxy's public statement of acceptance of a
|
||||
version permanently authorizes you to choose that version for the
|
||||
Document.
|
||||
|
||||
@item
|
||||
RELICENSING
|
||||
|
||||
``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any
|
||||
World Wide Web server that publishes copyrightable works and also
|
||||
provides prominent facilities for anybody to edit those works. A
|
||||
public wiki that anybody can edit is an example of such a server. A
|
||||
``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the
|
||||
site means any set of copyrightable works thus published on the MMC
|
||||
site.
|
||||
|
||||
``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0
|
||||
license published by Creative Commons Corporation, a not-for-profit
|
||||
corporation with a principal place of business in San Francisco,
|
||||
California, as well as future copyleft versions of that license
|
||||
published by that same organization.
|
||||
|
||||
``Incorporate'' means to publish or republish a Document, in whole or
|
||||
in part, as part of another Document.
|
||||
|
||||
An MMC is ``eligible for relicensing'' if it is licensed under this
|
||||
License, and if all works that were first published under this License
|
||||
somewhere other than this MMC, and subsequently incorporated in whole
|
||||
or in part into the MMC, (1) had no cover texts or invariant sections,
|
||||
and (2) were thus incorporated prior to November 1, 2008.
|
||||
|
||||
The operator of an MMC Site may republish an MMC contained in the site
|
||||
under CC-BY-SA on the same site at any time before August 1, 2009,
|
||||
provided the MMC is eligible for relicensing.
|
||||
|
||||
@end enumerate
|
||||
|
||||
@page
|
||||
@appendixsubsec ADDENDUM: How to use this License for your documents
|
||||
@heading ADDENDUM: How to use this License for your documents
|
||||
|
||||
To use this License in a document you have written, include a copy of
|
||||
the License in the document and put the following copyright and
|
||||
|
@ -418,16 +472,16 @@ license notices just after the title page:
|
|||
@group
|
||||
Copyright (C) @var{year} @var{your name}.
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.2
|
||||
under the terms of the GNU Free Documentation License, Version 1.3
|
||||
or any later version published by the Free Software Foundation;
|
||||
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
|
||||
A copy of the license is included in the section entitled ``GNU
|
||||
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
|
||||
Texts. A copy of the license is included in the section entitled ``GNU
|
||||
Free Documentation License''.
|
||||
@end group
|
||||
@end smallexample
|
||||
|
||||
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
|
||||
replace the ``with...Texts.'' line with this:
|
||||
replace the ``with@dots{}Texts.'' line with this:
|
||||
|
||||
@smallexample
|
||||
@group
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
.\" Case Western Reserve University
|
||||
.\" chet@ins.CWRU.Edu
|
||||
.\"
|
||||
.\" Last Change: Thu Jul 31 08:46:08 EDT 2003
|
||||
.\" Last Change: Thu Aug 12 22:24:41 EDT 2010
|
||||
.\"
|
||||
.TH HISTORY 3 "2003 July 31" "GNU History 5.0"
|
||||
.TH HISTORY 3 "2010 August 12" "GNU History 6.2"
|
||||
.\"
|
||||
.\" File Name macro. This used to be `.PN', for Path Name,
|
||||
.\" but Sun doesn't seem to like that very much.
|
||||
|
@ -40,8 +40,8 @@
|
|||
.SH NAME
|
||||
history \- GNU History Library
|
||||
.SH COPYRIGHT
|
||||
.if t The GNU History Library is Copyright \(co 1989-2002 by the Free Software Foundation, Inc.
|
||||
.if n The GNU History Library is Copyright (C) 1989-2002 by the Free Software Foundation, Inc.
|
||||
.if t The GNU History Library is Copyright \(co 1989-2011 by the Free Software Foundation, Inc.
|
||||
.if n The GNU History Library is Copyright (C) 1989-2011 by the Free Software Foundation, Inc.
|
||||
.SH DESCRIPTION
|
||||
Many programs read input from the user a line at a time. The GNU
|
||||
History library is able to keep track of those lines, associate arbitrary
|
||||
|
@ -83,6 +83,8 @@ the history expansion character.
|
|||
.PP
|
||||
An event designator is a reference to a command line entry in the
|
||||
history list.
|
||||
Unless the reference is absolute, events are relative to the current
|
||||
position in the history list.
|
||||
.PP
|
||||
.PD 0
|
||||
.TP
|
||||
|
@ -96,18 +98,22 @@ Refer to command line
|
|||
.IR n .
|
||||
.TP
|
||||
.B !\-\fIn\fR
|
||||
Refer to the current command line minus
|
||||
Refer to the current command minus
|
||||
.IR n .
|
||||
.TP
|
||||
.B !!
|
||||
Refer to the previous command. This is a synonym for `!\-1'.
|
||||
.TP
|
||||
.B !\fIstring\fR
|
||||
Refer to the most recent command starting with
|
||||
Refer to the most recent command
|
||||
preceding the current position in the history list
|
||||
starting with
|
||||
.IR string .
|
||||
.TP
|
||||
.B !?\fIstring\fR\fB[?]\fR
|
||||
Refer to the most recent command containing
|
||||
Refer to the most recent command
|
||||
preceding the current postition in the history list
|
||||
containing
|
||||
.IR string .
|
||||
The trailing \fB?\fP may be omitted if
|
||||
.I string
|
||||
|
@ -569,10 +575,13 @@ The number of entries currently stored in the history list.
|
|||
The maximum number of history entries. This must be changed using
|
||||
\fBstifle_history()\fP.
|
||||
|
||||
.Vb int history_write_timestamps
|
||||
.Vb int history_wite_timestamps
|
||||
If non-zero, timestamps are written to the history file, so they can be
|
||||
preserved between sessions. The default value is 0, meaning that
|
||||
timestamps are not saved.
|
||||
The current timestamp format uses the value of \fIhistory_comment_char\fP
|
||||
to delimit timestamp entries in the history file. If that variable does
|
||||
not have a value (the default), timestamps will not be written.
|
||||
|
||||
.Vb char history_expansion_char
|
||||
The character that introduces a history event. The default is \fB!\fP.
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
@settitle GNU History Library
|
||||
@c %**end of header (This is for running Texinfo on a region.)
|
||||
|
||||
@setchapternewpage odd
|
||||
|
||||
@include version.texi
|
||||
|
||||
@copying
|
||||
|
@ -14,7 +12,7 @@ This document describes the GNU History library
|
|||
a programming tool that provides a consistent user interface for
|
||||
recalling lines of previously typed input.
|
||||
|
||||
Copyright @copyright{} 1988-2004 Free Software Foundation, Inc.
|
||||
Copyright @copyright{} 1988--2011 Free Software Foundation, Inc.
|
||||
|
||||
Permission is granted to make and distribute verbatim copies of
|
||||
this manual provided the copyright notice and this permission notice
|
||||
|
@ -22,15 +20,16 @@ are preserved on all copies.
|
|||
|
||||
@quotation
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.1 or
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license is
|
||||
included in the section entitled ``GNU Free Documentation License.''
|
||||
included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
(a) The FSF's Back-Cover Text is: You are free to copy and modify
|
||||
this GNU manual. Buying copies from GNU Press supports the FSF in
|
||||
developing GNU and promoting software freedom.''
|
||||
|
||||
(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
|
||||
this GNU Manual, like GNU software. Copies published by the Free
|
||||
Software Foundation raise funds for GNU development.''
|
||||
@end quotation
|
||||
@end copying
|
||||
|
||||
|
@ -72,7 +71,7 @@ typed input.
|
|||
@menu
|
||||
* Using History Interactively:: GNU History User's Manual.
|
||||
* Programming with GNU History:: GNU History Programmer's Manual.
|
||||
* Copying This Manual:: Copying This Manual.
|
||||
* GNU Free Documentation License:: License for copying this manual.
|
||||
* Concept Index:: Index of concepts described in this manual.
|
||||
* Function and Variable Index:: Index of externally visible functions
|
||||
and variables.
|
||||
|
@ -84,12 +83,8 @@ typed input.
|
|||
@include hsuser.texi
|
||||
@include hstech.texi
|
||||
|
||||
@node Copying This Manual
|
||||
@appendix Copying This Manual
|
||||
|
||||
@menu
|
||||
* GNU Free Documentation License:: License for copying this manual.
|
||||
@end menu
|
||||
@node GNU Free Documentation License
|
||||
@appendix GNU Free Documentation License
|
||||
|
||||
@include fdl.texi
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
@ignore
|
||||
This file documents the user interface to the GNU History library.
|
||||
|
||||
Copyright (C) 1988-2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 1988-2011 Free Software Foundation, Inc.
|
||||
Authored by Brian Fox and Chet Ramey.
|
||||
|
||||
Permission is granted to make and distribute verbatim copies of this manual
|
||||
|
@ -426,6 +426,10 @@ The maximum number of history entries. This must be changed using
|
|||
If non-zero, timestamps are written to the history file, so they can be
|
||||
preserved between sessions. The default value is 0, meaning that
|
||||
timestamps are not saved.
|
||||
|
||||
The current timestamp format uses the value of @var{history_comment_char}
|
||||
to delimit timestamp entries in the history file. If that variable does
|
||||
not have a value (the default), timestamps will not be written.
|
||||
@end deftypevar
|
||||
|
||||
@deftypevar char history_expansion_char
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
@ignore
|
||||
This file documents the user interface to the GNU History library.
|
||||
|
||||
Copyright (C) 1988-2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 1988--2011 Free Software Foundation, Inc.
|
||||
Authored by Brian Fox and Chet Ramey.
|
||||
|
||||
Permission is granted to make and distribute verbatim copies of this manual
|
||||
|
@ -26,9 +26,10 @@ into another language, under the above conditions for modified versions.
|
|||
@node Using History Interactively
|
||||
@chapter Using History Interactively
|
||||
|
||||
@ifclear BashFeatures
|
||||
@defcodeindex bt
|
||||
@end ifclear
|
||||
@c GDB bundling modification:
|
||||
@c @ifclear BashFeatures
|
||||
@c @defcodeindex bt
|
||||
@c @end ifclear
|
||||
|
||||
@ifset BashFeatures
|
||||
This chapter describes how to use the @sc{gnu} History Library
|
||||
|
@ -41,7 +42,8 @@ see the @sc{gnu} Readline Library Manual.
|
|||
This chapter describes how to use the @sc{gnu} History Library interactively,
|
||||
from a user's standpoint. It should be considered a user's guide. For
|
||||
information on using the @sc{gnu} History Library in your own programs,
|
||||
@pxref{Programming with GNU History}.
|
||||
@c GDB bundling modification:
|
||||
@pxref{Programming with GNU History, , , history, GNU History Library}.
|
||||
@end ifclear
|
||||
|
||||
@ifset BashFeatures
|
||||
|
@ -97,7 +99,11 @@ to contain no more than @env{$HISTFILESIZE}
|
|||
lines. If @env{HISTFILESIZE} is not set, no truncation is performed.
|
||||
|
||||
If the @env{HISTTIMEFORMAT} is set, the time stamp information
|
||||
associated with each history entry is written to the history file.
|
||||
associated with each history entry is written to the history file,
|
||||
marked with the history comment character.
|
||||
When the history file is read, lines beginning with the history
|
||||
comment character followed immediately by a digit are interpreted
|
||||
as timestamps for the previous history line.
|
||||
|
||||
The builtin command @code{fc} may be used to list or edit and re-execute
|
||||
a portion of the history list.
|
||||
|
@ -133,7 +139,7 @@ history list and history file.
|
|||
@item fc
|
||||
@btindex fc
|
||||
@example
|
||||
@code{fc [-e @var{ename}] [-nlr] [@var{first}] [@var{last}]}
|
||||
@code{fc [-e @var{ename}] [-lnr] [@var{first}] [@var{last}]}
|
||||
@code{fc -s [@var{pat}=@var{rep}] [@var{command}]}
|
||||
@end example
|
||||
|
||||
|
@ -277,7 +283,10 @@ them, so that they are available for subsequent recall.
|
|||
This is most useful in conjunction with Readline.
|
||||
|
||||
The shell allows control of the various characters used by the
|
||||
history expansion mechanism with the @code{histchars} variable.
|
||||
history expansion mechanism with the @code{histchars} variable,
|
||||
as explained above (@pxref{Bash Variables}). The shell uses
|
||||
the history comment character to mark history timestamps when
|
||||
writing the history file.
|
||||
@end ifset
|
||||
|
||||
@menu
|
||||
|
@ -292,6 +301,8 @@ history expansion mechanism with the @code{histchars} variable.
|
|||
|
||||
An event designator is a reference to a command line entry in the
|
||||
history list.
|
||||
Unless the reference is absolute, events are relative to the current
|
||||
position in the history list.
|
||||
@cindex history events
|
||||
|
||||
@table @asis
|
||||
|
@ -317,10 +328,15 @@ Refer to the command @var{n} lines back.
|
|||
Refer to the previous command. This is a synonym for @samp{!-1}.
|
||||
|
||||
@item @code{!@var{string}}
|
||||
Refer to the most recent command starting with @var{string}.
|
||||
Refer to the most recent command
|
||||
preceding the current position in the history list
|
||||
starting with @var{string}.
|
||||
|
||||
@item @code{!?@var{string}[?]}
|
||||
Refer to the most recent command containing @var{string}. The trailing
|
||||
Refer to the most recent command
|
||||
preceding the current position in the history list
|
||||
containing @var{string}.
|
||||
The trailing
|
||||
@samp{?} may be omitted if the @var{string} is followed immediately by
|
||||
a newline.
|
||||
|
||||
|
|
|
@ -1,457 +0,0 @@
|
|||
@ignore
|
||||
This file documents the user interface to the GNU History library.
|
||||
|
||||
Copyright (C) 1988-2002 Free Software Foundation, Inc.
|
||||
Authored by Brian Fox and Chet Ramey.
|
||||
|
||||
Permission is granted to make and distribute verbatim copies of this manual
|
||||
provided the copyright notice and this permission notice are preserved on
|
||||
all copies.
|
||||
|
||||
Permission is granted to process this file through Tex and print the
|
||||
results, provided the printed document carries copying permission notice
|
||||
identical to this one except for the removal of this paragraph (this
|
||||
paragraph not being relevant to the printed manual).
|
||||
|
||||
Permission is granted to copy and distribute modified versions of this
|
||||
manual under the conditions for verbatim copying, provided also that the
|
||||
GNU Copyright statement is available to the distributee, and provided that
|
||||
the entire resulting derived work is distributed under the terms of a
|
||||
permission notice identical to this one.
|
||||
|
||||
Permission is granted to copy and distribute translations of this manual
|
||||
into another language, under the above conditions for modified versions.
|
||||
@end ignore
|
||||
|
||||
@node Using History Interactively
|
||||
@chapter Using History Interactively
|
||||
|
||||
@c @ifclear BashFeatures
|
||||
@c @defcodeindex bt
|
||||
@c @end ifclear
|
||||
|
||||
@ifset BashFeatures
|
||||
This chapter describes how to use the @sc{gnu} History Library
|
||||
interactively, from a user's standpoint.
|
||||
It should be considered a user's guide.
|
||||
For information on using the @sc{gnu} History Library in other programs,
|
||||
see the @sc{gnu} Readline Library Manual.
|
||||
@end ifset
|
||||
@ifclear BashFeatures
|
||||
This chapter describes how to use the @sc{gnu} History Library interactively,
|
||||
from a user's standpoint. It should be considered a user's guide.
|
||||
For information on using the @sc{gnu} History Library in other programs,
|
||||
see the @sc{gnu} Readline Library Manual.
|
||||
@end ifclear
|
||||
|
||||
@ifset BashFeatures
|
||||
@menu
|
||||
* Bash History Facilities:: How Bash lets you manipulate your command
|
||||
history.
|
||||
* Bash History Builtins:: The Bash builtin commands that manipulate
|
||||
the command history.
|
||||
* History Interaction:: What it feels like using History as a user.
|
||||
@end menu
|
||||
@end ifset
|
||||
@ifclear BashFeatures
|
||||
@menu
|
||||
* History Interaction:: What it feels like using History as a user.
|
||||
@end menu
|
||||
@end ifclear
|
||||
|
||||
@ifset BashFeatures
|
||||
@node Bash History Facilities
|
||||
@section Bash History Facilities
|
||||
@cindex command history
|
||||
@cindex history list
|
||||
|
||||
When the @option{-o history} option to the @code{set} builtin
|
||||
is enabled (@pxref{The Set Builtin}),
|
||||
the shell provides access to the @dfn{command history},
|
||||
the list of commands previously typed.
|
||||
The value of the @env{HISTSIZE} shell variable is used as the
|
||||
number of commands to save in a history list.
|
||||
The text of the last @env{$HISTSIZE}
|
||||
commands (default 500) is saved.
|
||||
The shell stores each command in the history list prior to
|
||||
parameter and variable expansion
|
||||
but after history expansion is performed, subject to the
|
||||
values of the shell variables
|
||||
@env{HISTIGNORE} and @env{HISTCONTROL}.
|
||||
|
||||
When the shell starts up, the history is initialized from the
|
||||
file named by the @env{HISTFILE} variable (default @file{~/.bash_history}).
|
||||
The file named by the value of @env{HISTFILE} is truncated, if
|
||||
necessary, to contain no more than the number of lines specified by
|
||||
the value of the @env{HISTFILESIZE} variable.
|
||||
When an interactive shell exits, the last
|
||||
@env{$HISTSIZE} lines are copied from the history list to the file
|
||||
named by @env{$HISTFILE}.
|
||||
If the @code{histappend} shell option is set (@pxref{Bash Builtins}),
|
||||
the lines are appended to the history file,
|
||||
otherwise the history file is overwritten.
|
||||
If @env{HISTFILE}
|
||||
is unset, or if the history file is unwritable, the history is
|
||||
not saved. After saving the history, the history file is truncated
|
||||
to contain no more than @env{$HISTFILESIZE}
|
||||
lines. If @env{HISTFILESIZE} is not set, no truncation is performed.
|
||||
|
||||
If the @env{HISTTIMEFORMAT} is set, the time stamp information
|
||||
associated with each history entry is written to the history file.
|
||||
|
||||
The builtin command @code{fc} may be used to list or edit and re-execute
|
||||
a portion of the history list.
|
||||
The @code{history} builtin may be used to display or modify the history
|
||||
list and manipulate the history file.
|
||||
When using command-line editing, search commands
|
||||
are available in each editing mode that provide access to the
|
||||
history list (@pxref{Commands For History}).
|
||||
|
||||
The shell allows control over which commands are saved on the history
|
||||
list. The @env{HISTCONTROL} and @env{HISTIGNORE}
|
||||
variables may be set to cause the shell to save only a subset of the
|
||||
commands entered.
|
||||
The @code{cmdhist}
|
||||
shell option, if enabled, causes the shell to attempt to save each
|
||||
line of a multi-line command in the same history entry, adding
|
||||
semicolons where necessary to preserve syntactic correctness.
|
||||
The @code{lithist}
|
||||
shell option causes the shell to save the command with embedded newlines
|
||||
instead of semicolons.
|
||||
The @code{shopt} builtin is used to set these options.
|
||||
@xref{Bash Builtins}, for a description of @code{shopt}.
|
||||
|
||||
@node Bash History Builtins
|
||||
@section Bash History Builtins
|
||||
@cindex history builtins
|
||||
|
||||
Bash provides two builtin commands which manipulate the
|
||||
history list and history file.
|
||||
|
||||
@table @code
|
||||
|
||||
@item fc
|
||||
@btindex fc
|
||||
@example
|
||||
@code{fc [-e @var{ename}] [-nlr] [@var{first}] [@var{last}]}
|
||||
@code{fc -s [@var{pat}=@var{rep}] [@var{command}]}
|
||||
@end example
|
||||
|
||||
Fix Command. In the first form, a range of commands from @var{first} to
|
||||
@var{last} is selected from the history list. Both @var{first} and
|
||||
@var{last} may be specified as a string (to locate the most recent
|
||||
command beginning with that string) or as a number (an index into the
|
||||
history list, where a negative number is used as an offset from the
|
||||
current command number). If @var{last} is not specified it is set to
|
||||
@var{first}. If @var{first} is not specified it is set to the previous
|
||||
command for editing and @minus{}16 for listing. If the @option{-l} flag is
|
||||
given, the commands are listed on standard output. The @option{-n} flag
|
||||
suppresses the command numbers when listing. The @option{-r} flag
|
||||
reverses the order of the listing. Otherwise, the editor given by
|
||||
@var{ename} is invoked on a file containing those commands. If
|
||||
@var{ename} is not given, the value of the following variable expansion
|
||||
is used: @code{$@{FCEDIT:-$@{EDITOR:-vi@}@}}. This says to use the
|
||||
value of the @env{FCEDIT} variable if set, or the value of the
|
||||
@env{EDITOR} variable if that is set, or @code{vi} if neither is set.
|
||||
When editing is complete, the edited commands are echoed and executed.
|
||||
|
||||
In the second form, @var{command} is re-executed after each instance
|
||||
of @var{pat} in the selected command is replaced by @var{rep}.
|
||||
|
||||
A useful alias to use with the @code{fc} command is @code{r='fc -s'}, so
|
||||
that typing @samp{r cc} runs the last command beginning with @code{cc}
|
||||
and typing @samp{r} re-executes the last command (@pxref{Aliases}).
|
||||
|
||||
@item history
|
||||
@btindex history
|
||||
@example
|
||||
history [@var{n}]
|
||||
history -c
|
||||
history -d @var{offset}
|
||||
history [-anrw] [@var{filename}]
|
||||
history -ps @var{arg}
|
||||
@end example
|
||||
|
||||
With no options, display the history list with line numbers.
|
||||
Lines prefixed with a @samp{*} have been modified.
|
||||
An argument of @var{n} lists only the last @var{n} lines.
|
||||
If the shell variable @env{HISTTIMEFORMAT} is set and not null,
|
||||
it is used as a format string for @var{strftime} to display
|
||||
the time stamp associated with each displayed history entry.
|
||||
No intervening blank is printed between the formatted time stamp
|
||||
and the history line.
|
||||
|
||||
Options, if supplied, have the following meanings:
|
||||
|
||||
@table @code
|
||||
@item -c
|
||||
Clear the history list. This may be combined
|
||||
with the other options to replace the history list completely.
|
||||
|
||||
@item -d @var{offset}
|
||||
Delete the history entry at position @var{offset}.
|
||||
@var{offset} should be specified as it appears when the history is
|
||||
displayed.
|
||||
|
||||
@item -a
|
||||
Append the new
|
||||
history lines (history lines entered since the beginning of the
|
||||
current Bash session) to the history file.
|
||||
|
||||
@item -n
|
||||
Append the history lines not already read from the history file
|
||||
to the current history list. These are lines appended to the history
|
||||
file since the beginning of the current Bash session.
|
||||
|
||||
@item -r
|
||||
Read the current history file and append its contents to
|
||||
the history list.
|
||||
|
||||
@item -w
|
||||
Write out the current history to the history file.
|
||||
|
||||
@item -p
|
||||
Perform history substitution on the @var{arg}s and display the result
|
||||
on the standard output, without storing the results in the history list.
|
||||
|
||||
@item -s
|
||||
The @var{arg}s are added to the end of
|
||||
the history list as a single entry.
|
||||
|
||||
@end table
|
||||
|
||||
When any of the @option{-w}, @option{-r}, @option{-a}, or @option{-n} options is
|
||||
used, if @var{filename}
|
||||
is given, then it is used as the history file. If not, then
|
||||
the value of the @env{HISTFILE} variable is used.
|
||||
|
||||
@end table
|
||||
@end ifset
|
||||
|
||||
@node History Interaction
|
||||
@section History Expansion
|
||||
@cindex history expansion
|
||||
|
||||
The History library provides a history expansion feature that is similar
|
||||
to the history expansion provided by @code{csh}. This section
|
||||
describes the syntax used to manipulate the history information.
|
||||
|
||||
History expansions introduce words from the history list into
|
||||
the input stream, making it easy to repeat commands, insert the
|
||||
arguments to a previous command into the current input line, or
|
||||
fix errors in previous commands quickly.
|
||||
|
||||
History expansion takes place in two parts. The first is to determine
|
||||
which line from the history list should be used during substitution.
|
||||
The second is to select portions of that line for inclusion into the
|
||||
current one. The line selected from the history is called the
|
||||
@dfn{event}, and the portions of that line that are acted upon are
|
||||
called @dfn{words}. Various @dfn{modifiers} are available to manipulate
|
||||
the selected words. The line is broken into words in the same fashion
|
||||
that Bash does, so that several words
|
||||
surrounded by quotes are considered one word.
|
||||
History expansions are introduced by the appearance of the
|
||||
history expansion character, which is @samp{!} by default.
|
||||
@ifset BashFeatures
|
||||
Only @samp{\} and @samp{'} may be used to escape the history expansion
|
||||
character.
|
||||
@end ifset
|
||||
|
||||
@ifset BashFeatures
|
||||
Several shell options settable with the @code{shopt}
|
||||
builtin (@pxref{Bash Builtins}) may be used to tailor
|
||||
the behavior of history expansion. If the
|
||||
@code{histverify} shell option is enabled, and Readline
|
||||
is being used, history substitutions are not immediately passed to
|
||||
the shell parser.
|
||||
Instead, the expanded line is reloaded into the Readline
|
||||
editing buffer for further modification.
|
||||
If Readline is being used, and the @code{histreedit}
|
||||
shell option is enabled, a failed history expansion will be
|
||||
reloaded into the Readline editing buffer for correction.
|
||||
The @option{-p} option to the @code{history} builtin command
|
||||
may be used to see what a history expansion will do before using it.
|
||||
The @option{-s} option to the @code{history} builtin may be used to
|
||||
add commands to the end of the history list without actually executing
|
||||
them, so that they are available for subsequent recall.
|
||||
This is most useful in conjunction with Readline.
|
||||
|
||||
The shell allows control of the various characters used by the
|
||||
history expansion mechanism with the @code{histchars} variable.
|
||||
@end ifset
|
||||
|
||||
@menu
|
||||
* Event Designators:: How to specify which history line to use.
|
||||
* Word Designators:: Specifying which words are of interest.
|
||||
* Modifiers:: Modifying the results of substitution.
|
||||
@end menu
|
||||
|
||||
@node Event Designators
|
||||
@subsection Event Designators
|
||||
@cindex event designators
|
||||
|
||||
An event designator is a reference to a command line entry in the
|
||||
history list.
|
||||
@cindex history events
|
||||
|
||||
@table @asis
|
||||
|
||||
@item @code{!}
|
||||
@ifset BashFeatures
|
||||
Start a history substitution, except when followed by a space, tab,
|
||||
the end of the line, @samp{=} or @samp{(} (when the
|
||||
@code{extglob} shell option is enabled using the @code{shopt} builtin).
|
||||
@end ifset
|
||||
@ifclear BashFeatures
|
||||
Start a history substitution, except when followed by a space, tab,
|
||||
the end of the line, or @samp{=}.
|
||||
@end ifclear
|
||||
|
||||
@item @code{!@var{n}}
|
||||
Refer to command line @var{n}.
|
||||
|
||||
@item @code{!-@var{n}}
|
||||
Refer to the command @var{n} lines back.
|
||||
|
||||
@item @code{!!}
|
||||
Refer to the previous command. This is a synonym for @samp{!-1}.
|
||||
|
||||
@item @code{!@var{string}}
|
||||
Refer to the most recent command starting with @var{string}.
|
||||
|
||||
@item @code{!?@var{string}[?]}
|
||||
Refer to the most recent command containing @var{string}. The trailing
|
||||
@samp{?} may be omitted if the @var{string} is followed immediately by
|
||||
a newline.
|
||||
|
||||
@item @code{^@var{string1}^@var{string2}^}
|
||||
Quick Substitution. Repeat the last command, replacing @var{string1}
|
||||
with @var{string2}. Equivalent to
|
||||
@code{!!:s/@var{string1}/@var{string2}/}.
|
||||
|
||||
@item @code{!#}
|
||||
The entire command line typed so far.
|
||||
|
||||
@end table
|
||||
|
||||
@node Word Designators
|
||||
@subsection Word Designators
|
||||
|
||||
Word designators are used to select desired words from the event.
|
||||
A @samp{:} separates the event specification from the word designator. It
|
||||
may be omitted if the word designator begins with a @samp{^}, @samp{$},
|
||||
@samp{*}, @samp{-}, or @samp{%}. Words are numbered from the beginning
|
||||
of the line, with the first word being denoted by 0 (zero). Words are
|
||||
inserted into the current line separated by single spaces.
|
||||
|
||||
@need 0.75
|
||||
For example,
|
||||
|
||||
@table @code
|
||||
@item !!
|
||||
designates the preceding command. When you type this, the preceding
|
||||
command is repeated in toto.
|
||||
|
||||
@item !!:$
|
||||
designates the last argument of the preceding command. This may be
|
||||
shortened to @code{!$}.
|
||||
|
||||
@item !fi:2
|
||||
designates the second argument of the most recent command starting with
|
||||
the letters @code{fi}.
|
||||
@end table
|
||||
|
||||
@need 0.75
|
||||
Here are the word designators:
|
||||
|
||||
@table @code
|
||||
|
||||
@item 0 (zero)
|
||||
The @code{0}th word. For many applications, this is the command word.
|
||||
|
||||
@item @var{n}
|
||||
The @var{n}th word.
|
||||
|
||||
@item ^
|
||||
The first argument; that is, word 1.
|
||||
|
||||
@item $
|
||||
The last argument.
|
||||
|
||||
@item %
|
||||
The word matched by the most recent @samp{?@var{string}?} search.
|
||||
|
||||
@item @var{x}-@var{y}
|
||||
A range of words; @samp{-@var{y}} abbreviates @samp{0-@var{y}}.
|
||||
|
||||
@item *
|
||||
All of the words, except the @code{0}th. This is a synonym for @samp{1-$}.
|
||||
It is not an error to use @samp{*} if there is just one word in the event;
|
||||
the empty string is returned in that case.
|
||||
|
||||
@item @var{x}*
|
||||
Abbreviates @samp{@var{x}-$}
|
||||
|
||||
@item @var{x}-
|
||||
Abbreviates @samp{@var{x}-$} like @samp{@var{x}*}, but omits the last word.
|
||||
|
||||
@end table
|
||||
|
||||
If a word designator is supplied without an event specification, the
|
||||
previous command is used as the event.
|
||||
|
||||
@node Modifiers
|
||||
@subsection Modifiers
|
||||
|
||||
After the optional word designator, you can add a sequence of one or more
|
||||
of the following modifiers, each preceded by a @samp{:}.
|
||||
|
||||
@table @code
|
||||
|
||||
@item h
|
||||
Remove a trailing pathname component, leaving only the head.
|
||||
|
||||
@item t
|
||||
Remove all leading pathname components, leaving the tail.
|
||||
|
||||
@item r
|
||||
Remove a trailing suffix of the form @samp{.@var{suffix}}, leaving
|
||||
the basename.
|
||||
|
||||
@item e
|
||||
Remove all but the trailing suffix.
|
||||
|
||||
@item p
|
||||
Print the new command but do not execute it.
|
||||
|
||||
@ifset BashFeatures
|
||||
@item q
|
||||
Quote the substituted words, escaping further substitutions.
|
||||
|
||||
@item x
|
||||
Quote the substituted words as with @samp{q},
|
||||
but break into words at spaces, tabs, and newlines.
|
||||
@end ifset
|
||||
|
||||
@item s/@var{old}/@var{new}/
|
||||
Substitute @var{new} for the first occurrence of @var{old} in the
|
||||
event line. Any delimiter may be used in place of @samp{/}.
|
||||
The delimiter may be quoted in @var{old} and @var{new}
|
||||
with a single backslash. If @samp{&} appears in @var{new},
|
||||
it is replaced by @var{old}. A single backslash will quote
|
||||
the @samp{&}. The final delimiter is optional if it is the last
|
||||
character on the input line.
|
||||
|
||||
@item &
|
||||
Repeat the previous substitution.
|
||||
|
||||
@item g
|
||||
@itemx a
|
||||
Cause changes to be applied over the entire event line. Used in
|
||||
conjunction with @samp{s}, as in @code{gs/@var{old}/@var{new}/},
|
||||
or with @samp{&}.
|
||||
|
||||
@item G
|
||||
Apply the following @samp{s} modifier once to each word in the event.
|
||||
|
||||
@end table
|
|
@ -6,9 +6,9 @@
|
|||
.\" Case Western Reserve University
|
||||
.\" chet@ins.CWRU.Edu
|
||||
.\"
|
||||
.\" Last Change: Tue Sep 13 12:07:26 EDT 2005
|
||||
.\" Last Change: Sat Aug 28 18:56:32 EDT 2010
|
||||
.\"
|
||||
.TH READLINE 3 "2005 Sep 13" "GNU Readline 5.1-beta1"
|
||||
.TH READLINE 3 "2010 August 28" "GNU Readline 6.2"
|
||||
.\"
|
||||
.\" File Name macro. This used to be `.PN', for Path Name,
|
||||
.\" but Sun doesn't seem to like that very much.
|
||||
|
@ -34,8 +34,8 @@ readline \- get a line from a user with editing
|
|||
\fBreadline\fP (\fIconst char *prompt\fP);
|
||||
.fi
|
||||
.SH COPYRIGHT
|
||||
.if n Readline is Copyright (C) 1989\-2004 by the Free Software Foundation, Inc.
|
||||
.if t Readline is Copyright \(co 1989\-2004 by the Free Software Foundation, Inc.
|
||||
.if n Readline is Copyright (C) 1989\-2011 Free Software Foundation, Inc.
|
||||
.if t Readline is Copyright \(co 1989\-2011 Free Software Foundation, Inc.
|
||||
.SH DESCRIPTION
|
||||
.LP
|
||||
.B readline
|
||||
|
@ -76,7 +76,7 @@ is read with a non\-empty line, it is
|
|||
treated as a newline.
|
||||
.SH NOTATION
|
||||
.LP
|
||||
An emacs-style notation is used to denote
|
||||
An Emacs-style notation is used to denote
|
||||
keystrokes. Control keys are denoted by C\-\fIkey\fR, e.g., C\-n
|
||||
means Control\-N. Similarly,
|
||||
.I meta
|
||||
|
@ -116,6 +116,8 @@ The name of this file is taken from the value of the
|
|||
.B INPUTRC
|
||||
environment variable. If that variable is unset, the default is
|
||||
.IR ~/.inputrc .
|
||||
If that file does not exist or cannot be read, the ultimate default is
|
||||
.IR /etc/inputrc .
|
||||
When a program which uses the readline library starts up, the
|
||||
init file is read, and the key bindings and variables are set.
|
||||
There are only a few basic constructs allowed in the
|
||||
|
@ -168,6 +170,8 @@ command or the text of a macro and a key sequence to which
|
|||
it should be bound. The name may be specified in one of two ways:
|
||||
as a symbolic key name, possibly with \fIMeta\-\fP or \fIControl\-\fP
|
||||
prefixes, or as a key sequence.
|
||||
The name and key sequence are separated by a colon. There can be no
|
||||
whitespace between the name and the colon.
|
||||
.PP
|
||||
When using the form \fBkeyname\fP:\^\fIfunction-name\fP or \fImacro\fP,
|
||||
.I keyname
|
||||
|
@ -357,10 +361,29 @@ in emacs mode and to
|
|||
.B #
|
||||
in vi command mode.
|
||||
.TP
|
||||
.B completion\-display\-width (-1)
|
||||
The number of screen columns used to display possible matches
|
||||
when performing completion.
|
||||
The value is ignored if it is less than 0 or greater than the terminal
|
||||
screen width.
|
||||
A value of 0 will cause matches to be displayed one per line.
|
||||
The default value is -1.
|
||||
.TP
|
||||
.B completion\-ignore\-case (Off)
|
||||
If set to \fBOn\fP, readline performs filename matching and completion
|
||||
in a case\-insensitive fashion.
|
||||
.TP
|
||||
.B completion\-map\-case (Off)
|
||||
If set to \fBOn\fP, and \fBcompletion\-ignore\-case\fP is enabled, readline
|
||||
treats hyphens (\fI\-\fP) and underscores (\fI_\fP) as equivalent when
|
||||
performing case\-insensitive filename matching and completion.
|
||||
.TP
|
||||
.B completion\-prefix\-display\-length (0)
|
||||
The length in characters of the common prefix of a list of possible
|
||||
completions that is displayed without modification. When set to a
|
||||
value greater than zero, common prefixes longer than this value are
|
||||
replaced with an ellipsis when displaying possible completions.
|
||||
.TP
|
||||
.B completion\-query\-items (100)
|
||||
This determines when the user is queried about viewing
|
||||
the number of possible completions
|
||||
|
@ -384,27 +407,41 @@ mapped to \fBself-insert\fP.
|
|||
.TP
|
||||
.B editing\-mode (emacs)
|
||||
Controls whether readline begins with a set of key bindings similar
|
||||
to emacs or vi.
|
||||
to \fIEmacs\fP or \fIvi\fP.
|
||||
.B editing\-mode
|
||||
can be set to either
|
||||
.B emacs
|
||||
or
|
||||
.BR vi .
|
||||
.TP
|
||||
.B echo\-control\-characters (On)
|
||||
When set to \fBOn\fP, on operating systems that indicate they support it,
|
||||
readline echoes a character corresponding to a signal generated from the
|
||||
keyboard.
|
||||
.TP
|
||||
.B enable\-keypad (Off)
|
||||
When set to \fBOn\fP, readline will try to enable the application
|
||||
keypad when it is called. Some systems need this to enable the
|
||||
arrow keys.
|
||||
.TP
|
||||
.B enable\-meta\-key (On)
|
||||
When set to \fBOn\fP, readline will try to enable any meta modifier
|
||||
key the terminal claims to support when it is called. On many terminals,
|
||||
the meta key is used to send eight-bit characters.
|
||||
.TP
|
||||
.B expand\-tilde (Off)
|
||||
If set to \fBon\fP, tilde expansion is performed when readline
|
||||
If set to \fBOn\fP, tilde expansion is performed when readline
|
||||
attempts word completion.
|
||||
.TP
|
||||
.B history\-preserve\-point (Off)
|
||||
If set to \fBon\fP, the history code attempts to place point at the
|
||||
If set to \fBOn\fP, the history code attempts to place point at the
|
||||
same location on each history line retrieved with \fBprevious-history\fP
|
||||
or \fBnext-history\fP.
|
||||
.TP
|
||||
.B history\-size (0)
|
||||
Set the maximum number of history entries saved in the history list. If
|
||||
set to zero, the number of entries in the history list is not limited.
|
||||
.TP
|
||||
.B horizontal\-scroll\-mode (Off)
|
||||
When set to \fBOn\fP, makes readline use a single line for display,
|
||||
scrolling the input horizontally on a single screen line when it
|
||||
|
@ -451,9 +488,15 @@ have a slash appended (subject to the value of
|
|||
.B match\-hidden\-files (On)
|
||||
This variable, when set to \fBOn\fP, causes readline to match files whose
|
||||
names begin with a `.' (hidden files) when performing filename
|
||||
completion, unless the leading `.' is
|
||||
completion.
|
||||
If set to \fBOff\fP, the leading `.' must be
|
||||
supplied by the user in the filename to be completed.
|
||||
.TP
|
||||
.B menu\-complete\-display\-prefix (Off)
|
||||
If set to \fBOn\fP, menu completion displays the common prefix of the
|
||||
list of possible completions (which may be empty) before cycling through
|
||||
the list.
|
||||
.TP
|
||||
.B output\-meta (Off)
|
||||
If set to \fBOn\fP, readline will display characters with the
|
||||
eighth bit set directly rather than as a meta-prefixed escape
|
||||
|
@ -467,10 +510,16 @@ to display a screenful of possible completions at a time.
|
|||
If set to \fBOn\fP, readline will display completions with matches
|
||||
sorted horizontally in alphabetical order, rather than down the screen.
|
||||
.TP
|
||||
.B revert\-all\-at\-newline (Off)
|
||||
If set to \fBOn\fP, readline will undo all changes to history lines
|
||||
before returning when \fBaccept\-line\fP is executed. By default,
|
||||
history lines may be modified and retain individual undo lists across
|
||||
calls to \fBreadline\fP.
|
||||
.TP
|
||||
.B show\-all\-if\-ambiguous (Off)
|
||||
This alters the default behavior of the completion functions. If
|
||||
set to
|
||||
.BR on ,
|
||||
.BR On ,
|
||||
words which have more than one possible completion cause the
|
||||
matches to be listed immediately instead of ringing the bell.
|
||||
.TP
|
||||
|
@ -478,12 +527,20 @@ matches to be listed immediately instead of ringing the bell.
|
|||
This alters the default behavior of the completion functions in
|
||||
a fashion similar to \fBshow\-all\-if\-ambiguous\fP.
|
||||
If set to
|
||||
.BR on ,
|
||||
.BR On ,
|
||||
words which have more than one possible completion without any
|
||||
possible partial completion (the possible completions don't share
|
||||
a common prefix) cause the matches to be listed immediately instead
|
||||
of ringing the bell.
|
||||
.TP
|
||||
.B skip\-completed\-text (Off)
|
||||
If set to \fBOn\fP, this alters the default completion behavior when
|
||||
inserting a single match into the line. It's only active when
|
||||
performing completion in the middle of a word. If enabled, readline
|
||||
does not insert characters from the completion that match characters
|
||||
after point in the word being completed, so portions of the word
|
||||
following the cursor are not duplicated.
|
||||
.TP
|
||||
.B visible\-stats (Off)
|
||||
If set to \fBOn\fP, a character denoting a file's type as reported
|
||||
by \fIstat\fP(2) is appended to the filename when listing possible
|
||||
|
@ -530,7 +587,7 @@ library sets the \fIapplication name\fP, and an initialization
|
|||
file can test for a particular value.
|
||||
This could be used to bind key sequences to functions useful for
|
||||
a specific program. For instance, the following command adds a
|
||||
key sequence that quotes the current or previous word in Bash:
|
||||
key sequence that quotes the current or previous word in \fBbash\fP:
|
||||
.sp 1
|
||||
.RS
|
||||
.nf
|
||||
|
@ -706,10 +763,14 @@ as if the "!\fIn\fP" history expansion had been specified.
|
|||
.B
|
||||
yank\-last\-arg (M\-.\^, M\-_\^)
|
||||
Insert the last argument to the previous command (the last word of
|
||||
the previous history entry). With an argument,
|
||||
behave exactly like \fByank\-nth\-arg\fP.
|
||||
the previous history entry).
|
||||
With a numeric argument, behave exactly like \fByank\-nth\-arg\fP.
|
||||
Successive calls to \fByank\-last\-arg\fP move back through the history
|
||||
list, inserting the last argument of each line in turn.
|
||||
list, inserting the last word (or the word specified by the argument to
|
||||
the first call) of each line in turn.
|
||||
Any numeric argument supplied to these successive calls determines
|
||||
the direction to move through the history. A negative argument switches
|
||||
the direction through the history (back or forward).
|
||||
The history expansion facilities are used to extract the last argument,
|
||||
as if the "!$" history expansion had been specified.
|
||||
.PD
|
||||
|
@ -884,6 +945,12 @@ only attempts filename completion under certain circumstances.
|
|||
.TP
|
||||
.B possible\-completions (M\-?)
|
||||
List the possible completions of the text before point.
|
||||
When displaying completions, readline sets the number of columns used
|
||||
for display to the value of \fBcompletion-display-width\fP, the value of
|
||||
the environment variable
|
||||
.SM
|
||||
.BR COLUMNS ,
|
||||
or the screen width, in that order.
|
||||
.TP
|
||||
.B insert\-completions (M\-*)
|
||||
Insert all completions of the text before point
|
||||
|
@ -904,6 +971,11 @@ through the list.
|
|||
This command is intended to be bound to \fBTAB\fP, but is unbound
|
||||
by default.
|
||||
.TP
|
||||
.B menu\-complete\-backward
|
||||
Identical to \fBmenu\-complete\fP, but moves backward through the list
|
||||
of possible completions, as if \fBmenu\-complete\fP had been given a
|
||||
negative argument. This command is unbound by default.
|
||||
.TP
|
||||
.B delete\-char\-or\-list
|
||||
Deletes the character under the cursor if not at the beginning or
|
||||
end of the line (like \fBdelete-char\fP).
|
||||
|
@ -977,6 +1049,15 @@ character. A negative count searches for previous occurrences.
|
|||
A character is read and point is moved to the previous occurrence of that
|
||||
character. A negative count searches for subsequent occurrences.
|
||||
.TP
|
||||
.B skip\-csi\-sequence
|
||||
Read enough characters to consume a multi-key sequence such as those
|
||||
defined for keys like Home and End. Such sequences begin with a
|
||||
Control Sequence Indicator (CSI), usually ESC\-[. If this sequence is
|
||||
bound to "\e[", keys producing such sequences will have no effect
|
||||
unless explicitly bound to a readline command, instead of inserting
|
||||
stray characters into the editing buffer. This is unbound by default,
|
||||
but usually bound to ESC\-[.
|
||||
.TP
|
||||
.B insert\-comment (M\-#)
|
||||
Without a numeric argument, the value of the readline
|
||||
.B comment\-begin
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
@settitle GNU Readline Library
|
||||
@comment %**end of header (This is for running Texinfo on a region.)
|
||||
@synindex vr fn
|
||||
@setchapternewpage odd
|
||||
|
||||
@include version.texi
|
||||
|
||||
|
@ -14,7 +13,7 @@ This manual describes the GNU Readline Library
|
|||
consistency of user interface across discrete programs which provide
|
||||
a command line interface.
|
||||
|
||||
Copyright @copyright{} 1988-2004 Free Software Foundation, Inc.
|
||||
Copyright @copyright{} 1988--2011 Free Software Foundation, Inc.
|
||||
|
||||
Permission is granted to make and distribute verbatim copies of
|
||||
this manual provided the copyright notice and this permission notice
|
||||
|
@ -22,15 +21,16 @@ are preserved on all copies.
|
|||
|
||||
@quotation
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.1 or
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license is
|
||||
included in the section entitled ``GNU Free Documentation License.''
|
||||
included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
(a) The FSF's Back-Cover Text is: You are free to copy and modify
|
||||
this GNU manual. Buying copies from GNU Press supports the FSF in
|
||||
developing GNU and promoting software freedom.''
|
||||
|
||||
(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
|
||||
this GNU Manual, like GNU software. Copies published by the Free
|
||||
Software Foundation raise funds for GNU development.''
|
||||
@end quotation
|
||||
@end copying
|
||||
|
||||
|
@ -71,7 +71,7 @@ provide a command line interface.
|
|||
@menu
|
||||
* Command Line Editing:: GNU Readline User's Manual.
|
||||
* Programming with GNU Readline:: GNU Readline Programmer's Manual.
|
||||
* Copying This Manual:: Copying this manual.
|
||||
* GNU Free Documentation License:: License for copying this manual.
|
||||
* Concept Index:: Index of concepts described in this manual.
|
||||
* Function and Variable Index:: Index of externally visible functions
|
||||
and variables.
|
||||
|
@ -81,12 +81,8 @@ provide a command line interface.
|
|||
@include rluser.texi
|
||||
@include rltech.texi
|
||||
|
||||
@node Copying This Manual
|
||||
@appendix Copying This Manual
|
||||
|
||||
@menu
|
||||
* GNU Free Documentation License:: License for copying this manual.
|
||||
@end menu
|
||||
@node GNU Free Documentation License
|
||||
@appendix GNU Free Documentation License
|
||||
|
||||
@include fdl.texi
|
||||
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
@comment %**start of header (This is for running Texinfo on a region.)
|
||||
@setfilename rltech.info
|
||||
@comment %**end of header (This is for running Texinfo on a region.)
|
||||
@setchapternewpage odd
|
||||
|
||||
@ifinfo
|
||||
This document describes the GNU Readline Library, a utility for aiding
|
||||
in the consistency of user interface across discrete programs that need
|
||||
to provide a command line interface.
|
||||
|
||||
Copyright (C) 1988-2005 Free Software Foundation, Inc.
|
||||
Copyright (C) 1988--2011 Free Software Foundation, Inc.
|
||||
|
||||
Permission is granted to make and distribute verbatim copies of
|
||||
this manual provided the copyright notice and this permission notice
|
||||
|
@ -351,6 +350,12 @@ The @code{rl_set_prompt()} function (@pxref{Redisplay}) may
|
|||
be used to modify the prompt string after calling @code{readline()}.
|
||||
@end deftypevar
|
||||
|
||||
@deftypevar {char *} rl_display_prompt
|
||||
The string displayed as the prompt. This is usually identical to
|
||||
@var{rl_prompt}, but may be changed temporarily by functions that
|
||||
use the prompt string as a message area, such as incremental search.
|
||||
@end deftypevar
|
||||
|
||||
@deftypevar int rl_already_prompted
|
||||
If an application wishes to display the prompt itself, rather than have
|
||||
Readline do it the first time @code{readline()} is called, it should set
|
||||
|
@ -518,6 +523,20 @@ Readline is performing word completion.
|
|||
Readline is currently executing the readline signal handler.
|
||||
@item RL_STATE_UNDOING
|
||||
Readline is performing an undo.
|
||||
@item RL_STATE_INPUTPENDING
|
||||
Readline has input pending due to a call to @code{rl_execute_next()}.
|
||||
@item RL_STATE_TTYCSAVED
|
||||
Readline has saved the values of the terminal's special characters.
|
||||
@item RL_STATE_CALLBACK
|
||||
Readline is currently using the alternate (callback) interface
|
||||
(@pxref{Alternate Interface}).
|
||||
@item RL_STATE_VIMOTION
|
||||
Readline is reading the argument to a vi-mode "motion" command.
|
||||
@item RL_STATE_MULTIKEY
|
||||
Readline is reading a multiple-keystroke command.
|
||||
@item RL_STATE_VICMDONCE
|
||||
Readline has entered vi command (movement) mode at least one time during
|
||||
the current call to @code{readline()}.
|
||||
@item RL_STATE_DONE
|
||||
Readline has read a key sequence bound to @code{accept-line}
|
||||
and is about to return the line to the caller.
|
||||
|
@ -603,7 +622,7 @@ Readline which keymap to use.
|
|||
@deftypefun Keymap rl_make_bare_keymap (void)
|
||||
Returns a new, empty keymap. The space for the keymap is allocated with
|
||||
@code{malloc()}; the caller should free it by calling
|
||||
@code{rl_discard_keymap()} when done.
|
||||
@code{rl_free_keymap()} when done.
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun Keymap rl_copy_keymap (Keymap map)
|
||||
|
@ -617,7 +636,13 @@ the Meta digits bound to produce numeric arguments.
|
|||
@end deftypefun
|
||||
|
||||
@deftypefun void rl_discard_keymap (Keymap keymap)
|
||||
Free the storage associated with @var{keymap}.
|
||||
Free the storage associated with the data in @var{keymap}.
|
||||
The caller should free @var{keymap}.
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun void rl_free_keymap (Keymap keymap)
|
||||
Free all storage associated with @var{keymap}. This calls
|
||||
@code{rl_discard_keymap} to free subordindate keymaps and macros.
|
||||
@end deftypefun
|
||||
|
||||
Readline has several internal keymaps. These functions allow you to
|
||||
|
@ -793,7 +818,8 @@ Print the names of all bindable Readline functions to @code{rl_outstream}.
|
|||
@deftypefun {const char **} rl_funmap_names (void)
|
||||
Return a NULL terminated array of known function names. The array is
|
||||
sorted. The array itself is allocated, but not the strings inside. You
|
||||
should @code{free()} the array when you are done, but not the pointers.
|
||||
should free the array, but not the pointers, using @code{free} or
|
||||
@code{rl_free} when you are done.
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun int rl_add_funmap_entry (const char *name, rl_command_func_t *function)
|
||||
|
@ -1033,8 +1059,10 @@ pending input has not already been read with @code{rl_read_key()}.
|
|||
@deftypefun int rl_set_keyboard_input_timeout (int u)
|
||||
While waiting for keyboard input in @code{rl_read_key()}, Readline will
|
||||
wait for @var{u} microseconds for input before calling any function
|
||||
assigned to @code{rl_event_hook}. The default waiting period is
|
||||
one-tenth of a second. Returns the old timeout value.
|
||||
assigned to @code{rl_event_hook}. @var{u} must be greater than or equal
|
||||
to zero (a zero-length timeout is equivalent to a poll).
|
||||
The default waiting period is one-tenth of a second.
|
||||
Returns the old timeout value.
|
||||
@end deftypefun
|
||||
|
||||
@node Terminal Management
|
||||
|
@ -1075,6 +1103,26 @@ environment variable is used.
|
|||
@node Utility Functions
|
||||
@subsection Utility Functions
|
||||
|
||||
@deftypefun int rl_save_state (struct readline_state *sp)
|
||||
Save a snapshot of Readline's internal state to @var{sp}.
|
||||
The contents of the @var{readline_state} structure are documented
|
||||
in @file{readline.h}.
|
||||
The caller is responsible for allocating the structure.
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun int rl_restore_state (struct readline_state *sp)
|
||||
Restore Readline's internal state to that stored in @var{sp}, which must
|
||||
have been saved by a call to @code{rl_save_state}.
|
||||
The contents of the @var{readline_state} structure are documented
|
||||
in @file{readline.h}.
|
||||
The caller is responsible for freeing the structure.
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun void rl_free (void *mem)
|
||||
Deallocate the memory pointed to by @var{mem}. @var{mem} must have been
|
||||
allocated by @code{malloc}.
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun void rl_replace_line (const char *text, int clear_undo)
|
||||
Replace the contents of @code{rl_line_buffer} with @var{text}.
|
||||
The point and mark are preserved, if possible.
|
||||
|
@ -1082,7 +1130,7 @@ If @var{clear_undo} is non-zero, the undo list associated with the
|
|||
current line is cleared.
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun int rl_extend_line_buffer (int len)
|
||||
@deftypefun void rl_extend_line_buffer (int len)
|
||||
Ensure that @code{rl_line_buffer} has enough space to hold @var{len}
|
||||
characters, possibly reallocating it if necessary.
|
||||
@end deftypefun
|
||||
|
@ -1109,6 +1157,9 @@ of strings, in argv format, such as a list of completion matches.
|
|||
is the length of the longest string in @code{matches}. This function uses
|
||||
the setting of @code{print-completions-horizontally} to select how the
|
||||
matches are displayed (@pxref{Readline Init File Syntax}).
|
||||
When displaying completions, this function sets the number of columns used
|
||||
for display to the value of @code{completion-display-width}, the value of
|
||||
the environment variable @env{COLUMNS}, or the screen width, in that order.
|
||||
@end deftypefun
|
||||
|
||||
The following are implemented as macros, defined in @code{chardefs.h}.
|
||||
|
@ -1392,6 +1443,13 @@ call @code{rl_resize_terminal()} or @code{rl_set_screen_size()} to force
|
|||
Readline to update its idea of the terminal size when a @code{SIGWINCH}
|
||||
is received.
|
||||
|
||||
@deftypefun void rl_echo_signal_char (int sig)
|
||||
If an application wishes to install its own signal handlers, but still
|
||||
have readline display characters that generate signals, calling this
|
||||
function with @var{sig} set to @code{SIGINT}, @code{SIGQUIT}, or
|
||||
@code{SIGTSTP} will display the character generating that signal.
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun void rl_resize_terminal (void)
|
||||
Update Readline's internal screen size by reading values from the kernel.
|
||||
@end deftypefun
|
||||
|
@ -1659,15 +1717,49 @@ from the array must be freed.
|
|||
|
||||
@deftypevar {rl_icppfunc_t *} rl_directory_completion_hook
|
||||
This function, if defined, is allowed to modify the directory portion
|
||||
of filenames Readline completes. It is called with the address of a
|
||||
string (the current directory name) as an argument, and may modify that string.
|
||||
of filenames Readline completes.
|
||||
It could be used to expand symbolic links or shell variables in pathnames.
|
||||
It is called with the address of a string (the current directory name) as an
|
||||
argument, and may modify that string.
|
||||
If the string is replaced with a new string, the old value should be freed.
|
||||
Any modified directory name should have a trailing slash.
|
||||
The modified value will be displayed as part of the completion, replacing
|
||||
The modified value will be used as part of the completion, replacing
|
||||
the directory portion of the pathname the user typed.
|
||||
It returns an integer that should be non-zero if the function modifies
|
||||
its directory argument.
|
||||
It could be used to expand symbolic links or shell variables in pathnames.
|
||||
At the least, even if no other expansion is performed, this function should
|
||||
remove any quote characters from the directory name, because its result will
|
||||
be passed directly to @code{opendir()}.
|
||||
The directory completion hook returns an integer that should be non-zero if
|
||||
the function modifies its directory argument.
|
||||
The function should not modify the directory argument if it returns 0.
|
||||
@end deftypevar
|
||||
|
||||
@ignore
|
||||
@deftypevar extern rl_icppfunc_t *rl_directory_rewrite_hook;
|
||||
If non-zero, this is the address of a function to call when completing
|
||||
a directory name. This function takes the address of the directory name
|
||||
to be modified as an argument. Unlike @code{rl_directory_completion_hook},
|
||||
it only modifies the directory name used in @code{opendir}, not what is
|
||||
displayed when the possible completions are printed or inserted. It is
|
||||
called before rl_directory_completion_hook.
|
||||
|
||||
I'm not happy with how this works yet, so it's undocumented.
|
||||
@end deftypevar
|
||||
@end ignore
|
||||
|
||||
@deftypevar {rl_dequote_func_t *} rl_filename_rewrite_hook
|
||||
If non-zero, this is the address of a function called when reading
|
||||
directory entries from the filesystem for completion and comparing
|
||||
them to the partial word to be completed. The function should
|
||||
perform any necesary application or system-specific conversion on
|
||||
the filename, such as converting between character sets or converting
|
||||
from a filesystem format to a character input format.
|
||||
The function takes two arguments: @var{fname}, the filename to be converted,
|
||||
and @var{fnlen}, its length in bytes.
|
||||
It must either return its first argument (if no conversion takes place)
|
||||
or the converted filename in newly-allocated memory. The converted
|
||||
form is used to compare against the word to be completed, and, if it
|
||||
matches, is added to the list of matches. Readline will free the
|
||||
allocated string.
|
||||
@end deftypevar
|
||||
|
||||
@deftypevar {rl_compdisp_func_t *} rl_completion_display_matches_hook
|
||||
|
@ -1822,6 +1914,15 @@ if the application's completion function returns no matches.
|
|||
It should be set only by an application's completion function.
|
||||
@end deftypevar
|
||||
|
||||
@deftypevar int rl_sort_completion_matches
|
||||
If an application sets this variable to 0, Readline will not sort the
|
||||
list of completions (which implies that it cannot remove any duplicate
|
||||
completions). The default value is 1, which means that Readline will
|
||||
sort the completions and, depending on the value of
|
||||
@code{rl_ignore_completion_duplicates}, will attempt to remove duplicate
|
||||
matches.
|
||||
@end deftypevar
|
||||
|
||||
@deftypevar int rl_completion_type
|
||||
Set to a character describing the type of completion Readline is currently
|
||||
attempting; see the description of @code{rl_complete_internal()}
|
||||
|
@ -1831,6 +1932,13 @@ completion function is called, allowing such functions to present
|
|||
the same interface as @code{rl_complete()}.
|
||||
@end deftypevar
|
||||
|
||||
@deftypevar int rl_completion_invoking_key
|
||||
Set to the final character in the key sequence that invoked one of the
|
||||
completion functions that call @code{rl_complete_internal()}. This is
|
||||
set to the appropriate value before any application-specific completion
|
||||
function is called.
|
||||
@end deftypevar
|
||||
|
||||
@deftypevar int rl_inhibit_completion
|
||||
If this variable is non-zero, completion is inhibited. The completion
|
||||
character will be inserted as any other bound to @code{self-insert}.
|
||||
|
@ -1851,27 +1959,51 @@ history list.
|
|||
GNU Readline library. This application interactively allows users
|
||||
to manipulate files and their modes. */
|
||||
|
||||
#include <stdio.h>
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/file.h>
|
||||
#ifdef HAVE_SYS_FILE_H
|
||||
# include <sys/file.h>
|
||||
#endif
|
||||
#include <sys/stat.h>
|
||||
#include <sys/errno.h>
|
||||
|
||||
#ifdef HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
|
||||
#if defined (HAVE_STRING_H)
|
||||
# include <string.h>
|
||||
#else /* !HAVE_STRING_H */
|
||||
# include <strings.h>
|
||||
#endif /* !HAVE_STRING_H */
|
||||
|
||||
#ifdef HAVE_STDLIB_H
|
||||
# include <stdlib.h>
|
||||
#endif
|
||||
|
||||
#include <time.h>
|
||||
|
||||
#include <readline/readline.h>
|
||||
#include <readline/history.h>
|
||||
|
||||
extern char *xmalloc ();
|
||||
extern char *xmalloc PARAMS((size_t));
|
||||
|
||||
/* The names of functions that actually do the manipulation. */
|
||||
int com_list __P((char *));
|
||||
int com_view __P((char *));
|
||||
int com_rename __P((char *));
|
||||
int com_stat __P((char *));
|
||||
int com_pwd __P((char *));
|
||||
int com_delete __P((char *));
|
||||
int com_help __P((char *));
|
||||
int com_cd __P((char *));
|
||||
int com_quit __P((char *));
|
||||
int com_list PARAMS((char *));
|
||||
int com_view PARAMS((char *));
|
||||
int com_rename PARAMS((char *));
|
||||
int com_stat PARAMS((char *));
|
||||
int com_pwd PARAMS((char *));
|
||||
int com_delete PARAMS((char *));
|
||||
int com_help PARAMS((char *));
|
||||
int com_cd PARAMS((char *));
|
||||
int com_quit PARAMS((char *));
|
||||
|
||||
/* A structure which contains information on the commands this program
|
||||
can understand. */
|
||||
|
@ -1904,12 +2036,12 @@ COMMAND *find_command ();
|
|||
/* The name of this program, as taken from argv[0]. */
|
||||
char *progname;
|
||||
|
||||
/* When non-zero, this means the user is done using this program. */
|
||||
/* When non-zero, this global means the user is done using this program. */
|
||||
int done;
|
||||
|
||||
char *
|
||||
dupstr (s)
|
||||
int s;
|
||||
char *s;
|
||||
@{
|
||||
char *r;
|
||||
|
||||
|
@ -2034,12 +2166,12 @@ stripwhite (string)
|
|||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
char *command_generator __P((const char *, int));
|
||||
char **fileman_completion __P((const char *, int, int));
|
||||
char *command_generator PARAMS((const char *, int));
|
||||
char **fileman_completion PARAMS((const char *, int, int));
|
||||
|
||||
/* Tell the GNU Readline library how to complete. We want to try to
|
||||
complete on command names if this is the first word in the line, or
|
||||
on filenames if not. */
|
||||
/* Tell the GNU Readline library how to complete. We want to try to complete
|
||||
on command names if this is the first word in the line, or on filenames
|
||||
if not. */
|
||||
initialize_readline ()
|
||||
@{
|
||||
/* Allow conditional parsing of the ~/.inputrc file. */
|
||||
|
@ -2049,11 +2181,11 @@ initialize_readline ()
|
|||
rl_attempted_completion_function = fileman_completion;
|
||||
@}
|
||||
|
||||
/* Attempt to complete on the contents of TEXT. START and END
|
||||
bound the region of rl_line_buffer that contains the word to
|
||||
complete. TEXT is the word to complete. We can use the entire
|
||||
contents of rl_line_buffer in case we want to do some simple
|
||||
parsing. Returnthe array of matches, or NULL if there aren't any. */
|
||||
/* Attempt to complete on the contents of TEXT. START and END bound the
|
||||
region of rl_line_buffer that contains the word to complete. TEXT is
|
||||
the word to complete. We can use the entire contents of rl_line_buffer
|
||||
in case we want to do some simple parsing. Return the array of matches,
|
||||
or NULL if there aren't any. */
|
||||
char **
|
||||
fileman_completion (text, start, end)
|
||||
const char *text;
|
||||
|
@ -2072,9 +2204,9 @@ fileman_completion (text, start, end)
|
|||
return (matches);
|
||||
@}
|
||||
|
||||
/* Generator function for command completion. STATE lets us
|
||||
know whether to start from scratch; without any state
|
||||
(i.e. STATE == 0), then we start at the top of the list. */
|
||||
/* Generator function for command completion. STATE lets us know whether
|
||||
to start from scratch; without any state (i.e. STATE == 0), then we
|
||||
start at the top of the list. */
|
||||
char *
|
||||
command_generator (text, state)
|
||||
const char *text;
|
||||
|
@ -2083,17 +2215,16 @@ command_generator (text, state)
|
|||
static int list_index, len;
|
||||
char *name;
|
||||
|
||||
/* If this is a new word to complete, initialize now. This
|
||||
includes saving the length of TEXT for efficiency, and
|
||||
initializing the index variable to 0. */
|
||||
/* If this is a new word to complete, initialize now. This includes
|
||||
saving the length of TEXT for efficiency, and initializing the index
|
||||
variable to 0. */
|
||||
if (!state)
|
||||
@{
|
||||
list_index = 0;
|
||||
len = strlen (text);
|
||||
@}
|
||||
|
||||
/* Return the next name which partially matches from the
|
||||
command list. */
|
||||
/* Return the next name which partially matches from the command list. */
|
||||
while (name = commands[list_index].name)
|
||||
@{
|
||||
list_index++;
|
||||
|
@ -2133,7 +2264,12 @@ com_view (arg)
|
|||
if (!valid_argument ("view", arg))
|
||||
return 1;
|
||||
|
||||
#if defined (__MSDOS__)
|
||||
/* more.com doesn't grok slashes in pathnames */
|
||||
sprintf (syscom, "less %s", arg);
|
||||
#else
|
||||
sprintf (syscom, "more %s", arg);
|
||||
#endif
|
||||
return (system (syscom));
|
||||
@}
|
||||
|
||||
|
@ -2160,7 +2296,8 @@ com_stat (arg)
|
|||
|
||||
printf ("Statistics for `%s':\n", arg);
|
||||
|
||||
printf ("%s has %d link%s, and is %d byte%s in length.\n", arg,
|
||||
printf ("%s has %d link%s, and is %d byte%s in length.\n",
|
||||
arg,
|
||||
finfo.st_nlink,
|
||||
(finfo.st_nlink == 1) ? "" : "s",
|
||||
finfo.st_size,
|
||||
|
@ -2249,8 +2386,7 @@ com_pwd (ignore)
|
|||
return 0;
|
||||
@}
|
||||
|
||||
/* The user wishes to quit using this program. Just set DONE
|
||||
non-zero. */
|
||||
/* The user wishes to quit using this program. Just set DONE non-zero. */
|
||||
com_quit (arg)
|
||||
char *arg;
|
||||
@{
|
||||
|
@ -2263,13 +2399,12 @@ too_dangerous (caller)
|
|||
char *caller;
|
||||
@{
|
||||
fprintf (stderr,
|
||||
"%s: Too dangerous for me to distribute.\n",
|
||||
"%s: Too dangerous for me to distribute. Write it yourself.\n",
|
||||
caller);
|
||||
fprintf (stderr, "Write it yourself.\n");
|
||||
@}
|
||||
|
||||
/* Return non-zero if ARG is a valid argument for CALLER,
|
||||
else print an error message and return zero. */
|
||||
/* Return non-zero if ARG is a valid argument for CALLER, else print
|
||||
an error message and return zero. */
|
||||
int
|
||||
valid_argument (caller, arg)
|
||||
char *caller, *arg;
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
@comment %**start of header (This is for running Texinfo on a region.)
|
||||
@setfilename rluser.info
|
||||
@comment %**end of header (This is for running Texinfo on a region.)
|
||||
@setchapternewpage odd
|
||||
|
||||
@ignore
|
||||
This file documents the end user interface to the GNU command line
|
||||
|
@ -10,7 +9,7 @@ use these features. There is a document entitled "readline.texinfo"
|
|||
which contains both end-user and programmer documentation for the
|
||||
GNU Readline Library.
|
||||
|
||||
Copyright (C) 1988-2005 Free Software Foundation, Inc.
|
||||
Copyright (C) 1988--2011 Free Software Foundation, Inc.
|
||||
|
||||
Authored by Brian Fox and Chet Ramey.
|
||||
|
||||
|
@ -48,6 +47,16 @@ command line editing interface.
|
|||
@ifset BashFeatures
|
||||
Command line editing is provided by the Readline library, which is
|
||||
used by several different programs, including Bash.
|
||||
Command line editing is enabled by default when using an interactive shell,
|
||||
unless the @option{--noediting} option is supplied at shell invocation.
|
||||
Line editing is also used when using the @option{-e} option to the
|
||||
@code{read} builtin command (@pxref{Bash Builtins}).
|
||||
By default, the line editing commands are similar to those of Emacs.
|
||||
A vi-style line editing interface is also available.
|
||||
Line editing can be enabled at any time using the @option{-o emacs} or
|
||||
@option{-o vi} options to the @code{set} builtin command
|
||||
(@pxref{The Set Builtin}), or disabled using the @option{+o emacs} or
|
||||
@option{+o vi} options to @code{set}.
|
||||
@end ifset
|
||||
|
||||
@menu
|
||||
|
@ -336,7 +345,9 @@ file is taken from the value of the shell variable @env{INPUTRC}. If
|
|||
@ifclear BashFeatures
|
||||
file is taken from the value of the environment variable @env{INPUTRC}. If
|
||||
@end ifclear
|
||||
that variable is unset, the default is @file{~/.inputrc}.
|
||||
that variable is unset, the default is @file{~/.inputrc}. If that
|
||||
file does not exist or cannot be read, the ultimate default is
|
||||
@file{/etc/inputrc}.
|
||||
|
||||
When a program which uses the Readline library starts up, the
|
||||
init file is read, and the key bindings are set.
|
||||
|
@ -420,11 +431,34 @@ The string to insert at the beginning of the line when the
|
|||
@code{insert-comment} command is executed. The default value
|
||||
is @code{"#"}.
|
||||
|
||||
@item completion-display-width
|
||||
@vindex completion-display-width
|
||||
The number of screen columns used to display possible matches
|
||||
when performing completion.
|
||||
The value is ignored if it is less than 0 or greater than the terminal
|
||||
screen width.
|
||||
A value of 0 will cause matches to be displayed one per line.
|
||||
The default value is -1.
|
||||
|
||||
@item completion-ignore-case
|
||||
@vindex completion-ignore-case
|
||||
If set to @samp{on}, Readline performs filename matching and completion
|
||||
in a case-insensitive fashion.
|
||||
The default value is @samp{off}.
|
||||
|
||||
@item completion-map-case
|
||||
@vindex completion-map-case
|
||||
If set to @samp{on}, and @var{completion-ignore-case} is enabled, Readline
|
||||
treats hyphens (@samp{-}) and underscores (@samp{_}) as equivalent when
|
||||
performing case-insensitive filename matching and completion.
|
||||
|
||||
@item completion-prefix-display-length
|
||||
@vindex completion-prefix-display-length
|
||||
The length in characters of the common prefix of a list of possible
|
||||
completions that is displayed without modification. When set to a
|
||||
value greater than zero, common prefixes longer than this value are
|
||||
replaced with an ellipsis when displaying possible completions.
|
||||
|
||||
@item completion-query-items
|
||||
@vindex completion-query-items
|
||||
The number of possible completions that determines when the user is
|
||||
|
@ -456,12 +490,23 @@ key bindings is used. By default, Readline starts up in Emacs editing
|
|||
mode, where the keystrokes are most similar to Emacs. This variable can be
|
||||
set to either @samp{emacs} or @samp{vi}.
|
||||
|
||||
@item echo-control-characters
|
||||
When set to @samp{on}, on operating systems that indicate they support it,
|
||||
readline echoes a character corresponding to a signal generated from the
|
||||
keyboard. The default is @samp{on}.
|
||||
|
||||
@item enable-keypad
|
||||
@vindex enable-keypad
|
||||
When set to @samp{on}, Readline will try to enable the application
|
||||
keypad when it is called. Some systems need this to enable the
|
||||
arrow keys. The default is @samp{off}.
|
||||
|
||||
@item enable-meta-key
|
||||
When set to @samp{on}, Readline will try to enable any meta modifier
|
||||
key the terminal claims to support when it is called. On many terminals,
|
||||
the meta key is used to send eight-bit characters.
|
||||
The default is @samp{on}.
|
||||
|
||||
@item expand-tilde
|
||||
@vindex expand-tilde
|
||||
If set to @samp{on}, tilde expansion is performed when Readline
|
||||
|
@ -469,10 +514,16 @@ attempts word completion. The default is @samp{off}.
|
|||
|
||||
@item history-preserve-point
|
||||
@vindex history-preserve-point
|
||||
If set to @samp{on}, the history code attempts to place point at the
|
||||
If set to @samp{on}, the history code attempts to place the point (the
|
||||
current cursor position) at the
|
||||
same location on each history line retrieved with @code{previous-history}
|
||||
or @code{next-history}. The default is @samp{off}.
|
||||
|
||||
@item history-size
|
||||
@vindex history-size
|
||||
Set the maximum number of history entries saved in the history list. If
|
||||
set to zero, the number of entries in the history list is not limited.
|
||||
|
||||
@item horizontal-scroll-mode
|
||||
@vindex horizontal-scroll-mode
|
||||
This variable can be set to either @samp{on} or @samp{off}. Setting it
|
||||
|
@ -535,10 +586,17 @@ The default is @samp{off}.
|
|||
@vindex match-hidden-files
|
||||
This variable, when set to @samp{on}, causes Readline to match files whose
|
||||
names begin with a @samp{.} (hidden files) when performing filename
|
||||
completion, unless the leading @samp{.} is
|
||||
completion.
|
||||
If set to @samp{off}, the leading @samp{.} must be
|
||||
supplied by the user in the filename to be completed.
|
||||
This variable is @samp{on} by default.
|
||||
|
||||
@item menu-complete-display-prefix
|
||||
@vindex menu-complete-display-prefix
|
||||
If set to @samp{on}, menu completion displays the common prefix of the
|
||||
list of possible completions (which may be empty) before cycling through
|
||||
the list. The default is @samp{off}.
|
||||
|
||||
@item output-meta
|
||||
@vindex output-meta
|
||||
If set to @samp{on}, Readline will display characters with the
|
||||
|
@ -556,6 +614,13 @@ If set to @samp{on}, Readline will display completions with matches
|
|||
sorted horizontally in alphabetical order, rather than down the screen.
|
||||
The default is @samp{off}.
|
||||
|
||||
@item revert-all-at-newline
|
||||
@vindex revert-all-at-newline
|
||||
If set to @samp{on}, Readline will undo all changes to history lines
|
||||
before returning when @code{accept-line} is executed. By default,
|
||||
history lines may be modified and retain individual undo lists across
|
||||
calls to @code{readline}. The default is @samp{off}.
|
||||
|
||||
@item show-all-if-ambiguous
|
||||
@vindex show-all-if-ambiguous
|
||||
This alters the default behavior of the completion functions. If
|
||||
|
@ -575,6 +640,20 @@ a common prefix) cause the matches to be listed immediately instead
|
|||
of ringing the bell.
|
||||
The default value is @samp{off}.
|
||||
|
||||
@item skip-completed-text
|
||||
@vindex skip-completed-text
|
||||
If set to @samp{on}, this alters the default completion behavior when
|
||||
inserting a single match into the line. It's only active when
|
||||
performing completion in the middle of a word. If enabled, readline
|
||||
does not insert characters from the completion that match characters
|
||||
after point in the word being completed, so portions of the word
|
||||
following the cursor are not duplicated.
|
||||
For instance, if this is enabled, attempting completion when the cursor
|
||||
is after the @samp{e} in @samp{Makefile} will result in @samp{Makefile}
|
||||
rather than @samp{Makefilefile}, assuming there is a single possible
|
||||
completion.
|
||||
The default value is @samp{off}.
|
||||
|
||||
@item visible-stats
|
||||
@vindex visible-stats
|
||||
If set to @samp{on}, a character denoting a file's type
|
||||
|
@ -593,9 +672,11 @@ the command does.
|
|||
Once you know the name of the command, simply place on a line
|
||||
in the init file the name of the key
|
||||
you wish to bind the command to, a colon, and then the name of the
|
||||
command. The name of the key
|
||||
can be expressed in different ways, depending on what you find most
|
||||
comfortable.
|
||||
command.
|
||||
There can be no space between the key name and the colon -- that will be
|
||||
interpreted as part of the key name.
|
||||
The name of the key can be expressed in different ways, depending on
|
||||
what you find most comfortable.
|
||||
|
||||
In addition to command names, readline allows keys to be bound
|
||||
to a string that is inserted when the key is pressed (a @var{macro}).
|
||||
|
@ -937,12 +1018,22 @@ Move forward a character.
|
|||
Move back a character.
|
||||
|
||||
@item forward-word (M-f)
|
||||
Move forward to the end of the next word. Words are composed of
|
||||
letters and digits.
|
||||
Move forward to the end of the next word.
|
||||
Words are composed of letters and digits.
|
||||
|
||||
@item backward-word (M-b)
|
||||
Move back to the start of the current or previous word. Words are
|
||||
composed of letters and digits.
|
||||
Move back to the start of the current or previous word.
|
||||
Words are composed of letters and digits.
|
||||
|
||||
@ifset BashFeatures
|
||||
@item shell-forward-word ()
|
||||
Move forward to the end of the next word.
|
||||
Words are delimited by non-quoted shell metacharacters.
|
||||
|
||||
@item shell-backward-word ()
|
||||
Move back to the start of the current or previous word.
|
||||
Words are delimited by non-quoted shell metacharacters.
|
||||
@end ifset
|
||||
|
||||
@item clear-screen (C-l)
|
||||
Clear the screen and redraw the current line,
|
||||
|
@ -1029,10 +1120,14 @@ as if the @samp{!@var{n}} history expansion had been specified.
|
|||
|
||||
@item yank-last-arg (M-. or M-_)
|
||||
Insert last argument to the previous command (the last word of the
|
||||
previous history entry). With an
|
||||
argument, behave exactly like @code{yank-nth-arg}.
|
||||
previous history entry).
|
||||
With a numeric argument, behave exactly like @code{yank-nth-arg}.
|
||||
Successive calls to @code{yank-last-arg} move back through the history
|
||||
list, inserting the last argument of each line in turn.
|
||||
list, inserting the last word (or the word specified by the argument to
|
||||
the first call) of each line in turn.
|
||||
Any numeric argument supplied to these successive calls determines
|
||||
the direction to move through the history. A negative argument switches
|
||||
the direction through the history (back or forward).
|
||||
The history expansion facilities are used to extract the last argument,
|
||||
as if the @samp{!$} history expansion had been specified.
|
||||
|
||||
|
@ -1138,6 +1233,17 @@ Word boundaries are the same as @code{forward-word}.
|
|||
Kill the word behind point.
|
||||
Word boundaries are the same as @code{backward-word}.
|
||||
|
||||
@ifset BashFeatures
|
||||
@item shell-kill-word ()
|
||||
Kill from point to the end of the current word, or if between
|
||||
words, to the end of the next word.
|
||||
Word boundaries are the same as @code{shell-forward-word}.
|
||||
|
||||
@item shell-backward-kill-word ()
|
||||
Kill the word behind point.
|
||||
Word boundaries are the same as @code{shell-backward-word}.
|
||||
@end ifset
|
||||
|
||||
@item unix-word-rubout (C-w)
|
||||
Kill the word behind point, using white space as a word boundary.
|
||||
The killed text is saved on the kill-ring.
|
||||
|
@ -1219,6 +1325,9 @@ The default is filename completion.
|
|||
|
||||
@item possible-completions (M-?)
|
||||
List the possible completions of the text before point.
|
||||
When displaying completions, Readline sets the number of columns used
|
||||
for display to the value of @code{completion-display-width}, the value of
|
||||
the environment variable @env{COLUMNS}, or the screen width, in that order.
|
||||
|
||||
@item insert-completions (M-*)
|
||||
Insert all completions of the text before point that would have
|
||||
|
@ -1238,6 +1347,11 @@ through the list.
|
|||
This command is intended to be bound to @key{TAB}, but is unbound
|
||||
by default.
|
||||
|
||||
@item menu-complete-backward ()
|
||||
Identical to @code{menu-complete}, but moves backward through the list
|
||||
of possible completions, as if @code{menu-complete} had been given a
|
||||
negative argument.
|
||||
|
||||
@item delete-char-or-list ()
|
||||
Deletes the character under the cursor if not at the beginning or
|
||||
end of the line (like @code{delete-char}).
|
||||
|
@ -1293,6 +1407,11 @@ Attempt completion on the text before point, comparing
|
|||
the text against lines from the history list for possible
|
||||
completion matches.
|
||||
|
||||
@item dabbrev-expand ()
|
||||
Attempt menu completion on the text before point, comparing
|
||||
the text against lines from the history list for possible
|
||||
completion matches.
|
||||
|
||||
@item complete-into-braces (M-@{)
|
||||
Perform filename completion and insert the list of possible completions
|
||||
enclosed within braces so the list is available to the shell
|
||||
|
@ -1372,6 +1491,15 @@ A character is read and point is moved to the previous occurrence
|
|||
of that character. A negative count searches for subsequent
|
||||
occurrences.
|
||||
|
||||
@item skip-csi-sequence ()
|
||||
Read enough characters to consume a multi-key sequence such as those
|
||||
defined for keys like Home and End. Such sequences begin with a
|
||||
Control Sequence Indicator (CSI), usually ESC-[. If this sequence is
|
||||
bound to "\e[", keys producing such sequences will have no effect
|
||||
unless explicitly bound to a readline command, instead of inserting
|
||||
stray characters into the editing buffer. This is unbound by default,
|
||||
but usually bound to ESC-[.
|
||||
|
||||
@item insert-comment (M-#)
|
||||
Without a numeric argument, the value of the @code{comment-begin}
|
||||
variable is inserted at the beginning of the current line.
|
||||
|
@ -1481,7 +1609,7 @@ editing mode.
|
|||
While the Readline library does not have a full set of @code{vi}
|
||||
editing functions, it does contain enough to allow simple editing
|
||||
of the line. The Readline @code{vi} mode behaves as specified in
|
||||
the @sc{posix} 1003.2 standard.
|
||||
the @sc{posix} standard.
|
||||
|
||||
@ifset BashFeatures
|
||||
In order to switch interactively between @code{emacs} and @code{vi}
|
||||
|
@ -1515,10 +1643,15 @@ the programmable completion facilities are invoked.
|
|||
First, the command name is identified.
|
||||
If a compspec has been defined for that command, the
|
||||
compspec is used to generate the list of possible completions for the word.
|
||||
If the command word is the empty string (completion attempted at the
|
||||
beginning of an empty line), any compspec defined with
|
||||
the @option{-E} option to @code{complete} is used.
|
||||
If the command word is a full pathname, a compspec for the full
|
||||
pathname is searched for first.
|
||||
If no compspec is found for the full pathname, an attempt is made to
|
||||
find a compspec for the portion following the final slash.
|
||||
If those searches do not result in a compspec, any compspec defined with
|
||||
the @option{-D} option to @code{complete} is used as the default.
|
||||
|
||||
Once a compspec has been found, it is used to generate the list of
|
||||
matching words.
|
||||
|
@ -1555,9 +1688,9 @@ completed, and the matching words become the possible completions.
|
|||
|
||||
After these matches have been generated, any shell function or command
|
||||
specified with the @option{-F} and @option{-C} options is invoked.
|
||||
When the command or function is invoked, the @env{COMP_LINE} and
|
||||
@env{COMP_POINT} variables are assigned values as described above
|
||||
(@pxref{Bash Variables}).
|
||||
When the command or function is invoked, the @env{COMP_LINE},
|
||||
@env{COMP_POINT}, @env{COMP_KEY}, and @env{COMP_TYPE} variables are
|
||||
assigned values as described above (@pxref{Bash Variables}).
|
||||
If a shell function is being invoked, the @env{COMP_WORDS} and
|
||||
@env{COMP_CWORD} variables are also set.
|
||||
When the function or command is invoked, the first argument is the
|
||||
|
@ -1570,7 +1703,7 @@ the matches.
|
|||
|
||||
Any function specified with @option{-F} is invoked first.
|
||||
The function may use any of the shell facilities, including the
|
||||
@code{compgen} builtin described below
|
||||
@code{compgen} and @code{compopt} builtins described below
|
||||
(@pxref{Programmable Completion Builtins}), to generate the matches.
|
||||
It must put the possible completions in the @env{COMPREPLY} array
|
||||
variable.
|
||||
|
@ -1622,6 +1755,30 @@ to completed names which are symbolic links to directories, subject to
|
|||
the value of the @var{mark-directories} Readline variable, regardless
|
||||
of the setting of the @var{mark-symlinked-directories} Readline variable.
|
||||
|
||||
There is some support for dynamically modifying completions. This is
|
||||
most useful when used in combination with a default completion specified
|
||||
with @option{-D}. It's possible for shell functions executed as completion
|
||||
handlers to indicate that completion should be retried by returning an
|
||||
exit status of 124. If a shell function returns 124, and changes
|
||||
the compspec associated with the command on which completion is being
|
||||
attempted (supplied as the first argument when the function is executed),
|
||||
programmable completion restarts from the beginning, with an
|
||||
attempt to find a new compspec for that command. This allows a set of
|
||||
completions to be built dynamically as completion is attempted, rather than
|
||||
being loaded all at once.
|
||||
|
||||
For instance, assuming that there is a library of compspecs, each kept in a
|
||||
file corresponding to the name of the command, the following default
|
||||
completion function would load completions dynamically:
|
||||
|
||||
@example
|
||||
_completion_loader()
|
||||
@{
|
||||
. "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
|
||||
@}
|
||||
complete -D -F _completion_loader
|
||||
@end example
|
||||
|
||||
@node Programmable Completion Builtins
|
||||
@section Programmable Completion Builtins
|
||||
@cindex completion builtins
|
||||
|
@ -1657,10 +1814,10 @@ matches were generated.
|
|||
@item complete
|
||||
@btindex complete
|
||||
@example
|
||||
@code{complete [-abcdefgjksuv] [-o @var{comp-option}] [-A @var{action}] [-G @var{globpat}] [-W @var{wordlist}]
|
||||
[-P @var{prefix}] [-S @var{suffix}] [-X @var{filterpat}] [-F @var{function}]
|
||||
[-C @var{command}] @var{name} [@var{name} @dots{}]}
|
||||
@code{complete -pr [@var{name} @dots{}]}
|
||||
@code{complete [-abcdefgjksuv] [-o @var{comp-option}] [-DE] [-A @var{action}] [-G @var{globpat}] [-W @var{wordlist}]
|
||||
[-F @var{function}] [-C @var{command}] [-X @var{filterpat}]
|
||||
[-P @var{prefix}] [-S @var{suffix}] @var{name} [@var{name} @dots{}]}
|
||||
@code{complete -pr [-DE] [@var{name} @dots{}]}
|
||||
@end example
|
||||
|
||||
Specify how arguments to each @var{name} should be completed.
|
||||
|
@ -1670,9 +1827,16 @@ reused as input.
|
|||
The @option{-r} option removes a completion specification for
|
||||
each @var{name}, or, if no @var{name}s are supplied, all
|
||||
completion specifications.
|
||||
The @option{-D} option indicates that the remaining options and actions should
|
||||
apply to the ``default'' command completion; that is, completion attempted
|
||||
on a command for which no completion has previously been defined.
|
||||
The @option{-E} option indicates that the remaining options and actions should
|
||||
apply to ``empty'' command completion; that is, completion attempted on a
|
||||
blank line.
|
||||
|
||||
The process of applying these completion specifications when word completion
|
||||
is attempted is described above (@pxref{Programmable Completion}).
|
||||
is attempted is described above (@pxref{Programmable Completion}). The
|
||||
@option{-D} option takes precedence over @option{-E}.
|
||||
|
||||
Other options, if specified, have the following meanings.
|
||||
The arguments to the @option{-G}, @option{-W}, and @option{-X} options
|
||||
|
@ -1702,9 +1866,10 @@ Perform directory name completion if the compspec generates no matches.
|
|||
|
||||
@item filenames
|
||||
Tell Readline that the compspec generates filenames, so it can perform any
|
||||
filename-specific processing (like adding a slash to directory names or
|
||||
suppressing trailing spaces). This option is intended to be used with
|
||||
shell functions specified with @option{-F}.
|
||||
filename-specific processing (like adding a slash to directory names
|
||||
quoting special characters, or suppressing trailing spaces).
|
||||
This option is intended to be used with shell functions specified
|
||||
with @option{-F}.
|
||||
|
||||
@item nospace
|
||||
Tell Readline not to append a space (the default) to words completed at
|
||||
|
@ -1798,17 +1963,6 @@ User names. May also be specified as @option{-u}.
|
|||
Names of all shell variables. May also be specified as @option{-v}.
|
||||
@end table
|
||||
|
||||
@item -G @var{globpat}
|
||||
The filename expansion pattern @var{globpat} is expanded to generate
|
||||
the possible completions.
|
||||
|
||||
@item -W @var{wordlist}
|
||||
The @var{wordlist} is split using the characters in the
|
||||
@env{IFS} special variable as delimiters, and each resultant word
|
||||
is expanded.
|
||||
The possible completions are the members of the resultant list which
|
||||
match the word being completed.
|
||||
|
||||
@item -C @var{command}
|
||||
@var{command} is executed in a subshell environment, and its output is
|
||||
used as the possible completions.
|
||||
|
@ -1819,13 +1973,9 @@ environment.
|
|||
When it finishes, the possible completions are retrieved from the value
|
||||
of the @env{COMPREPLY} array variable.
|
||||
|
||||
@item -X @var{filterpat}
|
||||
@var{filterpat} is a pattern as used for filename expansion.
|
||||
It is applied to the list of possible completions generated by the
|
||||
preceding options and arguments, and each completion matching
|
||||
@var{filterpat} is removed from the list.
|
||||
A leading @samp{!} in @var{filterpat} negates the pattern; in this
|
||||
case, any completion not matching @var{filterpat} is removed.
|
||||
@item -G @var{globpat}
|
||||
The filename expansion pattern @var{globpat} is expanded to generate
|
||||
the possible completions.
|
||||
|
||||
@item -P @var{prefix}
|
||||
@var{prefix} is added at the beginning of each possible completion
|
||||
|
@ -1834,6 +1984,21 @@ after all other options have been applied.
|
|||
@item -S @var{suffix}
|
||||
@var{suffix} is appended to each possible completion
|
||||
after all other options have been applied.
|
||||
|
||||
@item -W @var{wordlist}
|
||||
The @var{wordlist} is split using the characters in the
|
||||
@env{IFS} special variable as delimiters, and each resultant word
|
||||
is expanded.
|
||||
The possible completions are the members of the resultant list which
|
||||
match the word being completed.
|
||||
|
||||
@item -X @var{filterpat}
|
||||
@var{filterpat} is a pattern as used for filename expansion.
|
||||
It is applied to the list of possible completions generated by the
|
||||
preceding options and arguments, and each completion matching
|
||||
@var{filterpat} is removed from the list.
|
||||
A leading @samp{!} in @var{filterpat} negates the pattern; in this
|
||||
case, any completion not matching @var{filterpat} is removed.
|
||||
@end table
|
||||
|
||||
The return value is true unless an invalid option is supplied, an option
|
||||
|
@ -1842,5 +2007,31 @@ argument, an attempt is made to remove a completion specification for
|
|||
a @var{name} for which no specification exists, or
|
||||
an error occurs adding a completion specification.
|
||||
|
||||
@item compopt
|
||||
@btindex compopt
|
||||
@example
|
||||
@code{compopt} [-o @var{option}] [-DE] [+o @var{option}] [@var{name}]
|
||||
@end example
|
||||
Modify completion options for each @var{name} according to the
|
||||
@var{option}s, or for the currently-executing completion if no @var{name}s
|
||||
are supplied.
|
||||
If no @var{option}s are given, display the completion options for each
|
||||
@var{name} or the current completion.
|
||||
The possible values of @var{option} are those valid for the @code{complete}
|
||||
builtin described above.
|
||||
The @option{-D} option indicates that the remaining options should
|
||||
apply to the ``default'' command completion; that is, completion attempted
|
||||
on a command for which no completion has previously been defined.
|
||||
The @option{-E} option indicates that the remaining options should
|
||||
apply to ``empty'' command completion; that is, completion attempted on a
|
||||
blank line.
|
||||
|
||||
The @option{-D} option takes precedence over @option{-E}.
|
||||
|
||||
The return value is true unless an invalid option is supplied, an attempt
|
||||
is made to modify the options for a @var{name} for which no completion
|
||||
specification exists, or an output error occurs.
|
||||
|
||||
@end table
|
||||
|
||||
@end ifset
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
@settitle GNU Readline Library
|
||||
@comment %**end of header (This is for running Texinfo on a region.)
|
||||
|
||||
@setchapternewpage odd
|
||||
|
||||
@include version.texi
|
||||
|
||||
@copying
|
||||
|
@ -14,7 +12,7 @@ This manual describes the end user interface of the GNU Readline Library
|
|||
consistency of user interface across discrete programs which provide
|
||||
a command line interface.
|
||||
|
||||
Copyright @copyright{} 1988-2005 Free Software Foundation, Inc.
|
||||
Copyright @copyright{} 1988--2011 Free Software Foundation, Inc.
|
||||
|
||||
Permission is granted to make and distribute verbatim copies of
|
||||
this manual provided the copyright notice and this permission notice
|
||||
|
@ -22,15 +20,16 @@ are preserved on all copies.
|
|||
|
||||
@quotation
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.1 or
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license is
|
||||
included in the section entitled ``GNU Free Documentation License.''
|
||||
included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
(a) The FSF's Back-Cover Text is: You are free to copy and modify
|
||||
this GNU manual. Buying copies from GNU Press supports the FSF in
|
||||
developing GNU and promoting software freedom.''
|
||||
|
||||
(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
|
||||
this GNU Manual, like GNU software. Copies published by the Free
|
||||
Software Foundation raise funds for GNU development.''
|
||||
@end quotation
|
||||
@end copying
|
||||
|
||||
|
@ -70,18 +69,14 @@ programs which provide a command line interface.
|
|||
|
||||
@menu
|
||||
* Command Line Editing:: GNU Readline User's Manual.
|
||||
* Copying This Manual:: Copying This Manual.
|
||||
* GNU Free Documentation License:: License for copying this manual.
|
||||
@end menu
|
||||
@end ifnottex
|
||||
|
||||
@include rluser.texi
|
||||
|
||||
@node Copying This Manual
|
||||
@appendix Copying This Manual
|
||||
|
||||
@menu
|
||||
* GNU Free Documentation License:: License for copying this manual.
|
||||
@end menu
|
||||
@node GNU Free Documentation License
|
||||
@appendix GNU Free Documentation License
|
||||
|
||||
@include fdl.texi
|
||||
|
||||
|
|
|
@ -5,10 +5,10 @@
|
|||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001,
|
||||
# 2002, 2003 Free Software Foundation, Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -16,9 +16,7 @@
|
|||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, you can either send email to this
|
||||
# program's maintainer or write to: The Free Software Foundation,
|
||||
# Inc.; 59 Temple Place, Suite 330; Boston, MA 02111-1307, USA.
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Original author: Noah Friedman <friedman@gnu.org>.
|
||||
#
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
#
|
||||
# Copyright (C) 1999, 2000 Free Software Foundation, Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
|
@ -18,8 +18,7 @@
|
|||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#-##############################################################################
|
||||
|
||||
|
@ -3564,7 +3563,7 @@ INPUT_LINE: while ($_ = &next_line) {
|
|||
$name = &normalise_node($name);
|
||||
$level = $sec2level{$tag};
|
||||
# check for index
|
||||
$first_index_chapter = $name
|
||||
$first_index_chapter = $node
|
||||
if ($level == 1 && !$first_index_chapter &&
|
||||
$name =~ /index/i);
|
||||
if ($in_top && /heading/){
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
@ignore
|
||||
Copyright (C) 1988-2005 Free Software Foundation, Inc.
|
||||
Copyright (C) 1988-2011 Free Software Foundation, Inc.
|
||||
@end ignore
|
||||
|
||||
@set EDITION 5.1-beta1
|
||||
@set VERSION 5.1-beta1
|
||||
@set UPDATED 11 November 2005
|
||||
@set UPDATED-MONTH November 2005
|
||||
@set EDITION 6.2
|
||||
@set VERSION 6.2
|
||||
@set UPDATED September 6 2010
|
||||
@set UPDATED-MONTH September 2010
|
||||
|
||||
@set LASTCHANGE Fri Nov 11 19:50:51 EST 2005
|
||||
@set LASTCHANGE Mon Sep 6 22:07:10 EDT 2010
|
||||
|
|
|
@ -1,24 +1,23 @@
|
|||
/* emacs_keymap.c -- the keymap for emacs_mode in readline (). */
|
||||
|
||||
/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#if !defined (BUFSIZ)
|
||||
#include <stdio.h>
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2011-05-11 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
Imported readline 6.2, and upstream patch 001.
|
||||
|
||||
2006-04-24 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
Imported readline 5.1, and upstream patches 001-004.
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
# on which program is running, or what terminal is active.
|
||||
#
|
||||
|
||||
# Copyright (C) 1989-2002 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1989-2009 Free Software Foundation, Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -17,8 +17,8 @@
|
|||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
# In all programs, all terminals, make sure this is bound.
|
||||
"\C-x\C-r": re-read-init-file
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
#
|
||||
# This is the Makefile for the readline examples subdirectory.
|
||||
#
|
||||
# Copyright (C) 1994 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994,2008,2009 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -14,17 +14,33 @@
|
|||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
RL_LIBRARY_VERSION = @LIBVERSION@
|
||||
|
||||
SHELL = @MAKE_SHELL@
|
||||
RM = rm -f
|
||||
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
datarootdir = @datarootdir@
|
||||
|
||||
bindir = @bindir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = .:@srcdir@
|
||||
datadir = @datadir@
|
||||
VPATH = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
BUILD_DIR = .
|
||||
#BUILD_DIR = .
|
||||
BUILD_DIR = @BUILD_DIR@
|
||||
installdir = $(datadir)/readline
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
|
||||
EXEEXT = @EXEEXT@
|
||||
OBJEXT = @OBJEXT@
|
||||
|
||||
# Support an alternate destination root directory for package building
|
||||
DESTDIR =
|
||||
|
@ -51,31 +67,56 @@ TERMCAP_LIB = @TERMCAP_LIB@
|
|||
${RM} $@
|
||||
$(CC) $(CCFLAGS) -c $<
|
||||
|
||||
EXECUTABLES = fileman rltest rl rlcat rlversion histexamp
|
||||
OBJECTS = fileman.o rltest.o rl.o rlcat.o rlversion.o histexamp.o
|
||||
SOURCES = excallback.c fileman.c histexamp.c manexamp.c rl-fgets.c rl.c \
|
||||
rlcat.c rlevent.c rlptytest.c rltest.c rlversion.c
|
||||
|
||||
EXECUTABLES = fileman$(EXEEXT) rltest$(EXEEXT) rl$(EXEEXT) rlcat$(EXEEXT) \
|
||||
rlevent$(EXEEXT) rlversion$(EXEEXT) histexamp$(EXEEXT)
|
||||
OBJECTS = fileman.o rltest.o rl.o rlevent.o rlcat.o rlversion.o histexamp.o
|
||||
|
||||
all: $(EXECUTABLES)
|
||||
everything: all
|
||||
|
||||
rl: rl.o $(READLINE_LIB)
|
||||
check: rlversion$(EXEEXT)
|
||||
@echo Readline version: `rlversion$(EXEEXT)`
|
||||
|
||||
installdirs:
|
||||
-$(SHELL) $(top_srcdir)/support/mkdirs $(DESTDIR)$(installdir)
|
||||
|
||||
install: installdirs
|
||||
@for f in $(SOURCES); do \
|
||||
$(RM) $(DESTDIR)$(installdir)/$$f ; \
|
||||
$(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(installdir) ; \
|
||||
done
|
||||
|
||||
uninstall:
|
||||
@for f in $(SOURCES); do \
|
||||
$(RM) $(DESTDIR)$(installdir)/$$f ; \
|
||||
done
|
||||
-rmdir $(DESTDIR)$(installdir)
|
||||
|
||||
rl$(EXEEXT): rl.o $(READLINE_LIB)
|
||||
$(PURIFY) $(CC) $(LDFLAGS) -o $@ rl.o $(READLINE_LIB) $(TERMCAP_LIB)
|
||||
|
||||
rlcat: rlcat.o $(READLINE_LIB)
|
||||
rlcat$(EXEEXT): rlcat.o $(READLINE_LIB)
|
||||
$(PURIFY) $(CC) $(LDFLAGS) -o $@ rlcat.o $(READLINE_LIB) $(TERMCAP_LIB)
|
||||
|
||||
fileman: fileman.o $(READLINE_LIB)
|
||||
rlevent$(EXEEXT): rlevent.o $(READLINE_LIB)
|
||||
$(PURIFY) $(CC) $(LDFLAGS) -o $@ rlevent.o $(READLINE_LIB) $(TERMCAP_LIB)
|
||||
|
||||
fileman$(EXEEXT): fileman.o $(READLINE_LIB)
|
||||
$(PURIFY) $(CC) $(LDFLAGS) -o $@ fileman.o $(READLINE_LIB) $(TERMCAP_LIB)
|
||||
|
||||
rltest: rltest.o $(READLINE_LIB)
|
||||
rltest$(EXEEXT): rltest.o $(READLINE_LIB)
|
||||
$(PURIFY) $(CC) $(LDFLAGS) -o $@ rltest.o $(READLINE_LIB) $(TERMCAP_LIB)
|
||||
|
||||
rlptytest: rlptytest.o $(READLINE_LIB)
|
||||
rlptytest$(EXEEXT): rlptytest.o $(READLINE_LIB)
|
||||
$(PURIFY) $(CC) $(LDFLAGS) -o $@ rlptytest.o $(READLINE_LIB) $(TERMCAP_LIB)
|
||||
|
||||
rlversion: rlversion.o $(READLINE_LIB)
|
||||
rlversion$(EXEEXT): rlversion.o $(READLINE_LIB)
|
||||
$(CC) $(LDFLAGS) -o $@ rlversion.o $(READLINE_LIB) $(TERMCAP_LIB)
|
||||
|
||||
histexamp: histexamp.o $(HISTORY_LIB)
|
||||
histexamp$(EXEEXT): histexamp.o $(HISTORY_LIB)
|
||||
$(PURIFY) $(CC) $(LDFLAGS) -o $@ histexamp.o -lhistory $(TERMCAP_LIB)
|
||||
|
||||
clean mostlyclean:
|
||||
|
|
40
readline/examples/autoconf/BASH_CHECK_LIB_TERMCAP
Normal file
40
readline/examples/autoconf/BASH_CHECK_LIB_TERMCAP
Normal file
|
@ -0,0 +1,40 @@
|
|||
AC_DEFUN([BASH_CHECK_LIB_TERMCAP],
|
||||
[
|
||||
if test "X$bash_cv_termcap_lib" = "X"; then
|
||||
_bash_needmsg=yes
|
||||
else
|
||||
AC_MSG_CHECKING(which library has the termcap functions)
|
||||
_bash_needmsg=
|
||||
fi
|
||||
AC_CACHE_VAL(bash_cv_termcap_lib,
|
||||
[AC_CHECK_FUNC(tgetent, bash_cv_termcap_lib=libc,
|
||||
[AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap,
|
||||
[AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo,
|
||||
[AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses,
|
||||
[AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses,
|
||||
bash_cv_termcap_lib=gnutermcap)])])])])])
|
||||
if test "X$_bash_needmsg" = "Xyes"; then
|
||||
AC_MSG_CHECKING(which library has the termcap functions)
|
||||
fi
|
||||
AC_MSG_RESULT(using $bash_cv_termcap_lib)
|
||||
if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then
|
||||
LDFLAGS="$LDFLAGS -L./lib/termcap"
|
||||
TERMCAP_LIB="./lib/termcap/libtermcap.a"
|
||||
TERMCAP_DEP="./lib/termcap/libtermcap.a"
|
||||
elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then
|
||||
TERMCAP_LIB=-ltermcap
|
||||
TERMCAP_DEP=
|
||||
elif test $bash_cv_termcap_lib = libtinfo; then
|
||||
TERMCAP_LIB=-ltinfo
|
||||
TERMCAP_DEP=
|
||||
elif test $bash_cv_termcap_lib = libncurses; then
|
||||
TERMCAP_LIB=-lncurses
|
||||
TERMCAP_DEP=
|
||||
elif test $bash_cv_termcap_lib = libc; then
|
||||
TERMCAP_LIB=
|
||||
TERMCAP_DEP=
|
||||
else
|
||||
TERMCAP_LIB=-lcurses
|
||||
TERMCAP_DEP=
|
||||
fi
|
||||
])
|
118
readline/examples/autoconf/RL_LIB_READLINE_VERSION
Normal file
118
readline/examples/autoconf/RL_LIB_READLINE_VERSION
Normal file
|
@ -0,0 +1,118 @@
|
|||
dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB
|
||||
dnl require:
|
||||
dnl AC_PROG_CC
|
||||
dnl BASH_CHECK_LIB_TERMCAP
|
||||
|
||||
AC_DEFUN([RL_LIB_READLINE_VERSION],
|
||||
[
|
||||
AC_REQUIRE([BASH_CHECK_LIB_TERMCAP])
|
||||
|
||||
AC_MSG_CHECKING([version of installed readline library])
|
||||
|
||||
# What a pain in the ass this is.
|
||||
|
||||
# save cpp and ld options
|
||||
_save_CFLAGS="$CFLAGS"
|
||||
_save_LDFLAGS="$LDFLAGS"
|
||||
_save_LIBS="$LIBS"
|
||||
|
||||
# Don't set ac_cv_rl_prefix if the caller has already assigned a value. This
|
||||
# allows the caller to do something like $_rl_prefix=$withval if the user
|
||||
# specifies --with-installed-readline=PREFIX as an argument to configure
|
||||
|
||||
if test -z "$ac_cv_rl_prefix"; then
|
||||
test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix}
|
||||
fi
|
||||
|
||||
eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include
|
||||
eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib
|
||||
|
||||
LIBS="$LIBS -lreadline ${TERMCAP_LIB}"
|
||||
CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}"
|
||||
LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}"
|
||||
|
||||
AC_CACHE_VAL(ac_cv_rl_version,
|
||||
[AC_TRY_RUN([
|
||||
#include <stdio.h>
|
||||
#include <readline/readline.h>
|
||||
|
||||
extern int rl_gnu_readline_p;
|
||||
|
||||
main()
|
||||
{
|
||||
FILE *fp;
|
||||
fp = fopen("conftest.rlv", "w");
|
||||
if (fp == 0)
|
||||
exit(1);
|
||||
if (rl_gnu_readline_p != 1)
|
||||
fprintf(fp, "0.0\n");
|
||||
else
|
||||
fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0");
|
||||
fclose(fp);
|
||||
exit(0);
|
||||
}
|
||||
],
|
||||
ac_cv_rl_version=`cat conftest.rlv`,
|
||||
ac_cv_rl_version='0.0',
|
||||
ac_cv_rl_version='4.2')])
|
||||
|
||||
CFLAGS="$_save_CFLAGS"
|
||||
LDFLAGS="$_save_LDFLAGS"
|
||||
LIBS="$_save_LIBS"
|
||||
|
||||
RL_MAJOR=0
|
||||
RL_MINOR=0
|
||||
|
||||
# (
|
||||
case "$ac_cv_rl_version" in
|
||||
2*|3*|4*|5*|6*|7*|8*|9*)
|
||||
RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'`
|
||||
RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[[a-zA-Z]]*$::'`
|
||||
;;
|
||||
esac
|
||||
|
||||
# (((
|
||||
case $RL_MAJOR in
|
||||
[[0-9][0-9]]) _RL_MAJOR=$RL_MAJOR ;;
|
||||
[[0-9]]) _RL_MAJOR=0$RL_MAJOR ;;
|
||||
*) _RL_MAJOR=00 ;;
|
||||
esac
|
||||
|
||||
# (((
|
||||
case $RL_MINOR in
|
||||
[[0-9][0-9]]) _RL_MINOR=$RL_MINOR ;;
|
||||
[[0-9]]) _RL_MINOR=0$RL_MINOR ;;
|
||||
*) _RL_MINOR=00 ;;
|
||||
esac
|
||||
|
||||
RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}"
|
||||
|
||||
# Readline versions greater than 4.2 have these defines in readline.h
|
||||
|
||||
if test $ac_cv_rl_version = '0.0' ; then
|
||||
AC_MSG_WARN([Could not test version of installed readline library.])
|
||||
elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then
|
||||
# set these for use by the caller
|
||||
RL_PREFIX=$ac_cv_rl_prefix
|
||||
RL_LIBDIR=$ac_cv_rl_libdir
|
||||
RL_INCLUDEDIR=$ac_cv_rl_includedir
|
||||
AC_MSG_RESULT($ac_cv_rl_version)
|
||||
else
|
||||
|
||||
AC_DEFINE_UNQUOTED(RL_READLINE_VERSION, $RL_VERSION, [encoded version of the installed readline library])
|
||||
AC_DEFINE_UNQUOTED(RL_VERSION_MAJOR, $RL_MAJOR, [major version of installed readline library])
|
||||
AC_DEFINE_UNQUOTED(RL_VERSION_MINOR, $RL_MINOR, [minor version of installed readline library])
|
||||
|
||||
AC_SUBST(RL_VERSION)
|
||||
AC_SUBST(RL_MAJOR)
|
||||
AC_SUBST(RL_MINOR)
|
||||
|
||||
# set these for use by the caller
|
||||
RL_PREFIX=$ac_cv_rl_prefix
|
||||
RL_LIBDIR=$ac_cv_rl_libdir
|
||||
RL_INCLUDEDIR=$ac_cv_rl_includedir
|
||||
|
||||
AC_MSG_RESULT($ac_cv_rl_version)
|
||||
|
||||
fi
|
||||
])
|
76
readline/examples/autoconf/wi_LIB_READLINE
Normal file
76
readline/examples/autoconf/wi_LIB_READLINE
Normal file
|
@ -0,0 +1,76 @@
|
|||
dnl Borut Razem
|
||||
dnl
|
||||
dnl This macro checks for the presence of the readline library.
|
||||
dnl It works also in cross-compilation environment.
|
||||
dnl
|
||||
dnl To get it into the aclocal.m4 dnl file, do this:
|
||||
dnl aclocal -I . --verbose
|
||||
dnl
|
||||
dnl The --verbose will show all of the files that are searched
|
||||
dnl for .m4 macros.
|
||||
|
||||
AC_DEFUN([wi_LIB_READLINE], [
|
||||
dnl check for the readline.h header file
|
||||
|
||||
AC_CHECK_HEADER(readline/readline.h)
|
||||
|
||||
if test "$ac_cv_header_readline_readline_h" = yes; then
|
||||
dnl check the readline version
|
||||
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#include <stdio.h>
|
||||
#include <readline/readline.h>
|
||||
wi_LIB_READLINE_VERSION RL_VERSION_MAJOR RL_VERSION_MINOR
|
||||
EOF
|
||||
|
||||
wi_READLINE_VERSION=$($CPP $CPPFLAGS conftest.$ac_ext | sed -n -e "s/^wi_LIB_READLINE_VERSION *\([[0-9\]][[0-9\]]*\) *\([[0-9\]][[0-9\]]*\)$/\1.\2/p")
|
||||
rm -rf conftest*
|
||||
|
||||
if test -n "$wi_READLINE_VERSION"; then
|
||||
wi_MAJOR=$(expr $wi_READLINE_VERSION : '\([[0-9]][[0-9]]*\)\.')
|
||||
wi_MINOR=$(expr $wi_READLINE_VERSION : '[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*$\)')
|
||||
if test $wi_MINOR -lt 10; then
|
||||
wi_MINOR=$(expr $wi_MINOR \* 10)
|
||||
fi
|
||||
wi_READLINE_VERSION=$(expr $wi_MAJOR \* 100 + $wi_MINOR)
|
||||
else
|
||||
wi_READLINE_VERSION=-1
|
||||
fi
|
||||
|
||||
dnl check for the readline library
|
||||
|
||||
ac_save_LIBS="$LIBS"
|
||||
# Note: $LIBCURSES is permitted to be empty.
|
||||
|
||||
for LIBREADLINE in "-lreadline.dll" "-lreadline" "-lreadline $LIBCURSES" "-lreadline -ltermcap" "-lreadline -lncurses" "-lreadline -lcurses"
|
||||
do
|
||||
AC_MSG_CHECKING([for GNU Readline library $LIBREADLINE])
|
||||
|
||||
LIBS="$ac_save_LIBS $LIBREADLINE"
|
||||
|
||||
AC_TRY_LINK([
|
||||
/* includes */
|
||||
#include <stdio.h>
|
||||
#include <readline/readline.h>
|
||||
],[
|
||||
/* function-body */
|
||||
int dummy = rl_completion_append_character; /* rl_completion_append_character appeared in version 2.1 */
|
||||
readline(NULL);
|
||||
],[
|
||||
wi_cv_lib_readline=yes
|
||||
AC_MSG_RESULT(yes)
|
||||
],[
|
||||
wi_cv_lib_readline=no
|
||||
AC_MSG_RESULT(no)
|
||||
])
|
||||
|
||||
if test "$wi_cv_lib_readline" = yes; then
|
||||
AC_SUBST(LIBREADLINE)
|
||||
AC_DEFINE_UNQUOTED(HAVE_LIBREADLINE, $wi_READLINE_VERSION, [Readline])
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
LIBS="$ac_save_LIBS"
|
||||
fi
|
||||
])
|
|
@ -32,6 +32,9 @@ Let me know what you think.
|
|||
|
||||
Jeff
|
||||
*/
|
||||
/*
|
||||
Copyright (C) 1999 Jeff Solomon
|
||||
*/
|
||||
|
||||
#if defined (HAVE_CONFIG_H)
|
||||
#include <config.h>
|
||||
|
|
|
@ -1,22 +1,23 @@
|
|||
/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
|
||||
/* fileman.c - file manager example for readline library. */
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library (Readline), a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* fileman.c -- A tiny application which demonstrates how to use the
|
||||
GNU Readline library. This application interactively allows users
|
||||
|
@ -50,6 +51,8 @@
|
|||
# include <stdlib.h>
|
||||
#endif
|
||||
|
||||
#include <time.h>
|
||||
|
||||
#ifdef READLINE_LIBRARY
|
||||
# include "readline.h"
|
||||
# include "history.h"
|
||||
|
@ -58,7 +61,7 @@
|
|||
# include <readline/history.h>
|
||||
#endif
|
||||
|
||||
extern char *xmalloc ();
|
||||
extern char *xmalloc PARAMS((size_t));
|
||||
|
||||
/* The names of functions that actually do the manipulation. */
|
||||
int com_list PARAMS((char *));
|
||||
|
|
|
@ -1,22 +1,23 @@
|
|||
/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
|
||||
/* histexamp.c - history library example program. */
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library (Readline), a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
|
|
|
@ -1,24 +1,23 @@
|
|||
/* manexamp.c -- The examples which appear in the documentation are here. */
|
||||
|
||||
/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
This file is part of the GNU Readline Library (Readline), a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <readline/readline.h>
|
||||
|
|
|
@ -5,25 +5,24 @@
|
|||
* usage: rl [-p prompt] [-u unit] [-d default] [-n nchars]
|
||||
*/
|
||||
|
||||
/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
This file is part of the GNU Readline Library (Readline), a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#if defined (HAVE_CONFIG_H)
|
||||
# include <config.h>
|
||||
|
|
|
@ -4,25 +4,24 @@
|
|||
* usage: rlcat
|
||||
*/
|
||||
|
||||
/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
This file is part of the GNU Readline Library (Readline), a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#if defined (HAVE_CONFIG_H)
|
||||
# include <config.h>
|
||||
|
|
166
readline/examples/rlevent.c
Normal file
166
readline/examples/rlevent.c
Normal file
|
@ -0,0 +1,166 @@
|
|||
/*
|
||||
* rl - command-line interface to read a line from the standard input
|
||||
* (or another fd) using readline.
|
||||
*
|
||||
* usage: rl [-p prompt] [-u unit] [-d default] [-n nchars]
|
||||
*/
|
||||
|
||||
/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library (Readline), a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#if defined (HAVE_CONFIG_H)
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef HAVE_STDLIB_H
|
||||
# include <stdlib.h>
|
||||
#else
|
||||
extern void exit();
|
||||
#endif
|
||||
|
||||
#if defined (READLINE_LIBRARY)
|
||||
# include "posixstat.h"
|
||||
# include "readline.h"
|
||||
# include "history.h"
|
||||
#else
|
||||
# include <sys/stat.h>
|
||||
# include <readline/readline.h>
|
||||
# include <readline/history.h>
|
||||
#endif
|
||||
|
||||
extern int optind;
|
||||
extern char *optarg;
|
||||
|
||||
#if !defined (strchr) && !defined (__STDC__)
|
||||
extern char *strrchr();
|
||||
#endif
|
||||
|
||||
static char *progname;
|
||||
static char *deftext;
|
||||
|
||||
static int
|
||||
event_hook ()
|
||||
{
|
||||
fprintf (stderr, "ding!\n");
|
||||
sleep (1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
set_deftext ()
|
||||
{
|
||||
if (deftext)
|
||||
{
|
||||
rl_insert_text (deftext);
|
||||
deftext = (char *)NULL;
|
||||
rl_startup_hook = (rl_hook_func_t *)NULL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
usage()
|
||||
{
|
||||
fprintf (stderr, "%s: usage: %s [-p prompt] [-u unit] [-d default] [-n nchars]\n",
|
||||
progname, progname);
|
||||
}
|
||||
|
||||
int
|
||||
main (argc, argv)
|
||||
int argc;
|
||||
char **argv;
|
||||
{
|
||||
char *temp, *prompt;
|
||||
struct stat sb;
|
||||
int opt, fd, nch;
|
||||
FILE *ifp;
|
||||
|
||||
progname = strrchr(argv[0], '/');
|
||||
if (progname == 0)
|
||||
progname = argv[0];
|
||||
else
|
||||
progname++;
|
||||
|
||||
/* defaults */
|
||||
prompt = "readline$ ";
|
||||
fd = nch = 0;
|
||||
deftext = (char *)0;
|
||||
|
||||
while ((opt = getopt(argc, argv, "p:u:d:n:")) != EOF)
|
||||
{
|
||||
switch (opt)
|
||||
{
|
||||
case 'p':
|
||||
prompt = optarg;
|
||||
break;
|
||||
case 'u':
|
||||
fd = atoi(optarg);
|
||||
if (fd < 0)
|
||||
{
|
||||
fprintf (stderr, "%s: bad file descriptor `%s'\n", progname, optarg);
|
||||
exit (2);
|
||||
}
|
||||
break;
|
||||
case 'd':
|
||||
deftext = optarg;
|
||||
break;
|
||||
case 'n':
|
||||
nch = atoi(optarg);
|
||||
if (nch < 0)
|
||||
{
|
||||
fprintf (stderr, "%s: bad value for -n: `%s'\n", progname, optarg);
|
||||
exit (2);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
usage ();
|
||||
exit (2);
|
||||
}
|
||||
}
|
||||
|
||||
if (fd != 0)
|
||||
{
|
||||
if (fstat (fd, &sb) < 0)
|
||||
{
|
||||
fprintf (stderr, "%s: %d: bad file descriptor\n", progname, fd);
|
||||
exit (1);
|
||||
}
|
||||
ifp = fdopen (fd, "r");
|
||||
rl_instream = ifp;
|
||||
}
|
||||
|
||||
if (deftext && *deftext)
|
||||
rl_startup_hook = set_deftext;
|
||||
|
||||
if (nch > 0)
|
||||
rl_num_chars_to_read = nch;
|
||||
|
||||
rl_event_hook = event_hook;
|
||||
temp = readline (prompt);
|
||||
|
||||
/* Test for EOF. */
|
||||
if (temp == 0)
|
||||
exit (1);
|
||||
|
||||
printf ("%s\n", temp);
|
||||
exit (0);
|
||||
}
|
|
@ -1,14 +1,3 @@
|
|||
2009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
|
||||
* configure: Regenerate.
|
||||
|
||||
* configure.in: m4_include toplevel config/override.m4.
|
||||
* configure: Regenerate.
|
||||
|
||||
2009-07-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
|
||||
* configure.in: Correctly quote AC_PROGRAM_SOURCE definition.
|
||||
|
||||
2004-11-04 Per Bothner <per@bothner.com>
|
||||
|
||||
* pty.c: Import from screen-4.0.2.
|
||||
|
|
14
readline/examples/rlfe/ChangeLog.gdb
Normal file
14
readline/examples/rlfe/ChangeLog.gdb
Normal file
|
@ -0,0 +1,14 @@
|
|||
2011-05-11 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
Imported readline 6.2, and upstream patch 001.
|
||||
|
||||
2009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
|
||||
* configure: Regenerate.
|
||||
|
||||
* configure.in: m4_include toplevel config/override.m4.
|
||||
* configure: Regenerate.
|
||||
|
||||
2009-07-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
|
||||
* configure.in: Correctly quote AC_PROGRAM_SOURCE definition.
|
|
@ -25,7 +25,7 @@ CFLAGS = @CFLAGS@
|
|||
CPPFLAGS = @CPPFLAGS@
|
||||
#LDFLAGS = -L$(READLINE_DIR)
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBS = -lreadline -lhistory -lncurses
|
||||
LIBS = -lreadline -lhistory @LIBS@
|
||||
|
||||
CPP=@CPP@
|
||||
CPP_DEPEND=$(CC) -MM
|
||||
|
@ -55,7 +55,7 @@ rlfe-$(VERSION).tar.gz:
|
|||
tar czf $@ $(CFILES) $(HFILES) $(EXTRA_DIST)
|
||||
|
||||
.c.o:
|
||||
$(CC) -c -I. -I$(srcdir) $(M_CFLAGS) $(DEFS) $(OPTIONS) $(CFLAGS) $<
|
||||
$(CC) -c -I. -I$(srcdir) $(CPPFLAGS) $(M_CFLAGS) $(DEFS) $(OPTIONS) $(CFLAGS) $<
|
||||
|
||||
install_bin: .version screen
|
||||
-if [ -f $(DESTDIR)$(bindir)/$(SCREEN) ] && [ ! -f $(DESTDIR)$(bindir)/$(SCREEN).old ]; \
|
||||
|
@ -68,7 +68,6 @@ install_bin: .version screen
|
|||
(cd $(DESTDIR)$(bindir) && ln -sf $(SCREEN) screen)
|
||||
cp $(srcdir)/utf8encodings/?? $(DESTDIR)$(SCREENENCODINGS)
|
||||
|
||||
|
||||
uninstall: .version
|
||||
rm -f $(DESTDIR)$(bindir)/$(SCREEN)
|
||||
rm -f $(DESTDIR)$(bindir)/screen
|
||||
|
@ -170,6 +169,15 @@ depend.in: $(CFILES) term.h
|
|||
for i in $(CFILES); do echo $$i; $(CPP_DEPEND) $$i >> tmp_make; done
|
||||
mv tmp_make Makefile.in
|
||||
|
||||
Makefile makefile: config.status $(srcdir)/Makefile.in
|
||||
CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
config.status: $(srcdir)/configure
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
$(srcdir)/configure: $(srcdir)/configure.in
|
||||
cd $(srcdir) && autoconf
|
||||
|
||||
###############################################################################
|
||||
|
||||
### Dependencies:
|
||||
|
|
|
@ -373,3 +373,7 @@
|
|||
#undef PTYRANGE1
|
||||
|
||||
#define USEVARARGS
|
||||
|
||||
#undef HAVE_SYS_STROPTS_H
|
||||
|
||||
#undef HAVE_SYS_WAIT_H
|
||||
|
|
3783
readline/examples/rlfe/configure
vendored
3783
readline/examples/rlfe/configure
vendored
File diff suppressed because it is too large
Load diff
|
@ -437,4 +437,6 @@ main()
|
|||
|
||||
fi
|
||||
|
||||
AC_CHECK_HEADERS(sys/stropts.h sys/wait.h)
|
||||
|
||||
AC_OUTPUT(Makefile)
|
||||
|
|
|
@ -27,7 +27,14 @@
|
|||
#define __attribute__(x)
|
||||
#endif
|
||||
|
||||
#if !defined (__P)
|
||||
# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus)
|
||||
# define __P(protos) protos
|
||||
# else
|
||||
# define __P(protos) ()
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* pty.c */
|
||||
extern int OpenPTY __P((char **));
|
||||
extern void InitPTY __P((int));
|
||||
|
||||
|
|
|
@ -186,7 +186,7 @@ extern int errno;
|
|||
* terminal handling
|
||||
*/
|
||||
|
||||
#ifdef POSIX
|
||||
#if defined (POSIX) || defined (__FreeBSD__)
|
||||
# include <termios.h>
|
||||
# ifdef hpux
|
||||
# include <bsdtty.h>
|
||||
|
@ -527,4 +527,3 @@ typedef struct fd_set { int fds_bits[1]; } fd_set;
|
|||
* how many characters your pty's can buffer.
|
||||
*/
|
||||
#define IOSIZE 4096
|
||||
|
||||
|
|
|
@ -20,13 +20,15 @@
|
|||
*
|
||||
****************************************************************
|
||||
*/
|
||||
#include "config.h"
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include "config.h"
|
||||
#include <unistd.h>
|
||||
|
||||
#include "screen.h"
|
||||
|
||||
#ifndef sun
|
||||
|
@ -34,7 +36,7 @@
|
|||
#endif
|
||||
|
||||
/* for solaris 2.1, Unixware (SVR4.2) and possibly others */
|
||||
#ifdef HAVE_SVR4_PTYS
|
||||
#if defined (HAVE_SVR4_PTYS) && defined (HAVE_SYS_STROPTS_H)
|
||||
# include <sys/stropts.h>
|
||||
#endif
|
||||
|
||||
|
@ -384,4 +386,3 @@ char **ttyn;
|
|||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -73,6 +73,11 @@
|
|||
#include <termios.h>
|
||||
|
||||
#include "config.h"
|
||||
#include "extern.h"
|
||||
|
||||
#if defined (HAVE_SYS_WAIT_H)
|
||||
# include <sys/wait.h>
|
||||
#endif
|
||||
|
||||
#ifdef READLINE_LIBRARY
|
||||
# include "readline.h"
|
||||
|
@ -588,7 +593,7 @@ main(int argc, char** argv)
|
|||
}
|
||||
if (FD_ISSET (in_from_tty_fd, &in_set))
|
||||
{
|
||||
extern int readline_echoing_p;
|
||||
extern int _rl_echoing_p;
|
||||
struct termios term_master;
|
||||
int do_canon = 1;
|
||||
int do_icrnl = 1;
|
||||
|
@ -605,9 +610,9 @@ main(int argc, char** argv)
|
|||
{
|
||||
do_canon = (term_master.c_lflag & ICANON) != 0;
|
||||
do_icrnl = (term_master.c_lflag & ICRNL) != 0;
|
||||
readline_echoing_p = (term_master.c_lflag & ECHO) != 0;
|
||||
_rl_echoing_p = (term_master.c_lflag & ECHO) != 0;
|
||||
DPRINT1 ("echo,canon,crnl:%03d\n",
|
||||
100 * readline_echoing_p
|
||||
100 * _rl_echoing_p
|
||||
+ 10 * do_canon
|
||||
+ 1 * do_icrnl);
|
||||
}
|
||||
|
@ -757,7 +762,7 @@ static void set_edit_mode ()
|
|||
vi = 1;
|
||||
break;
|
||||
}
|
||||
shellopts = index (shellopts + 1, ':');
|
||||
shellopts = strchr (shellopts + 1, ':');
|
||||
}
|
||||
|
||||
if (!vi)
|
||||
|
|
|
@ -4,25 +4,24 @@
|
|||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
This file is part of the GNU Readline Library (Readline), a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#if defined (HAVE_CONFIG_H)
|
||||
#include <config.h>
|
||||
|
|
|
@ -2,25 +2,24 @@
|
|||
* rlversion -- print out readline's version number
|
||||
*/
|
||||
|
||||
/* Copyright (C) 1987-2002 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
This file is part of the GNU Readline Library (Readline), a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#if defined (HAVE_CONFIG_H)
|
||||
# include <config.h>
|
||||
|
|
|
@ -1,24 +1,24 @@
|
|||
/* funmap.c -- attach names to functions. */
|
||||
|
||||
/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1987-2010 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define READLINE_LIBRARY
|
||||
|
||||
#if defined (HAVE_CONFIG_H)
|
||||
|
@ -56,7 +56,7 @@ static int funmap_entry;
|
|||
program specific function. */
|
||||
int funmap_program_specific_entry_start;
|
||||
|
||||
static FUNMAP default_funmap[] = {
|
||||
static const FUNMAP default_funmap[] = {
|
||||
{ "abort", rl_abort },
|
||||
{ "accept-line", rl_newline },
|
||||
{ "arrow-key-prefix", rl_arrow_keys },
|
||||
|
@ -105,11 +105,13 @@ static FUNMAP default_funmap[] = {
|
|||
{ "kill-region", rl_kill_region },
|
||||
{ "kill-word", rl_kill_word },
|
||||
{ "menu-complete", rl_menu_complete },
|
||||
{ "menu-complete-backward", rl_backward_menu_complete },
|
||||
{ "next-history", rl_get_next_history },
|
||||
{ "non-incremental-forward-search-history", rl_noninc_forward_search },
|
||||
{ "non-incremental-reverse-search-history", rl_noninc_reverse_search },
|
||||
{ "non-incremental-forward-search-history-again", rl_noninc_forward_search_again },
|
||||
{ "non-incremental-reverse-search-history-again", rl_noninc_reverse_search_again },
|
||||
{ "old-menu-complete", rl_old_menu_complete },
|
||||
{ "overwrite-mode", rl_overwrite_mode },
|
||||
#ifdef __CYGWIN__
|
||||
{ "paste-from-clipboard", rl_paste_from_clipboard },
|
||||
|
@ -123,6 +125,7 @@ static FUNMAP default_funmap[] = {
|
|||
{ "revert-line", rl_revert_line },
|
||||
{ "self-insert", rl_insert },
|
||||
{ "set-mark", rl_set_mark },
|
||||
{ "skip-csi-sequence", rl_skip_csi_sequence },
|
||||
{ "start-kbd-macro", rl_start_kbd_macro },
|
||||
{ "tab-insert", rl_tab_insert },
|
||||
{ "tilde-expand", rl_tilde_expand },
|
||||
|
@ -145,6 +148,8 @@ static FUNMAP default_funmap[] = {
|
|||
{ "vi-append-mode", rl_vi_append_mode },
|
||||
{ "vi-arg-digit", rl_vi_arg_digit },
|
||||
{ "vi-back-to-indent", rl_vi_back_to_indent },
|
||||
{ "vi-backward-bigword", rl_vi_bWord },
|
||||
{ "vi-backward-word", rl_vi_bword },
|
||||
{ "vi-bWord", rl_vi_bWord },
|
||||
{ "vi-bword", rl_vi_bword },
|
||||
{ "vi-change-case", rl_vi_change_case },
|
||||
|
@ -157,12 +162,15 @@ static FUNMAP default_funmap[] = {
|
|||
{ "vi-delete-to", rl_vi_delete_to },
|
||||
{ "vi-eWord", rl_vi_eWord },
|
||||
{ "vi-editing-mode", rl_vi_editing_mode },
|
||||
{ "vi-end-bigword", rl_vi_eWord },
|
||||
{ "vi-end-word", rl_vi_end_word },
|
||||
{ "vi-eof-maybe", rl_vi_eof_maybe },
|
||||
{ "vi-eword", rl_vi_eword },
|
||||
{ "vi-fWord", rl_vi_fWord },
|
||||
{ "vi-fetch-history", rl_vi_fetch_history },
|
||||
{ "vi-first-print", rl_vi_first_print },
|
||||
{ "vi-forward-bigword", rl_vi_fWord },
|
||||
{ "vi-forward-word", rl_vi_fword },
|
||||
{ "vi-fword", rl_vi_fword },
|
||||
{ "vi-goto-mark", rl_vi_goto_mark },
|
||||
{ "vi-insert-beg", rl_vi_insert_beg },
|
||||
|
|
|
@ -1,24 +1,23 @@
|
|||
/* histexpand.c -- history expansion. */
|
||||
|
||||
/* Copyright (C) 1989-2004 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1989-2010 Free Software Foundation, Inc.
|
||||
|
||||
This file contains the GNU History Library (the Library), a set of
|
||||
This file contains the GNU History Library (History), a set of
|
||||
routines for managing the text of previously typed lines.
|
||||
|
||||
The Library is free software; you can redistribute it and/or modify
|
||||
History is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The Library is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
History is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with History. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define READLINE_LIBRARY
|
||||
|
||||
|
@ -56,8 +55,6 @@
|
|||
|
||||
typedef int _hist_search_func_t PARAMS((const char *, int));
|
||||
|
||||
extern int rl_byte_oriented; /* declared in mbutil.c */
|
||||
|
||||
static char error_pointer;
|
||||
|
||||
static char *subst_lhs;
|
||||
|
@ -66,9 +63,11 @@ static int subst_lhs_len;
|
|||
static int subst_rhs_len;
|
||||
|
||||
static char *get_history_word_specifier PARAMS((char *, char *, int *));
|
||||
static char *history_find_word PARAMS((char *, int));
|
||||
static int history_tokenize_word PARAMS((const char *, int));
|
||||
static char **history_tokenize_internal PARAMS((const char *, int, int *));
|
||||
static char *history_substring PARAMS((const char *, int, int));
|
||||
static void freewords PARAMS((char **, int));
|
||||
static char *history_find_word PARAMS((char *, int));
|
||||
|
||||
static char *quote_breaks PARAMS((char *));
|
||||
|
||||
|
@ -246,7 +245,7 @@ get_history_event (string, caller_index, delimiting_quote)
|
|||
|
||||
#define FAIL_SEARCH() \
|
||||
do { \
|
||||
history_offset = history_length; free (temp) ; return (char *)NULL; \
|
||||
history_offset = history_length; xfree (temp) ; return (char *)NULL; \
|
||||
} while (0)
|
||||
|
||||
/* If there is no search string, try to use the previous search string,
|
||||
|
@ -255,7 +254,7 @@ get_history_event (string, caller_index, delimiting_quote)
|
|||
{
|
||||
if (search_string)
|
||||
{
|
||||
free (temp);
|
||||
xfree (temp);
|
||||
temp = savestring (search_string);
|
||||
}
|
||||
else
|
||||
|
@ -286,7 +285,7 @@ get_history_event (string, caller_index, delimiting_quote)
|
|||
search_match = history_find_word (entry->line, local_index);
|
||||
}
|
||||
else
|
||||
free (temp);
|
||||
xfree (temp);
|
||||
|
||||
return (entry->line);
|
||||
}
|
||||
|
@ -306,16 +305,20 @@ get_history_event (string, caller_index, delimiting_quote)
|
|||
/* Extract the contents of STRING as if it is enclosed in single quotes.
|
||||
SINDEX, when passed in, is the offset of the character immediately
|
||||
following the opening single quote; on exit, SINDEX is left pointing
|
||||
to the closing single quote. */
|
||||
to the closing single quote. FLAGS currently used to allow backslash
|
||||
to escape a single quote (e.g., for bash $'...'). */
|
||||
static void
|
||||
hist_string_extract_single_quoted (string, sindex)
|
||||
hist_string_extract_single_quoted (string, sindex, flags)
|
||||
char *string;
|
||||
int *sindex;
|
||||
int *sindex, flags;
|
||||
{
|
||||
register int i;
|
||||
|
||||
for (i = *sindex; string[i] && string[i] != '\''; i++)
|
||||
;
|
||||
{
|
||||
if ((flags & 1) && string[i] == '\\' && string[i+1])
|
||||
i++;
|
||||
}
|
||||
|
||||
*sindex = i;
|
||||
}
|
||||
|
@ -505,7 +508,7 @@ postproc_subst_rhs ()
|
|||
}
|
||||
}
|
||||
new[j] = '\0';
|
||||
free (subst_rhs);
|
||||
xfree (subst_rhs);
|
||||
subst_rhs = new;
|
||||
subst_rhs_len = j;
|
||||
}
|
||||
|
@ -564,12 +567,12 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line)
|
|||
#if defined (HANDLE_MULTIBYTE)
|
||||
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
|
||||
{
|
||||
int c, l;
|
||||
int ch, l;
|
||||
l = _rl_find_prev_mbchar (string, i, MB_FIND_ANY);
|
||||
c = string[l];
|
||||
ch = string[l];
|
||||
/* XXX - original patch had i - 1 ??? If i == 0 it would fail. */
|
||||
if (i && (c == '\'' || c == '"'))
|
||||
quoted_search_delimiter = c;
|
||||
if (i && (ch == '\'' || ch == '"'))
|
||||
quoted_search_delimiter = ch;
|
||||
}
|
||||
else
|
||||
#endif /* HANDLE_MULTIBYTE */
|
||||
|
@ -582,7 +585,7 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line)
|
|||
if (event == 0)
|
||||
{
|
||||
*ret_string = hist_error (string, start, i, EVENT_NOT_FOUND);
|
||||
free (result);
|
||||
xfree (result);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
|
@ -596,7 +599,7 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line)
|
|||
if (word_spec == (char *)&error_pointer)
|
||||
{
|
||||
*ret_string = hist_error (string, starting_index, i, BAD_WORD_SPEC);
|
||||
free (result);
|
||||
xfree (result);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
|
@ -629,8 +632,8 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line)
|
|||
{
|
||||
default:
|
||||
*ret_string = hist_error (string, i+1, i+2, BAD_MODIFIER);
|
||||
free (result);
|
||||
free (temp);
|
||||
xfree (result);
|
||||
xfree (temp);
|
||||
return -1;
|
||||
|
||||
case 'q':
|
||||
|
@ -655,7 +658,7 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line)
|
|||
{
|
||||
tstr++;
|
||||
t = savestring (tstr);
|
||||
free (temp);
|
||||
xfree (temp);
|
||||
temp = t;
|
||||
}
|
||||
break;
|
||||
|
@ -680,7 +683,7 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line)
|
|||
if (tstr)
|
||||
{
|
||||
t = savestring (tstr);
|
||||
free (temp);
|
||||
xfree (temp);
|
||||
temp = t;
|
||||
}
|
||||
break;
|
||||
|
@ -756,8 +759,8 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line)
|
|||
if (subst_lhs_len == 0)
|
||||
{
|
||||
*ret_string = hist_error (string, starting_index, i, NO_PREV_SUBST);
|
||||
free (result);
|
||||
free (temp);
|
||||
xfree (result);
|
||||
xfree (temp);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -766,8 +769,8 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line)
|
|||
if (subst_lhs_len > l_temp)
|
||||
{
|
||||
*ret_string = hist_error (string, starting_index, i, SUBST_FAILED);
|
||||
free (result);
|
||||
free (temp);
|
||||
xfree (result);
|
||||
xfree (temp);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
|
@ -808,7 +811,7 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line)
|
|||
temp + si + subst_lhs_len,
|
||||
l_temp - (si + subst_lhs_len));
|
||||
new_event[len] = '\0';
|
||||
free (temp);
|
||||
xfree (temp);
|
||||
temp = new_event;
|
||||
|
||||
failed = 0;
|
||||
|
@ -844,8 +847,8 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line)
|
|||
continue; /* don't want to increment i */
|
||||
|
||||
*ret_string = hist_error (string, starting_index, i, SUBST_FAILED);
|
||||
free (result);
|
||||
free (temp);
|
||||
xfree (result);
|
||||
xfree (temp);
|
||||
return (-1);
|
||||
}
|
||||
}
|
||||
|
@ -866,7 +869,7 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line)
|
|||
else
|
||||
x = savestring (temp);
|
||||
|
||||
free (temp);
|
||||
xfree (temp);
|
||||
temp = x;
|
||||
}
|
||||
|
||||
|
@ -874,7 +877,7 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line)
|
|||
if (n >= result_len)
|
||||
result = (char *)xrealloc (result, n + 2);
|
||||
strcpy (result, temp);
|
||||
free (temp);
|
||||
xfree (temp);
|
||||
|
||||
*end_index_ptr = i;
|
||||
*ret_string = result;
|
||||
|
@ -925,7 +928,7 @@ history_expand (hstring, output)
|
|||
char **output;
|
||||
{
|
||||
register int j;
|
||||
int i, r, l, passc, cc, modified, eindex, only_printing, dquote;
|
||||
int i, r, l, passc, cc, modified, eindex, only_printing, dquote, flag;
|
||||
char *string;
|
||||
|
||||
/* The output string, and its length. */
|
||||
|
@ -1017,7 +1020,7 @@ history_expand (hstring, output)
|
|||
}
|
||||
else if (string[i] == history_expansion_char)
|
||||
{
|
||||
if (!cc || member (cc, history_no_expand_chars))
|
||||
if (cc == 0 || member (cc, history_no_expand_chars))
|
||||
continue;
|
||||
/* If the calling application has set
|
||||
history_inhibit_expansion_function to a function that checks
|
||||
|
@ -1045,8 +1048,9 @@ history_expand (hstring, output)
|
|||
else if (dquote == 0 && history_quotes_inhibit_expansion && string[i] == '\'')
|
||||
{
|
||||
/* If this is bash, single quotes inhibit history expansion. */
|
||||
flag = (i > 0 && string[i - 1] == '$');
|
||||
i++;
|
||||
hist_string_extract_single_quoted (string, &i);
|
||||
hist_string_extract_single_quoted (string, &i, flag);
|
||||
}
|
||||
else if (history_quotes_inhibit_expansion && string[i] == '\\')
|
||||
{
|
||||
|
@ -1060,7 +1064,7 @@ history_expand (hstring, output)
|
|||
|
||||
if (string[i] != history_expansion_char)
|
||||
{
|
||||
free (result);
|
||||
xfree (result);
|
||||
*output = savestring (string);
|
||||
return (0);
|
||||
}
|
||||
|
@ -1097,7 +1101,7 @@ history_expand (hstring, output)
|
|||
if (strlen (mb) > 1)
|
||||
{
|
||||
ADD_STRING (mb);
|
||||
break;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
#endif /* HANDLE_MULTIBYTE */
|
||||
|
@ -1131,15 +1135,16 @@ history_expand (hstring, output)
|
|||
{
|
||||
int quote, slen;
|
||||
|
||||
flag = (i > 0 && string[i - 1] == '$');
|
||||
quote = i++;
|
||||
hist_string_extract_single_quoted (string, &i);
|
||||
hist_string_extract_single_quoted (string, &i, flag);
|
||||
|
||||
slen = i - quote + 2;
|
||||
temp = (char *)xmalloc (slen);
|
||||
strncpy (temp, string + quote, slen);
|
||||
temp[slen - 1] = '\0';
|
||||
ADD_STRING (temp);
|
||||
free (temp);
|
||||
xfree (temp);
|
||||
}
|
||||
else
|
||||
ADD_CHAR (string[i]);
|
||||
|
@ -1152,7 +1157,7 @@ history_expand (hstring, output)
|
|||
temp = (char *)xmalloc (l - i + 1);
|
||||
strcpy (temp, string + i);
|
||||
ADD_STRING (temp);
|
||||
free (temp);
|
||||
xfree (temp);
|
||||
i = l;
|
||||
}
|
||||
else
|
||||
|
@ -1165,7 +1170,8 @@ history_expand (hstring, output)
|
|||
/* If the history_expansion_char is followed by one of the
|
||||
characters in history_no_expand_chars, then it is not a
|
||||
candidate for expansion of any kind. */
|
||||
if (member (cc, history_no_expand_chars))
|
||||
if (cc == 0 || member (cc, history_no_expand_chars) ||
|
||||
(history_inhibit_expansion_function && (*history_inhibit_expansion_function) (string, i)))
|
||||
{
|
||||
ADD_CHAR (string[i]);
|
||||
break;
|
||||
|
@ -1184,7 +1190,7 @@ history_expand (hstring, output)
|
|||
temp = (char *)xmalloc (1 + strlen (result));
|
||||
strcpy (temp, result);
|
||||
ADD_STRING (temp);
|
||||
free (temp);
|
||||
xfree (temp);
|
||||
}
|
||||
i++;
|
||||
break;
|
||||
|
@ -1195,9 +1201,9 @@ history_expand (hstring, output)
|
|||
if (r < 0)
|
||||
{
|
||||
*output = temp;
|
||||
free (result);
|
||||
xfree (result);
|
||||
if (string != hstring)
|
||||
free (string);
|
||||
xfree (string);
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
|
@ -1207,7 +1213,7 @@ history_expand (hstring, output)
|
|||
modified++;
|
||||
if (*temp)
|
||||
ADD_STRING (temp);
|
||||
free (temp);
|
||||
xfree (temp);
|
||||
}
|
||||
only_printing = r == 1;
|
||||
i = eindex;
|
||||
|
@ -1218,7 +1224,7 @@ history_expand (hstring, output)
|
|||
|
||||
*output = result;
|
||||
if (string != hstring)
|
||||
free (string);
|
||||
xfree (string);
|
||||
|
||||
if (only_printing)
|
||||
{
|
||||
|
@ -1399,8 +1405,8 @@ history_arg_extract (first, last, string)
|
|||
}
|
||||
|
||||
for (i = 0; i < len; i++)
|
||||
free (list[i]);
|
||||
free (list);
|
||||
xfree (list[i]);
|
||||
xfree (list);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
@ -1411,10 +1417,10 @@ history_tokenize_word (string, ind)
|
|||
int ind;
|
||||
{
|
||||
register int i;
|
||||
int delimiter;
|
||||
int delimiter, nestdelim, delimopen;
|
||||
|
||||
i = ind;
|
||||
delimiter = 0;
|
||||
delimiter = nestdelim = 0;
|
||||
|
||||
if (member (string[i], "()\n"))
|
||||
{
|
||||
|
@ -1430,20 +1436,34 @@ history_tokenize_word (string, ind)
|
|||
{
|
||||
if (peek == '<' && string[i + 2] == '-')
|
||||
i++;
|
||||
else if (peek == '<' && string[i + 2] == '<')
|
||||
i++;
|
||||
i += 2;
|
||||
return i;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((peek == '&' && (string[i] == '>' || string[i] == '<')) ||
|
||||
(peek == '>' && string[i] == '&') ||
|
||||
(peek == '(' && (string[i] == '>' || string[i] == '<')) || /* ) */
|
||||
(peek == '(' && string[i] == '$')) /* ) */
|
||||
else if ((peek == '&' && (string[i] == '>' || string[i] == '<')) ||
|
||||
(peek == '>' && string[i] == '&'))
|
||||
{
|
||||
i += 2;
|
||||
return i;
|
||||
}
|
||||
/* XXX - separated out for later -- bash-4.2 */
|
||||
else if ((peek == '(' && (string[i] == '>' || string[i] == '<')) || /* ) */
|
||||
(peek == '(' && string[i] == '$')) /*)*/
|
||||
{
|
||||
i += 2;
|
||||
delimopen = '(';
|
||||
delimiter = ')';
|
||||
nestdelim = 1;
|
||||
goto get_word;
|
||||
}
|
||||
#if 0
|
||||
else if (peek == '\'' && string[i] == '$')
|
||||
{
|
||||
i += 2; /* XXX */
|
||||
return i;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (string[i] != '$')
|
||||
{
|
||||
|
@ -1452,9 +1472,25 @@ history_tokenize_word (string, ind)
|
|||
}
|
||||
}
|
||||
|
||||
/* same code also used for $(...)/<(...)/>(...) above */
|
||||
if (member (string[i], "!@?+*"))
|
||||
{
|
||||
int peek = string[i + 1];
|
||||
|
||||
if (peek == '(') /*)*/
|
||||
{
|
||||
/* Shell extended globbing patterns */
|
||||
i += 2;
|
||||
delimopen = '(';
|
||||
delimiter = ')'; /* XXX - not perfect */
|
||||
nestdelim = 1;
|
||||
}
|
||||
}
|
||||
|
||||
get_word:
|
||||
/* Get word from string + i; */
|
||||
|
||||
if (member (string[i], HISTORY_QUOTE_CHARACTERS))
|
||||
if (delimiter == 0 && member (string[i], HISTORY_QUOTE_CHARACTERS))
|
||||
delimiter = string[i++];
|
||||
|
||||
for (; string[i]; i++)
|
||||
|
@ -1472,16 +1508,31 @@ history_tokenize_word (string, ind)
|
|||
continue;
|
||||
}
|
||||
|
||||
/* delimiter must be set and set to something other than a quote if
|
||||
nestdelim is set, so these tests are safe. */
|
||||
if (nestdelim && string[i] == delimopen)
|
||||
{
|
||||
nestdelim++;
|
||||
continue;
|
||||
}
|
||||
if (nestdelim && string[i] == delimiter)
|
||||
{
|
||||
nestdelim--;
|
||||
if (nestdelim == 0)
|
||||
delimiter = 0;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (delimiter && string[i] == delimiter)
|
||||
{
|
||||
delimiter = 0;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!delimiter && (member (string[i], history_word_delimiters)))
|
||||
if (delimiter == 0 && (member (string[i], history_word_delimiters)))
|
||||
break;
|
||||
|
||||
if (!delimiter && member (string[i], HISTORY_QUOTE_CHARACTERS))
|
||||
if (delimiter == 0 && member (string[i], HISTORY_QUOTE_CHARACTERS))
|
||||
delimiter = string[i];
|
||||
}
|
||||
|
||||
|
@ -1569,6 +1620,18 @@ history_tokenize (string)
|
|||
return (history_tokenize_internal (string, -1, (int *)NULL));
|
||||
}
|
||||
|
||||
/* Free members of WORDS from START to an empty string */
|
||||
static void
|
||||
freewords (words, start)
|
||||
char **words;
|
||||
int start;
|
||||
{
|
||||
register int i;
|
||||
|
||||
for (i = start; words[i]; i++)
|
||||
xfree (words[i]);
|
||||
}
|
||||
|
||||
/* Find and return the word which contains the character at index IND
|
||||
in the history line LINE. Used to save the word matched by the
|
||||
last history !?string? search. */
|
||||
|
@ -1582,12 +1645,16 @@ history_find_word (line, ind)
|
|||
|
||||
words = history_tokenize_internal (line, ind, &wind);
|
||||
if (wind == -1 || words == 0)
|
||||
{
|
||||
if (words)
|
||||
freewords (words, 0);
|
||||
FREE (words);
|
||||
return ((char *)NULL);
|
||||
}
|
||||
s = words[wind];
|
||||
for (i = 0; i < wind; i++)
|
||||
free (words[i]);
|
||||
for (i = wind + 1; words[i]; i++)
|
||||
free (words[i]);
|
||||
free (words);
|
||||
xfree (words[i]);
|
||||
freewords (words, wind + 1);
|
||||
xfree (words);
|
||||
return s;
|
||||
}
|
||||
|
|
|
@ -1,24 +1,23 @@
|
|||
/* histfile.c - functions to manipulate the history file. */
|
||||
|
||||
/* Copyright (C) 1989-2003 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1989-2010 Free Software Foundation, Inc.
|
||||
|
||||
This file contains the GNU History Library (the Library), a set of
|
||||
This file contains the GNU History Library (History), a set of
|
||||
routines for managing the text of previously typed lines.
|
||||
|
||||
The Library is free software; you can redistribute it and/or modify
|
||||
History is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The Library is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
History is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with History. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* The goal is to make the implementation transparent, so that you
|
||||
don't have to know what data types are used, just what functions
|
||||
|
@ -53,7 +52,9 @@
|
|||
# include <unistd.h>
|
||||
#endif
|
||||
|
||||
#if defined (__EMX__) || defined (__CYGWIN__)
|
||||
#include <ctype.h>
|
||||
|
||||
#if defined (__EMX__)
|
||||
# undef HAVE_MMAP
|
||||
#endif
|
||||
|
||||
|
@ -103,7 +104,7 @@ int history_write_timestamps = 0;
|
|||
|
||||
/* Does S look like the beginning of a history timestamp entry? Placeholder
|
||||
for more extensive tests. */
|
||||
#define HIST_TIMESTAMP_START(s) (*(s) == history_comment_char)
|
||||
#define HIST_TIMESTAMP_START(s) (*(s) == history_comment_char && isdigit ((s)[1]) )
|
||||
|
||||
/* Return the string that should be used in the place of this
|
||||
filename. This only matters when you don't specify the
|
||||
|
@ -125,8 +126,12 @@ history_filename (filename)
|
|||
|
||||
if (home == 0)
|
||||
{
|
||||
#if 0
|
||||
home = ".";
|
||||
home_len = 1;
|
||||
#else
|
||||
return (NULL);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
home_len = strlen (home);
|
||||
|
@ -178,7 +183,7 @@ read_history_range (filename, from, to)
|
|||
|
||||
buffer = last_ts = (char *)NULL;
|
||||
input = history_filename (filename);
|
||||
file = open (input, O_RDONLY|O_BINARY, 0666);
|
||||
file = input ? open (input, O_RDONLY|O_BINARY, 0666) : -1;
|
||||
|
||||
if ((file < 0) || (fstat (file, &finfo) == -1))
|
||||
goto error_and_exit;
|
||||
|
@ -256,8 +261,9 @@ read_history_range (filename, from, to)
|
|||
for (line_end = line_start; line_end < bufend; line_end++)
|
||||
if (*line_end == '\n')
|
||||
{
|
||||
if (line_end - 1 >= line_start && *(line_end - 1) == '\r')
|
||||
*(line_end - 1) = '\0';
|
||||
/* Change to allow Windows-like \r\n end of line delimiter. */
|
||||
if (line_end > line_start && line_end[-1] == '\r')
|
||||
line_end[-1] = '\0';
|
||||
else
|
||||
*line_end = '\0';
|
||||
|
||||
|
@ -312,7 +318,7 @@ history_truncate_file (fname, lines)
|
|||
|
||||
buffer = (char *)NULL;
|
||||
filename = history_filename (fname);
|
||||
file = open (filename, O_RDONLY|O_BINARY, 0666);
|
||||
file = filename ? open (filename, O_RDONLY|O_BINARY, 0666) : -1;
|
||||
rv = 0;
|
||||
|
||||
/* Don't try to truncate non-regular files. */
|
||||
|
@ -411,7 +417,7 @@ history_truncate_file (fname, lines)
|
|||
|
||||
FREE (buffer);
|
||||
|
||||
free (filename);
|
||||
xfree (filename);
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
@ -434,9 +440,10 @@ history_do_write (filename, nelements, overwrite)
|
|||
mode = overwrite ? O_WRONLY|O_CREAT|O_TRUNC|O_BINARY : O_WRONLY|O_APPEND|O_BINARY;
|
||||
#endif
|
||||
output = history_filename (filename);
|
||||
file = output ? open (output, mode, 0600) : -1;
|
||||
rv = 0;
|
||||
|
||||
if ((file = open (output, mode, 0600)) == -1)
|
||||
if (file == -1)
|
||||
{
|
||||
FREE (output);
|
||||
return (errno);
|
||||
|
@ -513,7 +520,7 @@ mmap_error:
|
|||
#else
|
||||
if (write (file, buffer, buffer_size) < 0)
|
||||
rv = errno;
|
||||
free (buffer);
|
||||
xfree (buffer);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -1,23 +1,23 @@
|
|||
/* histlib.h -- internal definitions for the history library. */
|
||||
/* Copyright (C) 1989, 1992 Free Software Foundation, Inc.
|
||||
|
||||
This file contains the GNU History Library (the Library), a set of
|
||||
/* Copyright (C) 1989-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file contains the GNU History Library (History), a set of
|
||||
routines for managing the text of previously typed lines.
|
||||
|
||||
The Library is free software; you can redistribute it and/or modify
|
||||
History is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The Library is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
History is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with History. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#if !defined (_HISTLIB_H_)
|
||||
#define _HISTLIB_H_
|
||||
|
|
|
@ -1,24 +1,23 @@
|
|||
/* history.c -- standalone history library */
|
||||
|
||||
/* Copyright (C) 1989-2005 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1989-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file contains the GNU History Library (the Library), a set of
|
||||
This file contains the GNU History Library (History), a set of
|
||||
routines for managing the text of previously typed lines.
|
||||
|
||||
The Library is free software; you can redistribute it and/or modify
|
||||
History is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The Library is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
History is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with History. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* The goal is to make the implementation transparent, so that you
|
||||
don't have to know what data types are used, just what functions
|
||||
|
@ -158,7 +157,7 @@ history_set_pos (pos)
|
|||
return (1);
|
||||
}
|
||||
|
||||
/* Return the current history array. The caller has to be carefull, since this
|
||||
/* Return the current history array. The caller has to be careful, since this
|
||||
is the actual array of data, and could be bashed or made corrupt easily.
|
||||
The array is terminated with a NULL pointer. */
|
||||
HIST_ENTRY **
|
||||
|
@ -209,6 +208,22 @@ history_get (offset)
|
|||
: the_history[local_index];
|
||||
}
|
||||
|
||||
HIST_ENTRY *
|
||||
alloc_history_entry (string, ts)
|
||||
char *string;
|
||||
char *ts;
|
||||
{
|
||||
HIST_ENTRY *temp;
|
||||
|
||||
temp = (HIST_ENTRY *)xmalloc (sizeof (HIST_ENTRY));
|
||||
|
||||
temp->line = string ? savestring (string) : string;
|
||||
temp->data = (char *)NULL;
|
||||
temp->timestamp = ts;
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
time_t
|
||||
history_get_time (hist)
|
||||
HIST_ENTRY *hist;
|
||||
|
@ -290,11 +305,7 @@ add_history (string)
|
|||
}
|
||||
}
|
||||
|
||||
temp = (HIST_ENTRY *)xmalloc (sizeof (HIST_ENTRY));
|
||||
temp->line = savestring (string);
|
||||
temp->data = (char *)NULL;
|
||||
|
||||
temp->timestamp = hist_inittime ();
|
||||
temp = alloc_history_entry (string, hist_inittime ());
|
||||
|
||||
the_history[history_length] = (HIST_ENTRY *)NULL;
|
||||
the_history[history_length - 1] = temp;
|
||||
|
@ -307,6 +318,8 @@ add_history_time (string)
|
|||
{
|
||||
HIST_ENTRY *hs;
|
||||
|
||||
if (string == 0)
|
||||
return;
|
||||
hs = the_history[history_length - 1];
|
||||
FREE (hs->timestamp);
|
||||
hs->timestamp = savestring (string);
|
||||
|
@ -325,10 +338,30 @@ free_history_entry (hist)
|
|||
FREE (hist->line);
|
||||
FREE (hist->timestamp);
|
||||
x = hist->data;
|
||||
free (hist);
|
||||
xfree (hist);
|
||||
return (x);
|
||||
}
|
||||
|
||||
HIST_ENTRY *
|
||||
copy_history_entry (hist)
|
||||
HIST_ENTRY *hist;
|
||||
{
|
||||
HIST_ENTRY *ret;
|
||||
char *ts;
|
||||
|
||||
if (hist == 0)
|
||||
return hist;
|
||||
|
||||
ret = alloc_history_entry (hist->line, (char *)NULL);
|
||||
|
||||
ts = hist->timestamp ? savestring (hist->timestamp) : hist->timestamp;
|
||||
ret->timestamp = ts;
|
||||
|
||||
ret->data = hist->data;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Make the history entry at WHICH have LINE and DATA. This returns
|
||||
the old entry so you can dispose of the data. In the case of an
|
||||
invalid WHICH, a NULL pointer is returned. */
|
||||
|
@ -354,6 +387,51 @@ replace_history_entry (which, line, data)
|
|||
return (old_value);
|
||||
}
|
||||
|
||||
/* Replace the DATA in the specified history entries, replacing OLD with
|
||||
NEW. WHICH says which one(s) to replace: WHICH == -1 means to replace
|
||||
all of the history entries where entry->data == OLD; WHICH == -2 means
|
||||
to replace the `newest' history entry where entry->data == OLD; and
|
||||
WHICH >= 0 means to replace that particular history entry's data, as
|
||||
long as it matches OLD. */
|
||||
void
|
||||
replace_history_data (which,old, new)
|
||||
int which;
|
||||
histdata_t *old, *new;
|
||||
{
|
||||
HIST_ENTRY *entry;
|
||||
register int i, last;
|
||||
|
||||
if (which < -2 || which >= history_length || history_length == 0 || the_history == 0)
|
||||
return;
|
||||
|
||||
if (which >= 0)
|
||||
{
|
||||
entry = the_history[which];
|
||||
if (entry && entry->data == old)
|
||||
entry->data = new;
|
||||
return;
|
||||
}
|
||||
|
||||
last = -1;
|
||||
for (i = 0; i < history_length; i++)
|
||||
{
|
||||
entry = the_history[i];
|
||||
if (entry == 0)
|
||||
continue;
|
||||
if (entry->data == old)
|
||||
{
|
||||
last = i;
|
||||
if (which == -1)
|
||||
entry->data = new;
|
||||
}
|
||||
}
|
||||
if (which == -2 && last >= 0)
|
||||
{
|
||||
entry = the_history[last];
|
||||
entry->data = new; /* XXX - we don't check entry->old */
|
||||
}
|
||||
}
|
||||
|
||||
/* Remove history element WHICH from the history. The removed
|
||||
element is returned to you so you can free the line, data,
|
||||
and containing structure. */
|
||||
|
|
|
@ -1,23 +1,23 @@
|
|||
/* history.h -- the names of functions that you can call in history. */
|
||||
/* Copyright (C) 1989-2003 Free Software Foundation, Inc.
|
||||
|
||||
This file contains the GNU History Library (the Library), a set of
|
||||
/* Copyright (C) 1989-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file contains the GNU History Library (History), a set of
|
||||
routines for managing the text of previously typed lines.
|
||||
|
||||
The Library is free software; you can redistribute it and/or modify
|
||||
History is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The Library is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
History is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with History. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _HISTORY_H_
|
||||
#define _HISTORY_H_
|
||||
|
|
|
@ -1,24 +1,23 @@
|
|||
/* histsearch.c -- searching the history list. */
|
||||
|
||||
/* Copyright (C) 1989, 1992 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1989, 1992-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file contains the GNU History Library (the Library), a set of
|
||||
This file contains the GNU History Library (History), a set of
|
||||
routines for managing the text of previously typed lines.
|
||||
|
||||
The Library is free software; you can redistribute it and/or modify
|
||||
History is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The Library is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
History is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with History. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define READLINE_LIBRARY
|
||||
|
||||
|
|
109
readline/input.c
109
readline/input.c
|
@ -1,24 +1,24 @@
|
|||
/* input.c -- character input functions for readline. */
|
||||
|
||||
/* Copyright (C) 1994-2005 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1994-2010 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define READLINE_LIBRARY
|
||||
|
||||
#if defined (__TANDEM)
|
||||
|
@ -45,14 +45,7 @@
|
|||
# include "ansi_stdlib.h"
|
||||
#endif /* HAVE_STDLIB_H */
|
||||
|
||||
#if defined (HAVE_SELECT)
|
||||
# if !defined (HAVE_SYS_SELECT_H) || !defined (M_UNIX)
|
||||
# include <sys/time.h>
|
||||
# endif
|
||||
#endif /* HAVE_SELECT */
|
||||
#if defined (HAVE_SYS_SELECT_H)
|
||||
# include <sys/select.h>
|
||||
#endif
|
||||
#include "posixselect.h"
|
||||
|
||||
#if defined (FIONREAD_IN_SYS_IOCTL)
|
||||
# include <sys/ioctl.h>
|
||||
|
@ -133,8 +126,11 @@ rl_get_char (key)
|
|||
return (0);
|
||||
|
||||
*key = ibuffer[pop_index++];
|
||||
|
||||
#if 0
|
||||
if (pop_index >= ibuffer_len)
|
||||
#else
|
||||
if (pop_index > ibuffer_len)
|
||||
#endif
|
||||
pop_index = 0;
|
||||
|
||||
return (1);
|
||||
|
@ -151,7 +147,7 @@ _rl_unget_char (key)
|
|||
{
|
||||
pop_index--;
|
||||
if (pop_index < 0)
|
||||
pop_index = ibuffer_len - 1;
|
||||
pop_index = ibuffer_len;
|
||||
ibuffer[pop_index] = key;
|
||||
return (1);
|
||||
}
|
||||
|
@ -179,6 +175,7 @@ rl_gather_tyi ()
|
|||
struct timeval timeout;
|
||||
#endif
|
||||
|
||||
chars_avail = 0;
|
||||
tty = fileno (rl_instream);
|
||||
|
||||
#if defined (HAVE_SELECT)
|
||||
|
@ -186,8 +183,7 @@ rl_gather_tyi ()
|
|||
FD_ZERO (&exceptfds);
|
||||
FD_SET (tty, &readfds);
|
||||
FD_SET (tty, &exceptfds);
|
||||
timeout.tv_sec = 0;
|
||||
timeout.tv_usec = _keyboard_input_timeout;
|
||||
USEC_TO_TIMEVAL (_keyboard_input_timeout, timeout);
|
||||
result = select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout);
|
||||
if (result <= 0)
|
||||
return 0; /* Nothing to read. */
|
||||
|
@ -221,12 +217,9 @@ rl_gather_tyi ()
|
|||
#endif /* O_NDELAY */
|
||||
|
||||
#if defined (__MINGW32__)
|
||||
/* We use getch to read console input, so use the same
|
||||
mechanism to check for more. Otherwise, we don't know. */
|
||||
if (isatty (fileno (rl_instream)))
|
||||
chars_avail = _kbhit ();
|
||||
else
|
||||
chars_avail = 0;
|
||||
/* Use getch/_kbhit to check for available console input, in the same way
|
||||
that we read it normally. */
|
||||
chars_avail = isatty (tty) ? _kbhit () : 0;
|
||||
result = 0;
|
||||
#endif
|
||||
|
||||
|
@ -251,8 +244,10 @@ rl_gather_tyi ()
|
|||
{
|
||||
while (chars_avail--)
|
||||
{
|
||||
RL_CHECK_SIGNALS ();
|
||||
k = (*rl_getc_function) (rl_instream);
|
||||
rl_stuff_char (k);
|
||||
if (rl_stuff_char (k) == 0)
|
||||
break; /* some problem; no more room */
|
||||
if (k == NEWLINE || k == RETURN)
|
||||
break;
|
||||
}
|
||||
|
@ -273,7 +268,7 @@ rl_set_keyboard_input_timeout (u)
|
|||
int o;
|
||||
|
||||
o = _keyboard_input_timeout;
|
||||
if (u > 0)
|
||||
if (u >= 0)
|
||||
_keyboard_input_timeout = u;
|
||||
return (o);
|
||||
}
|
||||
|
@ -316,10 +311,8 @@ _rl_input_available ()
|
|||
#endif
|
||||
|
||||
#if defined (__MINGW32__)
|
||||
/* We use getch to read console input, so use the same
|
||||
mechanism to check for more. Otherwise, we don't know. */
|
||||
if (isatty (fileno (rl_instream)))
|
||||
return _kbhit ();
|
||||
if (isatty (tty))
|
||||
return (_kbhit ());
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
@ -358,7 +351,7 @@ _rl_insert_typein (c)
|
|||
|
||||
string[i] = '\0';
|
||||
rl_insert_text (string);
|
||||
free (string);
|
||||
xfree (string);
|
||||
}
|
||||
|
||||
/* Add KEY to the buffer of characters to be read. Returns 1 if the
|
||||
|
@ -377,7 +370,11 @@ rl_stuff_char (key)
|
|||
RL_SETSTATE (RL_STATE_INPUTPENDING);
|
||||
}
|
||||
ibuffer[push_index++] = key;
|
||||
#if 0
|
||||
if (push_index >= ibuffer_len)
|
||||
#else
|
||||
if (push_index > ibuffer_len)
|
||||
#endif
|
||||
push_index = 0;
|
||||
|
||||
return 1;
|
||||
|
@ -430,22 +427,26 @@ rl_read_key ()
|
|||
/* If the user has an event function, then call it periodically. */
|
||||
if (rl_event_hook)
|
||||
{
|
||||
while (rl_event_hook && rl_get_char (&c) == 0)
|
||||
while (rl_event_hook)
|
||||
{
|
||||
(*rl_event_hook) ();
|
||||
if (rl_done) /* XXX - experimental */
|
||||
return ('\n');
|
||||
if (rl_gather_tyi () < 0) /* XXX - EIO */
|
||||
{
|
||||
rl_done = 1;
|
||||
return ('\n');
|
||||
}
|
||||
RL_CHECK_SIGNALS ();
|
||||
if (rl_get_char (&c) != 0)
|
||||
break;
|
||||
if (rl_done) /* XXX - experimental */
|
||||
return ('\n');
|
||||
(*rl_event_hook) ();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (rl_get_char (&c) == 0)
|
||||
c = (*rl_getc_function) (rl_instream);
|
||||
RL_CHECK_SIGNALS ();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -461,6 +462,8 @@ rl_getc (stream)
|
|||
|
||||
while (1)
|
||||
{
|
||||
RL_CHECK_SIGNALS ();
|
||||
|
||||
#if defined (__MINGW32__)
|
||||
if (isatty (fileno (stream)))
|
||||
return (getch ());
|
||||
|
@ -506,7 +509,7 @@ rl_getc (stream)
|
|||
this is simply an interrupted system call to read ().
|
||||
Otherwise, some error ocurred, also signifying EOF. */
|
||||
if (errno != EINTR)
|
||||
return (EOF);
|
||||
return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -517,7 +520,7 @@ _rl_read_mbchar (mbchar, size)
|
|||
char *mbchar;
|
||||
int size;
|
||||
{
|
||||
int mb_len = 0;
|
||||
int mb_len, c;
|
||||
size_t mbchar_bytes_length;
|
||||
wchar_t wc;
|
||||
mbstate_t ps, ps_back;
|
||||
|
@ -525,12 +528,18 @@ _rl_read_mbchar (mbchar, size)
|
|||
memset(&ps, 0, sizeof (mbstate_t));
|
||||
memset(&ps_back, 0, sizeof (mbstate_t));
|
||||
|
||||
mb_len = 0;
|
||||
while (mb_len < size)
|
||||
{
|
||||
RL_SETSTATE(RL_STATE_MOREINPUT);
|
||||
mbchar[mb_len++] = rl_read_key ();
|
||||
c = rl_read_key ();
|
||||
RL_UNSETSTATE(RL_STATE_MOREINPUT);
|
||||
|
||||
if (c < 0)
|
||||
break;
|
||||
|
||||
mbchar[mb_len++] = c;
|
||||
|
||||
mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps);
|
||||
if (mbchar_bytes_length == (size_t)(-1))
|
||||
break; /* invalid byte sequence for the current locale */
|
||||
|
@ -554,21 +563,21 @@ _rl_read_mbchar (mbchar, size)
|
|||
}
|
||||
|
||||
/* Read a multibyte-character string whose first character is FIRST into
|
||||
the buffer MB of length MBLEN. Returns the last character read, which
|
||||
the buffer MB of length MLEN. Returns the last character read, which
|
||||
may be FIRST. Used by the search functions, among others. Very similar
|
||||
to _rl_read_mbchar. */
|
||||
int
|
||||
_rl_read_mbstring (first, mb, mblen)
|
||||
_rl_read_mbstring (first, mb, mlen)
|
||||
int first;
|
||||
char *mb;
|
||||
int mblen;
|
||||
int mlen;
|
||||
{
|
||||
int i, c;
|
||||
mbstate_t ps;
|
||||
|
||||
c = first;
|
||||
memset (mb, 0, mblen);
|
||||
for (i = 0; i < mblen; i++)
|
||||
memset (mb, 0, mlen);
|
||||
for (i = 0; c >= 0 && i < mlen; i++)
|
||||
{
|
||||
mb[i] = (char)c;
|
||||
memset (&ps, 0, sizeof (mbstate_t));
|
||||
|
|
|
@ -1,29 +1,30 @@
|
|||
/* isearch.c - incremental searching */
|
||||
|
||||
/* **************************************************************** */
|
||||
/* */
|
||||
/* I-Search and Searching */
|
||||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
/* Copyright (C) 1987-2005 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file contains the Readline Library (the Library), a set of
|
||||
routines for providing Emacs style line input to programs that ask
|
||||
for it.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The Library is free software; you can redistribute it and/or modify
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The Library is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
#define READLINE_LIBRARY
|
||||
|
||||
#if defined (HAVE_CONFIG_H)
|
||||
|
@ -68,14 +69,14 @@ static void _rl_isearch_fini PARAMS((_rl_search_cxt *));
|
|||
static int _rl_isearch_cleanup PARAMS((_rl_search_cxt *, int));
|
||||
|
||||
/* Last line found by the current incremental search, so we don't `find'
|
||||
identical lines many times in a row. */
|
||||
static char *prev_line_found;
|
||||
identical lines many times in a row. Now part of isearch context. */
|
||||
/* static char *prev_line_found; */
|
||||
|
||||
/* Last search string and its length. */
|
||||
static char *last_isearch_string;
|
||||
static int last_isearch_string_len;
|
||||
|
||||
static char *default_isearch_terminators = "\033\012";
|
||||
static char * const default_isearch_terminators = "\033\012";
|
||||
|
||||
_rl_search_cxt *
|
||||
_rl_scxt_alloc (type, flags)
|
||||
|
@ -103,6 +104,9 @@ _rl_scxt_alloc (type, flags)
|
|||
|
||||
cxt->save_undo_list = 0;
|
||||
|
||||
cxt->keymap = _rl_keymap;
|
||||
cxt->okeymap = _rl_keymap;
|
||||
|
||||
cxt->history_pos = 0;
|
||||
cxt->direction = 0;
|
||||
|
||||
|
@ -125,7 +129,7 @@ _rl_scxt_dispose (cxt, flags)
|
|||
FREE (cxt->allocated_line);
|
||||
FREE (cxt->lines);
|
||||
|
||||
free (cxt);
|
||||
xfree (cxt);
|
||||
}
|
||||
|
||||
/* Search backwards through the history looking for a string which is typed
|
||||
|
@ -192,7 +196,7 @@ rl_display_search (search_string, reverse_p, where)
|
|||
strcpy (message + msglen, "': ");
|
||||
|
||||
rl_message ("%s", message);
|
||||
free (message);
|
||||
xfree (message);
|
||||
(*rl_redisplay_function) ();
|
||||
}
|
||||
|
||||
|
@ -328,10 +332,29 @@ _rl_isearch_dispatch (cxt, c)
|
|||
|
||||
f = (rl_command_func_t *)NULL;
|
||||
|
||||
/* Translate the keys we do something with to opcodes. */
|
||||
if (c >= 0 && _rl_keymap[c].type == ISFUNC)
|
||||
if (c < 0)
|
||||
{
|
||||
f = _rl_keymap[c].function;
|
||||
cxt->sflags |= SF_FAILED;
|
||||
cxt->history_pos = cxt->last_found_line;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* If we are moving into a new keymap, modify cxt->keymap and go on.
|
||||
This can be a problem if c == ESC and we want to terminate the
|
||||
incremental search, so we check */
|
||||
if (c >= 0 && cxt->keymap[c].type == ISKMAP && strchr (cxt->search_terminators, cxt->lastc) == 0)
|
||||
{
|
||||
cxt->keymap = FUNCTION_TO_KEYMAP (cxt->keymap, c);
|
||||
cxt->sflags |= SF_CHGKMAP;
|
||||
/* XXX - we should probably save this sequence, so we can do
|
||||
something useful if this doesn't end up mapping to a command. */
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Translate the keys we do something with to opcodes. */
|
||||
if (c >= 0 && cxt->keymap[c].type == ISFUNC)
|
||||
{
|
||||
f = cxt->keymap[c].function;
|
||||
|
||||
if (f == rl_reverse_search_history)
|
||||
cxt->lastc = (cxt->sflags & SF_REVERSE) ? -1 : -2;
|
||||
|
@ -339,19 +362,27 @@ _rl_isearch_dispatch (cxt, c)
|
|||
cxt->lastc = (cxt->sflags & SF_REVERSE) ? -2 : -1;
|
||||
else if (f == rl_rubout)
|
||||
cxt->lastc = -3;
|
||||
else if (c == CTRL ('G'))
|
||||
else if (c == CTRL ('G') || f == rl_abort)
|
||||
cxt->lastc = -4;
|
||||
else if (c == CTRL ('W')) /* XXX */
|
||||
else if (c == CTRL ('W') || f == rl_unix_word_rubout) /* XXX */
|
||||
cxt->lastc = -5;
|
||||
else if (c == CTRL ('Y')) /* XXX */
|
||||
else if (c == CTRL ('Y') || f == rl_yank) /* XXX */
|
||||
cxt->lastc = -6;
|
||||
}
|
||||
|
||||
/* If we changed the keymap earlier while translating a key sequence into
|
||||
a command, restore it now that we've succeeded. */
|
||||
if (cxt->sflags & SF_CHGKMAP)
|
||||
{
|
||||
cxt->keymap = cxt->okeymap;
|
||||
cxt->sflags &= ~SF_CHGKMAP;
|
||||
}
|
||||
|
||||
/* The characters in isearch_terminators (set from the user-settable
|
||||
variable isearch-terminators) are used to terminate the search but
|
||||
not subsequently execute the character as a command. The default
|
||||
value is "\033\012" (ESC and C-J). */
|
||||
if (strchr (cxt->search_terminators, cxt->lastc))
|
||||
if (cxt->lastc > 0 && strchr (cxt->search_terminators, cxt->lastc))
|
||||
{
|
||||
/* ESC still terminates the search, but if there is pending
|
||||
input or if input arrives within 0.1 seconds (on systems
|
||||
|
@ -375,7 +406,7 @@ _rl_isearch_dispatch (cxt, c)
|
|||
{
|
||||
if (cxt->lastc >= 0 && (cxt->mb[0] && cxt->mb[1] == '\0') && ENDSRCH_CHAR (cxt->lastc))
|
||||
{
|
||||
/* This sets rl_pending_input to c; it will be picked up the next
|
||||
/* This sets rl_pending_input to LASTC; it will be picked up the next
|
||||
time rl_read_key is called. */
|
||||
rl_execute_next (cxt->lastc);
|
||||
return (0);
|
||||
|
|
|
@ -1,23 +1,24 @@
|
|||
/* keymaps.c -- Functions and keymaps for the GNU Readline library. */
|
||||
|
||||
/* Copyright (C) 1988,1989 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1988,1989-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Readline, a library for reading lines
|
||||
of text with interactive input and history editing.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
Readline is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Readline is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define READLINE_LIBRARY
|
||||
|
||||
#if defined (HAVE_CONFIG_H)
|
||||
|
@ -56,8 +57,9 @@ Keymap
|
|||
rl_make_bare_keymap ()
|
||||
{
|
||||
register int i;
|
||||
Keymap keymap = (Keymap)xmalloc (KEYMAP_SIZE * sizeof (KEYMAP_ENTRY));
|
||||
Keymap keymap;
|
||||
|
||||
keymap = (Keymap)xmalloc (KEYMAP_SIZE * sizeof (KEYMAP_ENTRY));
|
||||
for (i = 0; i < KEYMAP_SIZE; i++)
|
||||
{
|
||||
keymap[i].type = ISFUNC;
|
||||
|
@ -75,7 +77,8 @@ rl_make_bare_keymap ()
|
|||
return (keymap);
|
||||
}
|
||||
|
||||
/* Return a new keymap which is a copy of MAP. */
|
||||
/* Return a new keymap which is a copy of MAP. Just copies pointers, does
|
||||
not copy text of macros or descend into child keymaps. */
|
||||
Keymap
|
||||
rl_copy_keymap (map)
|
||||
Keymap map;
|
||||
|
@ -127,7 +130,7 @@ rl_discard_keymap (map)
|
|||
{
|
||||
int i;
|
||||
|
||||
if (!map)
|
||||
if (map == 0)
|
||||
return;
|
||||
|
||||
for (i = 0; i < KEYMAP_SIZE; i++)
|
||||
|
@ -139,11 +142,21 @@ rl_discard_keymap (map)
|
|||
|
||||
case ISKMAP:
|
||||
rl_discard_keymap ((Keymap)map[i].function);
|
||||
xfree ((char *)map[i].function);
|
||||
break;
|
||||
|
||||
case ISMACR:
|
||||
free ((char *)map[i].function);
|
||||
xfree ((char *)map[i].function);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Convenience function that discards, then frees, MAP. */
|
||||
void
|
||||
rl_free_keymap (map)
|
||||
Keymap map;
|
||||
{
|
||||
rl_discard_keymap (map);
|
||||
xfree ((char *)map);
|
||||
}
|
||||
|
|
|
@ -2,23 +2,22 @@
|
|||
|
||||
/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _KEYMAPS_H_
|
||||
#define _KEYMAPS_H_
|
||||
|
@ -53,11 +52,6 @@ typedef struct _keymap_entry {
|
|||
#define KEYMAP_SIZE 257
|
||||
#define ANYOTHERKEY KEYMAP_SIZE-1
|
||||
|
||||
/* I wanted to make the above structure contain a union of:
|
||||
union { rl_command_func_t *function; struct _keymap_entry *keymap; } value;
|
||||
but this made it impossible for me to create a static array.
|
||||
Maybe I need C lessons. */
|
||||
|
||||
typedef KEYMAP_ENTRY KEYMAP_ENTRY_ARRAY[KEYMAP_SIZE];
|
||||
typedef KEYMAP_ENTRY *Keymap;
|
||||
|
||||
|
|
|
@ -2,23 +2,23 @@
|
|||
|
||||
/* Copyright (C) 1994 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define READLINE_LIBRARY
|
||||
|
||||
#if defined (HAVE_CONFIG_H)
|
||||
|
@ -115,7 +115,7 @@ _rl_copy_to_kill_ring (text, append)
|
|||
if (slot == rl_max_kills)
|
||||
{
|
||||
register int i;
|
||||
free (rl_kill_ring[0]);
|
||||
xfree (rl_kill_ring[0]);
|
||||
for (i = 0; i < slot; i++)
|
||||
rl_kill_ring[i] = rl_kill_ring[i + 1];
|
||||
}
|
||||
|
@ -146,8 +146,8 @@ _rl_copy_to_kill_ring (text, append)
|
|||
strcpy (new, text);
|
||||
strcat (new, old);
|
||||
}
|
||||
free (old);
|
||||
free (text);
|
||||
xfree (old);
|
||||
xfree (text);
|
||||
rl_kill_ring[slot] = new;
|
||||
}
|
||||
else
|
||||
|
@ -582,6 +582,7 @@ rl_yank_nth_arg_internal (count, ignore, history_skip)
|
|||
if (!arg || !*arg)
|
||||
{
|
||||
rl_ding ();
|
||||
FREE (arg);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -600,7 +601,7 @@ rl_yank_nth_arg_internal (count, ignore, history_skip)
|
|||
#endif /* VI_MODE */
|
||||
|
||||
rl_insert_text (arg);
|
||||
free (arg);
|
||||
xfree (arg);
|
||||
|
||||
rl_end_undo_group ();
|
||||
return 0;
|
||||
|
@ -639,7 +640,7 @@ rl_yank_last_arg (count, key)
|
|||
{
|
||||
if (undo_needed)
|
||||
rl_do_undo ();
|
||||
if (count < 1)
|
||||
if (count < 0) /* XXX - was < 1 */
|
||||
direction = -direction;
|
||||
history_skip += direction;
|
||||
if (history_skip < 0)
|
||||
|
@ -685,7 +686,7 @@ rl_paste_from_clipboard (count, key)
|
|||
_rl_set_mark_at_pos (rl_point);
|
||||
rl_insert_text (ptr);
|
||||
if (ptr != data)
|
||||
free (ptr);
|
||||
xfree (ptr);
|
||||
CloseClipboard ();
|
||||
}
|
||||
return (0);
|
||||
|
|
|
@ -1,24 +1,24 @@
|
|||
/* macro.c -- keyboard macros for readline. */
|
||||
|
||||
/* Copyright (C) 1994 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1994-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define READLINE_LIBRARY
|
||||
|
||||
#if defined (HAVE_CONFIG_H)
|
||||
|
@ -113,7 +113,7 @@ _rl_next_macro_key ()
|
|||
|
||||
#if defined (READLINE_CALLBACKS)
|
||||
c = rl_executing_macro[executing_macro_index++];
|
||||
if (RL_ISSTATE (RL_STATE_CALLBACK) && RL_ISSTATE (RL_STATE_READCMD) && rl_executing_macro[executing_macro_index] == 0)
|
||||
if (RL_ISSTATE (RL_STATE_CALLBACK) && RL_ISSTATE (RL_STATE_READCMD|RL_STATE_MOREINPUT) && rl_executing_macro[executing_macro_index] == 0)
|
||||
_rl_pop_executing_macro ();
|
||||
return c;
|
||||
#else
|
||||
|
@ -152,7 +152,7 @@ _rl_pop_executing_macro ()
|
|||
rl_executing_macro = macro_list->string;
|
||||
executing_macro_index = macro_list->sindex;
|
||||
macro_list = macro_list->next;
|
||||
free (macro);
|
||||
xfree (macro);
|
||||
}
|
||||
|
||||
if (rl_executing_macro == 0)
|
||||
|
@ -181,7 +181,7 @@ _rl_kill_kbd_macro ()
|
|||
{
|
||||
if (current_macro)
|
||||
{
|
||||
free (current_macro);
|
||||
xfree (current_macro);
|
||||
current_macro = (char *) NULL;
|
||||
}
|
||||
current_macro_size = current_macro_index = 0;
|
||||
|
|
|
@ -1,24 +1,24 @@
|
|||
/* mbutil.c -- readline multibyte character utility functions */
|
||||
|
||||
/* Copyright (C) 2001-2005 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2001-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define READLINE_LIBRARY
|
||||
|
||||
#if defined (HAVE_CONFIG_H)
|
||||
|
@ -77,7 +77,7 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero)
|
|||
char *string;
|
||||
int seed, count, find_non_zero;
|
||||
{
|
||||
size_t tmp;
|
||||
size_t tmp, len;
|
||||
mbstate_t ps;
|
||||
int point;
|
||||
wchar_t wc;
|
||||
|
@ -91,17 +91,21 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero)
|
|||
return seed;
|
||||
|
||||
point = seed + _rl_adjust_point (string, seed, &ps);
|
||||
/* if this is true, means that seed was not pointed character
|
||||
started byte. So correct the point and consume count */
|
||||
/* if this is true, means that seed was not pointing to a byte indicating
|
||||
the beginning of a multibyte character. Correct the point and consume
|
||||
one char. */
|
||||
if (seed < point)
|
||||
count--;
|
||||
|
||||
while (count > 0)
|
||||
{
|
||||
tmp = mbrtowc (&wc, string+point, strlen(string + point), &ps);
|
||||
len = strlen (string + point);
|
||||
if (len == 0)
|
||||
break;
|
||||
tmp = mbrtowc (&wc, string+point, len, &ps);
|
||||
if (MB_INVALIDCH ((size_t)tmp))
|
||||
{
|
||||
/* invalid bytes. asume a byte represents a character */
|
||||
/* invalid bytes. assume a byte represents a character */
|
||||
point++;
|
||||
count--;
|
||||
/* reset states. */
|
||||
|
@ -128,12 +132,10 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero)
|
|||
if (find_non_zero)
|
||||
{
|
||||
tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
|
||||
while (tmp > 0 && wcwidth (wc) == 0)
|
||||
while (MB_NULLWCH (tmp) == 0 && MB_INVALIDCH (tmp) == 0 && wcwidth (wc) == 0)
|
||||
{
|
||||
point += tmp;
|
||||
tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
|
||||
if (MB_NULLWCH (tmp) || MB_INVALIDCH (tmp))
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,24 +1,24 @@
|
|||
/* misc.c -- miscellaneous bindable readline functions. */
|
||||
|
||||
/* Copyright (C) 1987-2005 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define READLINE_LIBRARY
|
||||
|
||||
#if defined (HAVE_CONFIG_H)
|
||||
|
@ -146,6 +146,8 @@ _rl_arg_dispatch (cxt, c)
|
|||
rl_restore_prompt ();
|
||||
rl_clear_message ();
|
||||
RL_UNSETSTATE(RL_STATE_NUMERICARG);
|
||||
if (key < 0)
|
||||
return -1;
|
||||
return (_rl_dispatch (key, _rl_keymap));
|
||||
}
|
||||
}
|
||||
|
@ -212,6 +214,8 @@ rl_digit_loop ()
|
|||
if (r <= 0 || (RL_ISSTATE (RL_STATE_NUMERICARG) == 0))
|
||||
break;
|
||||
}
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
/* Create a default argument. */
|
||||
|
@ -324,7 +328,7 @@ _rl_free_history_entry (entry)
|
|||
FREE (entry->line);
|
||||
FREE (entry->timestamp);
|
||||
|
||||
free (entry);
|
||||
xfree (entry);
|
||||
}
|
||||
|
||||
/* Perhaps put back the current line if it has changed. */
|
||||
|
@ -338,9 +342,9 @@ rl_maybe_replace_line ()
|
|||
if (temp && ((UNDO_LIST *)(temp->data) != rl_undo_list))
|
||||
{
|
||||
temp = replace_history_entry (where_history (), rl_line_buffer, (histdata_t)rl_undo_list);
|
||||
free (temp->line);
|
||||
xfree (temp->line);
|
||||
FREE (temp->timestamp);
|
||||
free (temp);
|
||||
xfree (temp);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -429,6 +433,56 @@ rl_replace_from_history (entry, flags)
|
|||
#endif
|
||||
}
|
||||
|
||||
/* Process and free undo lists attached to each history entry prior to the
|
||||
current entry, inclusive, reverting each line to its saved state. This
|
||||
is destructive, and state about the current line is lost. This is not
|
||||
intended to be called while actively editing, and the current line is
|
||||
not assumed to have been added to the history list. */
|
||||
void
|
||||
_rl_revert_all_lines ()
|
||||
{
|
||||
int hpos;
|
||||
HIST_ENTRY *entry;
|
||||
UNDO_LIST *ul, *saved_undo_list;
|
||||
char *lbuf;
|
||||
|
||||
lbuf = savestring (rl_line_buffer);
|
||||
saved_undo_list = rl_undo_list;
|
||||
hpos = where_history ();
|
||||
|
||||
entry = (hpos == history_length) ? previous_history () : current_history ();
|
||||
while (entry)
|
||||
{
|
||||
if (ul = (UNDO_LIST *)entry->data)
|
||||
{
|
||||
if (ul == saved_undo_list)
|
||||
saved_undo_list = 0;
|
||||
/* Set up rl_line_buffer and other variables from history entry */
|
||||
rl_replace_from_history (entry, 0); /* entry->line is now current */
|
||||
/* Undo all changes to this history entry */
|
||||
while (rl_undo_list)
|
||||
rl_do_undo ();
|
||||
/* And copy the reverted line back to the history entry, preserving
|
||||
the timestamp. */
|
||||
FREE (entry->line);
|
||||
entry->line = savestring (rl_line_buffer);
|
||||
entry->data = 0;
|
||||
}
|
||||
entry = previous_history ();
|
||||
}
|
||||
|
||||
/* Restore history state */
|
||||
rl_undo_list = saved_undo_list; /* may have been set to null */
|
||||
history_set_pos (hpos);
|
||||
|
||||
/* reset the line buffer */
|
||||
rl_replace_line (lbuf, 0);
|
||||
_rl_set_the_line ();
|
||||
|
||||
/* and clean up */
|
||||
xfree (lbuf);
|
||||
}
|
||||
|
||||
/* **************************************************************** */
|
||||
/* */
|
||||
/* History Commands */
|
||||
|
@ -556,7 +610,7 @@ rl_vi_editing_mode (count, key)
|
|||
#if defined (VI_MODE)
|
||||
_rl_set_insert_mode (RL_IM_INSERT, 1); /* vi mode ignores insert mode */
|
||||
rl_editing_mode = vi_mode;
|
||||
rl_vi_insertion_mode (1, key);
|
||||
rl_vi_insert_mode (1, key);
|
||||
#endif /* VI_MODE */
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -1,24 +1,24 @@
|
|||
/* nls.c -- skeletal internationalization code. */
|
||||
|
||||
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1996-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define READLINE_LIBRARY
|
||||
|
||||
#if defined (HAVE_CONFIG_H)
|
||||
|
@ -145,7 +145,7 @@ _rl_init_eightbit ()
|
|||
_rl_output_meta_chars = 1;
|
||||
break;
|
||||
}
|
||||
free (t);
|
||||
xfree (t);
|
||||
return (legal_lang_values[i] ? 1 : 0);
|
||||
|
||||
#endif /* !HAVE_SETLOCALE */
|
||||
|
|
|
@ -1,24 +1,24 @@
|
|||
/* parens.c -- Implementation of matching parentheses feature. */
|
||||
/* parens.c -- implementation of matching parentheses feature. */
|
||||
|
||||
/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1987, 1989, 1992-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define READLINE_LIBRARY
|
||||
|
||||
#if defined (__TANDEM)
|
||||
|
@ -38,16 +38,7 @@
|
|||
# include <unistd.h>
|
||||
#endif
|
||||
|
||||
#if defined (FD_SET) && !defined (HAVE_SELECT)
|
||||
# define HAVE_SELECT
|
||||
#endif
|
||||
|
||||
#if defined (HAVE_SELECT)
|
||||
# include <sys/time.h>
|
||||
#endif /* HAVE_SELECT */
|
||||
#if defined (HAVE_SYS_SELECT_H)
|
||||
# include <sys/select.h>
|
||||
#endif
|
||||
#include "posixselect.h"
|
||||
|
||||
#if defined (HAVE_STRING_H)
|
||||
# include <string.h>
|
||||
|
@ -130,8 +121,7 @@ rl_insert_close (count, invoking_key)
|
|||
|
||||
FD_ZERO (&readfds);
|
||||
FD_SET (fileno (rl_instream), &readfds);
|
||||
timer.tv_sec = 0;
|
||||
timer.tv_usec = _paren_blink_usec;
|
||||
USEC_TO_TIMEVAL (_paren_blink_usec, timer);
|
||||
|
||||
orig_point = rl_point;
|
||||
rl_point = match_point;
|
||||
|
|
3
readline/patchlevel
Normal file
3
readline/patchlevel
Normal file
|
@ -0,0 +1,3 @@
|
|||
# Do not edit -- exists only for use by patch
|
||||
|
||||
1
|
|
@ -4,19 +4,19 @@
|
|||
|
||||
This file is part of GNU Bash, the Bourne Again SHell.
|
||||
|
||||
Bash is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
Bash is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Bash is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||
License for more details.
|
||||
Bash is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Bash; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
along with Bash. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* This file should be included instead of <dirent.h> or <sys/dir.h>. */
|
||||
|
||||
|
|
|
@ -4,19 +4,19 @@
|
|||
|
||||
This file is part of GNU Bash, the Bourne Again SHell.
|
||||
|
||||
Bash is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
Bash is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Bash is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||
License for more details.
|
||||
Bash is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Bash; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
along with Bash. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _POSIXJMP_H_
|
||||
#define _POSIXJMP_H_
|
||||
|
|
47
readline/posixselect.h
Normal file
47
readline/posixselect.h
Normal file
|
@ -0,0 +1,47 @@
|
|||
/* posixselect.h -- wrapper for select(2) includes and definitions */
|
||||
|
||||
/* Copyright (C) 2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Bash, the Bourne Again SHell.
|
||||
|
||||
Bash is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Bash is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Bash. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _POSIXSELECT_H_
|
||||
#define _POSIXSELECT_H_
|
||||
|
||||
#if defined (FD_SET) && !defined (HAVE_SELECT)
|
||||
# define HAVE_SELECT 1
|
||||
#endif
|
||||
|
||||
#if defined (HAVE_SELECT)
|
||||
# if !defined (HAVE_SYS_SELECT_H) || !defined (M_UNIX)
|
||||
# include <sys/time.h>
|
||||
# endif
|
||||
#endif /* HAVE_SELECT */
|
||||
#if defined (HAVE_SYS_SELECT_H)
|
||||
# include <sys/select.h>
|
||||
#endif
|
||||
|
||||
#ifndef USEC_PER_SEC
|
||||
# define USEC_PER_SEC 1000000
|
||||
#endif
|
||||
|
||||
#define USEC_TO_TIMEVAL(us, tv) \
|
||||
do { \
|
||||
(tv).tv_sec = (us) / USEC_PER_SEC; \
|
||||
(tv).tv_usec = (us) % USEC_PER_SEC; \
|
||||
} while (0)
|
||||
|
||||
#endif /* _POSIXSELECT_H_ */
|
|
@ -5,19 +5,19 @@
|
|||
|
||||
This file is part of GNU Bash, the Bourne Again SHell.
|
||||
|
||||
Bash is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
Bash is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Bash is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||
License for more details.
|
||||
Bash is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Bash; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
along with Bash. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* This file should be included instead of <sys/stat.h>.
|
||||
It relies on the local sys/stat.h to work though. */
|
||||
|
|
|
@ -1,25 +1,25 @@
|
|||
/* readline.c -- a general facility for reading lines of input
|
||||
with emacs style editing and completion. */
|
||||
|
||||
/* Copyright (C) 1987-2005 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define READLINE_LIBRARY
|
||||
|
||||
#if defined (HAVE_CONFIG_H)
|
||||
|
@ -49,6 +49,11 @@
|
|||
|
||||
#include <stdio.h>
|
||||
#include "posixjmp.h"
|
||||
#include <errno.h>
|
||||
|
||||
#if !defined (errno)
|
||||
extern int errno;
|
||||
#endif /* !errno */
|
||||
|
||||
/* System-specific feature definitions and include files. */
|
||||
#include "rldefs.h"
|
||||
|
@ -158,7 +163,7 @@ int rl_done;
|
|||
rl_command_func_t *rl_last_func = (rl_command_func_t *)NULL;
|
||||
|
||||
/* Top level environment for readline_internal (). */
|
||||
procenv_t readline_top_level;
|
||||
procenv_t _rl_top_level;
|
||||
|
||||
/* The streams we interact with. */
|
||||
FILE *_rl_in_stream, *_rl_out_stream;
|
||||
|
@ -171,7 +176,7 @@ FILE *rl_outstream = (FILE *)NULL;
|
|||
set to 1 if there is a controlling terminal, we can get its attributes,
|
||||
and the attributes include `echo'. Look at rltty.c:prepare_terminal_settings
|
||||
for the code that sets it. */
|
||||
int readline_echoing_p = 0;
|
||||
int _rl_echoing_p = 0;
|
||||
|
||||
/* Current prompt. */
|
||||
char *rl_prompt = (char *)NULL;
|
||||
|
@ -265,6 +270,15 @@ int _rl_output_meta_chars = 0;
|
|||
them to equivalent readline functions at startup. */
|
||||
int _rl_bind_stty_chars = 1;
|
||||
|
||||
/* Non-zero means to go through the history list at every newline (or
|
||||
whenever rl_done is set and readline returns) and revert each line to
|
||||
its initial state. */
|
||||
int _rl_revert_all_at_newline = 0;
|
||||
|
||||
/* Non-zero means to honor the termios ECHOCTL bit and echo control
|
||||
characters corresponding to keyboard-generated signals. */
|
||||
int _rl_echo_control_chars = 1;
|
||||
|
||||
/* **************************************************************** */
|
||||
/* */
|
||||
/* Top Level Functions */
|
||||
|
@ -295,6 +309,9 @@ readline (prompt)
|
|||
const char *prompt;
|
||||
{
|
||||
char *value;
|
||||
#if 0
|
||||
int in_callback;
|
||||
#endif
|
||||
|
||||
/* If we are at EOF return a NULL string. */
|
||||
if (rl_pending_input == EOF)
|
||||
|
@ -303,6 +320,15 @@ readline (prompt)
|
|||
return ((char *)NULL);
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* If readline() is called after installing a callback handler, temporarily
|
||||
turn off the callback state to avoid ensuing messiness. Patch supplied
|
||||
by the gdb folks. XXX -- disabled. This can be fooled and readline
|
||||
left in a strange state by a poorly-timed longjmp. */
|
||||
if (in_callback = RL_ISSTATE (RL_STATE_CALLBACK))
|
||||
RL_UNSETSTATE (RL_STATE_CALLBACK);
|
||||
#endif
|
||||
|
||||
rl_set_prompt (prompt);
|
||||
|
||||
rl_initialize ();
|
||||
|
@ -321,6 +347,11 @@ readline (prompt)
|
|||
rl_clear_signals ();
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
if (in_callback)
|
||||
RL_SETSTATE (RL_STATE_CALLBACK);
|
||||
#endif
|
||||
|
||||
return (value);
|
||||
}
|
||||
|
||||
|
@ -344,14 +375,14 @@ readline_internal_setup ()
|
|||
/* If we're not echoing, we still want to at least print a prompt, because
|
||||
rl_redisplay will not do it for us. If the calling application has a
|
||||
custom redisplay function, though, let that function handle it. */
|
||||
if (readline_echoing_p == 0 && rl_redisplay_function == rl_redisplay)
|
||||
if (_rl_echoing_p == 0 && rl_redisplay_function == rl_redisplay)
|
||||
{
|
||||
if (rl_prompt && rl_already_prompted == 0)
|
||||
{
|
||||
nprompt = _rl_strip_prompt (rl_prompt);
|
||||
fprintf (_rl_out_stream, "%s", nprompt);
|
||||
fflush (_rl_out_stream);
|
||||
free (nprompt);
|
||||
xfree (nprompt);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -365,11 +396,13 @@ readline_internal_setup ()
|
|||
|
||||
#if defined (VI_MODE)
|
||||
if (rl_editing_mode == vi_mode)
|
||||
rl_vi_insertion_mode (1, 'i');
|
||||
rl_vi_insert_mode (1, 'i');
|
||||
#endif /* VI_MODE */
|
||||
|
||||
if (rl_pre_input_hook)
|
||||
(*rl_pre_input_hook) ();
|
||||
|
||||
RL_CHECK_SIGNALS ();
|
||||
}
|
||||
|
||||
STATIC_CALLBACK char *
|
||||
|
@ -379,6 +412,8 @@ readline_internal_teardown (eof)
|
|||
char *temp;
|
||||
HIST_ENTRY *entry;
|
||||
|
||||
RL_CHECK_SIGNALS ();
|
||||
|
||||
/* Restore the original of this history line, iff the line that we
|
||||
are editing was originally in the history, AND the line has changed. */
|
||||
entry = current_history ();
|
||||
|
@ -391,9 +426,12 @@ readline_internal_teardown (eof)
|
|||
_rl_free_history_entry (entry);
|
||||
|
||||
strcpy (the_line, temp);
|
||||
free (temp);
|
||||
xfree (temp);
|
||||
}
|
||||
|
||||
if (_rl_revert_all_at_newline)
|
||||
_rl_revert_all_lines ();
|
||||
|
||||
/* At any rate, it is highly likely that this line has an undo list. Get
|
||||
rid of it now. */
|
||||
if (rl_undo_list)
|
||||
|
@ -454,7 +492,7 @@ readline_internal_charloop ()
|
|||
#endif
|
||||
lk = _rl_last_command_was_kill;
|
||||
|
||||
code = setjmp (readline_top_level);
|
||||
code = setjmp (_rl_top_level);
|
||||
|
||||
if (code)
|
||||
{
|
||||
|
@ -462,7 +500,7 @@ readline_internal_charloop ()
|
|||
_rl_want_redisplay = 0;
|
||||
/* If we get here, we're not being called from something dispatched
|
||||
from _rl_callback_read_char(), which sets up its own value of
|
||||
readline_top_level (saving and restoring the old, of course), so
|
||||
_rl_top_level (saving and restoring the old, of course), so
|
||||
we can just return here. */
|
||||
if (RL_ISSTATE (RL_STATE_CALLBACK))
|
||||
return (0);
|
||||
|
@ -479,6 +517,20 @@ readline_internal_charloop ()
|
|||
c = rl_read_key ();
|
||||
RL_UNSETSTATE(RL_STATE_READCMD);
|
||||
|
||||
/* look at input.c:rl_getc() for the circumstances under which this will
|
||||
be returned; punt immediately on read error without converting it to
|
||||
a newline. */
|
||||
if (c == READERR)
|
||||
{
|
||||
#if defined (READLINE_CALLBACKS)
|
||||
RL_SETSTATE(RL_STATE_DONE);
|
||||
return (rl_done = 1);
|
||||
#else
|
||||
eof_found = 1;
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* EOF typed to a non-blank line is a <NL>. */
|
||||
if (c == EOF && rl_end)
|
||||
c = NEWLINE;
|
||||
|
@ -498,6 +550,7 @@ readline_internal_charloop ()
|
|||
|
||||
lastc = c;
|
||||
_rl_dispatch ((unsigned char)c, _rl_keymap);
|
||||
RL_CHECK_SIGNALS ();
|
||||
|
||||
/* If there was no change in _rl_last_command_was_kill, then no kill
|
||||
has taken place. Note that if input is pending we are reading
|
||||
|
@ -576,7 +629,7 @@ void
|
|||
_rl_keyseq_cxt_dispose (cxt)
|
||||
_rl_keyseq_cxt *cxt;
|
||||
{
|
||||
free (cxt);
|
||||
xfree (cxt);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -618,7 +671,6 @@ _rl_dispatch_callback (cxt)
|
|||
int nkey, r;
|
||||
|
||||
/* For now */
|
||||
#if 1
|
||||
/* The first time this context is used, we want to read input and dispatch
|
||||
on it. When traversing the chain of contexts back `up', we want to use
|
||||
the value from the next context down. We're simulating recursion using
|
||||
|
@ -626,18 +678,22 @@ _rl_dispatch_callback (cxt)
|
|||
if ((cxt->flags & KSEQ_DISPATCHED) == 0)
|
||||
{
|
||||
nkey = _rl_subseq_getchar (cxt->okey);
|
||||
if (nkey < 0)
|
||||
{
|
||||
_rl_abort_internal ();
|
||||
return -1;
|
||||
}
|
||||
r = _rl_dispatch_subseq (nkey, cxt->dmap, cxt->subseq_arg);
|
||||
cxt->flags |= KSEQ_DISPATCHED;
|
||||
}
|
||||
else
|
||||
r = cxt->childval;
|
||||
#else
|
||||
r = _rl_dispatch_subseq (nkey, cxt->dmap, cxt->subseq_arg);
|
||||
#endif
|
||||
|
||||
/* For now */
|
||||
if (r != -3) /* don't do this if we indicate there will be other matches */
|
||||
r = _rl_subseq_result (r, cxt->oldmap, cxt->okey, (cxt->flags & KSEQ_SUBSEQ));
|
||||
|
||||
RL_CHECK_SIGNALS ();
|
||||
if (r == 0) /* success! */
|
||||
{
|
||||
_rl_keyseq_chain_dispose ();
|
||||
|
@ -724,6 +780,8 @@ _rl_dispatch_subseq (key, map, got_subseq)
|
|||
remember the last command executed in this variable. */
|
||||
if (rl_pending_input == 0 && map[key].function != rl_digit_argument)
|
||||
rl_last_func = map[key].function;
|
||||
|
||||
RL_CHECK_SIGNALS ();
|
||||
}
|
||||
else if (map[ANYOTHERKEY].function)
|
||||
{
|
||||
|
@ -778,7 +836,7 @@ _rl_dispatch_subseq (key, map, got_subseq)
|
|||
{
|
||||
/* Return 0 only the first time, to indicate success to
|
||||
_rl_callback_read_char. The rest of the time, we're called
|
||||
from _rl_dispatch_callback, so we return 3 to indicate
|
||||
from _rl_dispatch_callback, so we return -3 to indicate
|
||||
special handling is necessary. */
|
||||
r = RL_ISSTATE (RL_STATE_MULTIKEY) ? -3 : 0;
|
||||
cxt = _rl_keyseq_cxt_alloc ();
|
||||
|
@ -1116,6 +1174,10 @@ bind_arrow_keys ()
|
|||
|
||||
#if defined (VI_MODE)
|
||||
bind_arrow_keys_internal (vi_movement_keymap);
|
||||
/* Unbind vi_movement_keymap[ESC] to allow users to repeatedly hit ESC
|
||||
in vi command mode while still allowing the arrow keys to work. */
|
||||
if (vi_movement_keymap[ESC].type == ISKMAP)
|
||||
rl_bind_keyseq_in_map ("\033", (rl_command_func_t *)NULL, vi_movement_keymap);
|
||||
bind_arrow_keys_internal (vi_insertion_keymap);
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -1,24 +1,23 @@
|
|||
/* Readline.h -- the names of functions callable from within readline. */
|
||||
|
||||
/* Copyright (C) 1987-2005 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1987-2011 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#if !defined (_READLINE_H_)
|
||||
#define _READLINE_H_
|
||||
|
@ -40,9 +39,9 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
/* Hex-encoded Readline version number. */
|
||||
#define RL_READLINE_VERSION 0x0501 /* Readline 5.1 */
|
||||
#define RL_VERSION_MAJOR 5
|
||||
#define RL_VERSION_MINOR 1
|
||||
#define RL_READLINE_VERSION 0x0602 /* Readline 6.2 */
|
||||
#define RL_VERSION_MAJOR 6
|
||||
#define RL_VERSION_MINOR 2
|
||||
|
||||
/* Readline data structures. */
|
||||
|
||||
|
@ -96,6 +95,7 @@ extern int rl_forward_word PARAMS((int, int));
|
|||
extern int rl_backward_word PARAMS((int, int));
|
||||
extern int rl_refresh_line PARAMS((int, int));
|
||||
extern int rl_clear_screen PARAMS((int, int));
|
||||
extern int rl_skip_csi_sequence PARAMS((int, int));
|
||||
extern int rl_arrow_keys PARAMS((int, int));
|
||||
|
||||
/* Bindable commands for inserting and deleting text. */
|
||||
|
@ -151,7 +151,9 @@ extern int rl_dump_variables PARAMS((int, int));
|
|||
extern int rl_complete PARAMS((int, int));
|
||||
extern int rl_possible_completions PARAMS((int, int));
|
||||
extern int rl_insert_completions PARAMS((int, int));
|
||||
extern int rl_old_menu_complete PARAMS((int, int));
|
||||
extern int rl_menu_complete PARAMS((int, int));
|
||||
extern int rl_backward_menu_complete PARAMS((int, int));
|
||||
|
||||
/* Bindable commands for killing and yanking text, and managing the kill ring. */
|
||||
extern int rl_kill_word PARAMS((int, int));
|
||||
|
@ -233,6 +235,7 @@ extern int rl_vi_append_mode PARAMS((int, int));
|
|||
extern int rl_vi_append_eol PARAMS((int, int));
|
||||
extern int rl_vi_eof_maybe PARAMS((int, int));
|
||||
extern int rl_vi_insertion_mode PARAMS((int, int));
|
||||
extern int rl_vi_insert_mode PARAMS((int, int));
|
||||
extern int rl_vi_movement_mode PARAMS((int, int));
|
||||
extern int rl_vi_arg_digit PARAMS((int, int));
|
||||
extern int rl_vi_change_case PARAMS((int, int));
|
||||
|
@ -420,6 +423,7 @@ extern int rl_set_keyboard_input_timeout PARAMS((int));
|
|||
extern void rl_extend_line_buffer PARAMS((int));
|
||||
extern int rl_ding PARAMS((void));
|
||||
extern int rl_alphabetic PARAMS((int));
|
||||
extern void rl_free PARAMS((void *));
|
||||
|
||||
/* Readline signal handling, from signals.c */
|
||||
extern int rl_set_signals PARAMS((void));
|
||||
|
@ -428,6 +432,8 @@ extern void rl_cleanup_after_signal PARAMS((void));
|
|||
extern void rl_reset_after_signal PARAMS((void));
|
||||
extern void rl_free_line_state PARAMS((void));
|
||||
|
||||
extern void rl_echo_signal_char PARAMS((int));
|
||||
|
||||
extern int rl_set_paren_blink_timeout PARAMS((int));
|
||||
|
||||
/* Undocumented. */
|
||||
|
@ -493,6 +499,10 @@ extern const char *rl_readline_name;
|
|||
readline (), and should not be assigned to directly. */
|
||||
extern char *rl_prompt;
|
||||
|
||||
/* The prompt string that is actually displayed by rl_redisplay. Public so
|
||||
applications can more easily supply their own redisplay functions. */
|
||||
extern char *rl_display_prompt;
|
||||
|
||||
/* The line buffer that is in use. */
|
||||
extern char *rl_line_buffer;
|
||||
|
||||
|
@ -599,6 +609,10 @@ extern int rl_catch_sigwinch;
|
|||
filename completer. */
|
||||
extern rl_compentry_func_t *rl_completion_entry_function;
|
||||
|
||||
/* Optional generator for menu completion. Default is
|
||||
rl_completion_entry_function (rl_filename_completion_function). */
|
||||
extern rl_compentry_func_t *rl_menu_completion_entry_function;
|
||||
|
||||
/* If rl_ignore_some_completions_function is non-NULL it is the address
|
||||
of a function to call after all of the possible matches have been
|
||||
generated, but before the actual completion is done to the input line.
|
||||
|
@ -652,18 +666,37 @@ extern const char *rl_special_prefixes;
|
|||
completing on a directory name. The function is called with
|
||||
the address of a string (the current directory name) as an arg. It
|
||||
changes what is displayed when the possible completions are printed
|
||||
or inserted. */
|
||||
or inserted. The directory completion hook should perform
|
||||
any necessary dequoting. This function should return 1 if it modifies
|
||||
the directory name pointer passed as an argument. If the directory
|
||||
completion hook returns 0, it should not modify the directory name
|
||||
pointer passed as an argument. */
|
||||
extern rl_icppfunc_t *rl_directory_completion_hook;
|
||||
|
||||
/* If non-zero, this is the address of a function to call when completing
|
||||
a directory name. This function takes the address of the directory name
|
||||
to be modified as an argument. Unlike rl_directory_completion_hook, it
|
||||
only modifies the directory name used in opendir(2), not what is displayed
|
||||
when the possible completions are printed or inserted. It is called
|
||||
before rl_directory_completion_hook. I'm not happy with how this works
|
||||
yet, so it's undocumented. */
|
||||
when the possible completions are printed or inserted. If set, it takes
|
||||
precedence over rl_directory_completion_hook. The directory rewrite
|
||||
hook should perform any necessary dequoting. This function has the same
|
||||
return value properties as the directory_completion_hook.
|
||||
|
||||
I'm not happy with how this works yet, so it's undocumented. I'm trying
|
||||
it in bash to see how well it goes. */
|
||||
extern rl_icppfunc_t *rl_directory_rewrite_hook;
|
||||
|
||||
/* If non-zero, this is the address of a function to call when reading
|
||||
directory entries from the filesystem for completion and comparing
|
||||
them to the partial word to be completed. The function should
|
||||
either return its first argument (if no conversion takes place) or
|
||||
newly-allocated memory. This can, for instance, convert filenames
|
||||
between character sets for comparison against what's typed at the
|
||||
keyboard. The returned value is what is added to the list of
|
||||
matches. The second argument is the length of the filename to be
|
||||
converted. */
|
||||
extern rl_dequote_func_t *rl_filename_rewrite_hook;
|
||||
|
||||
/* Backwards compatibility with previous versions of readline. */
|
||||
#define rl_symbolic_link_hook rl_directory_completion_hook
|
||||
|
||||
|
@ -713,6 +746,9 @@ extern int rl_attempted_completion_over;
|
|||
functions. */
|
||||
extern int rl_completion_type;
|
||||
|
||||
/* Set to the last key used to invoke one of the completion functions */
|
||||
extern int rl_completion_invoking_key;
|
||||
|
||||
/* Up to this many items will be displayed in response to a
|
||||
possible-completions call. After that, we ask the user if she
|
||||
is sure she wants to see them all. The default value is 100. */
|
||||
|
@ -739,6 +775,9 @@ extern int rl_completion_found_quote;
|
|||
application-specific completion function. */
|
||||
extern int rl_completion_suppress_quote;
|
||||
|
||||
/* If non-zero, readline will sort the completion matches. On by default. */
|
||||
extern int rl_sort_completion_matches;
|
||||
|
||||
/* If non-zero, a slash will be appended to completed filenames that are
|
||||
symbolic links to directory names, subject to the value of the
|
||||
mark-directories variable (which is user-settable). This exists so
|
||||
|
@ -757,6 +796,10 @@ extern int rl_ignore_completion_duplicates;
|
|||
completion character will be inserted as any other. */
|
||||
extern int rl_inhibit_completion;
|
||||
|
||||
/* Input error; can be returned by (*rl_getc_function) if readline is reading
|
||||
a top-level command (RL_ISSTATE (RL_STATE_READCMD)). */
|
||||
#define READERR (-2)
|
||||
|
||||
/* Definitions available for use by readline clients. */
|
||||
#define RL_PROMPT_START_IGNORE '\001'
|
||||
#define RL_PROMPT_END_IGNORE '\002'
|
||||
|
@ -770,31 +813,32 @@ extern int rl_inhibit_completion;
|
|||
/* Possible state values for rl_readline_state */
|
||||
#define RL_STATE_NONE 0x000000 /* no state; before first call */
|
||||
|
||||
#define RL_STATE_INITIALIZING 0x000001 /* initializing */
|
||||
#define RL_STATE_INITIALIZED 0x000002 /* initialization done */
|
||||
#define RL_STATE_TERMPREPPED 0x000004 /* terminal is prepped */
|
||||
#define RL_STATE_READCMD 0x000008 /* reading a command key */
|
||||
#define RL_STATE_METANEXT 0x000010 /* reading input after ESC */
|
||||
#define RL_STATE_DISPATCHING 0x000020 /* dispatching to a command */
|
||||
#define RL_STATE_MOREINPUT 0x000040 /* reading more input in a command function */
|
||||
#define RL_STATE_ISEARCH 0x000080 /* doing incremental search */
|
||||
#define RL_STATE_NSEARCH 0x000100 /* doing non-inc search */
|
||||
#define RL_STATE_SEARCH 0x000200 /* doing a history search */
|
||||
#define RL_STATE_NUMERICARG 0x000400 /* reading numeric argument */
|
||||
#define RL_STATE_MACROINPUT 0x000800 /* getting input from a macro */
|
||||
#define RL_STATE_MACRODEF 0x001000 /* defining keyboard macro */
|
||||
#define RL_STATE_OVERWRITE 0x002000 /* overwrite mode */
|
||||
#define RL_STATE_COMPLETING 0x004000 /* doing completion */
|
||||
#define RL_STATE_SIGHANDLER 0x008000 /* in readline sighandler */
|
||||
#define RL_STATE_UNDOING 0x010000 /* doing an undo */
|
||||
#define RL_STATE_INPUTPENDING 0x020000 /* rl_execute_next called */
|
||||
#define RL_STATE_TTYCSAVED 0x040000 /* tty special chars saved */
|
||||
#define RL_STATE_CALLBACK 0x080000 /* using the callback interface */
|
||||
#define RL_STATE_VIMOTION 0x100000 /* reading vi motion arg */
|
||||
#define RL_STATE_MULTIKEY 0x200000 /* reading multiple-key command */
|
||||
#define RL_STATE_VICMDONCE 0x400000 /* entered vi command mode at least once */
|
||||
#define RL_STATE_INITIALIZING 0x0000001 /* initializing */
|
||||
#define RL_STATE_INITIALIZED 0x0000002 /* initialization done */
|
||||
#define RL_STATE_TERMPREPPED 0x0000004 /* terminal is prepped */
|
||||
#define RL_STATE_READCMD 0x0000008 /* reading a command key */
|
||||
#define RL_STATE_METANEXT 0x0000010 /* reading input after ESC */
|
||||
#define RL_STATE_DISPATCHING 0x0000020 /* dispatching to a command */
|
||||
#define RL_STATE_MOREINPUT 0x0000040 /* reading more input in a command function */
|
||||
#define RL_STATE_ISEARCH 0x0000080 /* doing incremental search */
|
||||
#define RL_STATE_NSEARCH 0x0000100 /* doing non-inc search */
|
||||
#define RL_STATE_SEARCH 0x0000200 /* doing a history search */
|
||||
#define RL_STATE_NUMERICARG 0x0000400 /* reading numeric argument */
|
||||
#define RL_STATE_MACROINPUT 0x0000800 /* getting input from a macro */
|
||||
#define RL_STATE_MACRODEF 0x0001000 /* defining keyboard macro */
|
||||
#define RL_STATE_OVERWRITE 0x0002000 /* overwrite mode */
|
||||
#define RL_STATE_COMPLETING 0x0004000 /* doing completion */
|
||||
#define RL_STATE_SIGHANDLER 0x0008000 /* in readline sighandler */
|
||||
#define RL_STATE_UNDOING 0x0010000 /* doing an undo */
|
||||
#define RL_STATE_INPUTPENDING 0x0020000 /* rl_execute_next called */
|
||||
#define RL_STATE_TTYCSAVED 0x0040000 /* tty special chars saved */
|
||||
#define RL_STATE_CALLBACK 0x0080000 /* using the callback interface */
|
||||
#define RL_STATE_VIMOTION 0x0100000 /* reading vi motion arg */
|
||||
#define RL_STATE_MULTIKEY 0x0200000 /* reading multiple-key command */
|
||||
#define RL_STATE_VICMDONCE 0x0400000 /* entered vi command mode at least once */
|
||||
#define RL_STATE_REDISPLAYING 0x0800000 /* updating terminal display */
|
||||
|
||||
#define RL_STATE_DONE 0x800000 /* done; accepted line */
|
||||
#define RL_STATE_DONE 0x1000000 /* done; accepted line */
|
||||
|
||||
#define RL_SETSTATE(x) (rl_readline_state |= (x))
|
||||
#define RL_UNSETSTATE(x) (rl_readline_state &= ~(x))
|
||||
|
|
|
@ -1,25 +1,23 @@
|
|||
/* rlconf.h -- readline configuration definitions */
|
||||
|
||||
/* Copyright (C) 1994 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1992-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file contains the Readline Library (the Library), a set of
|
||||
routines for providing Emacs style line input to programs that ask
|
||||
for it.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The Library is free software; you can redistribute it and/or modify
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The Library is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#if !defined (_RLCONF_H_)
|
||||
#define _RLCONF_H_
|
||||
|
@ -37,9 +35,12 @@
|
|||
/* Ugly but working hack for binding prefix meta. */
|
||||
#define PREFIX_META_HACK
|
||||
|
||||
/* The final, last-ditch effort file name for an init file. */
|
||||
/* The next-to-last-ditch effort file name for a user-specific init file. */
|
||||
#define DEFAULT_INPUTRC "~/.inputrc"
|
||||
|
||||
/* The ultimate last-ditch filenname for an init file -- system-wide. */
|
||||
#define SYS_INPUTRC "/etc/inputrc"
|
||||
|
||||
/* If defined, expand tabs to spaces. */
|
||||
#define DISPLAY_TABS
|
||||
|
||||
|
|
|
@ -2,26 +2,24 @@
|
|||
for readline. This should be included after any files that define
|
||||
system-specific constants like _POSIX_VERSION or USG. */
|
||||
|
||||
/* Copyright (C) 1987-2005 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file contains the Readline Library (the Library), a set of
|
||||
routines for providing Emacs style line input to programs that ask
|
||||
for it.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The Library is free software; you can redistribute it and/or modify
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The Library is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#if !defined (_RLDEFS_H_)
|
||||
#define _RLDEFS_H_
|
||||
|
@ -32,6 +30,10 @@
|
|||
|
||||
#include "rlstdc.h"
|
||||
|
||||
#if defined (STRCOLL_BROKEN)
|
||||
# undef HAVE_STRCOLL
|
||||
#endif
|
||||
|
||||
#if defined (_POSIX_VERSION) && !defined (TERMIOS_MISSING)
|
||||
# define TERMIOS_TTY_DRIVER
|
||||
#else
|
||||
|
|
|
@ -1,24 +1,23 @@
|
|||
/* rlmbutil.h -- utility functions for multibyte characters. */
|
||||
|
||||
/* Copyright (C) 2001, 2003 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2001-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#if !defined (_RL_MBUTIL_H_)
|
||||
#define _RL_MBUTIL_H_
|
||||
|
@ -30,22 +29,21 @@
|
|||
/************************************************/
|
||||
|
||||
/* For platforms which support the ISO C amendement 1 functionality we
|
||||
support user defined character classes.
|
||||
|
||||
Some platforms have the multibyte functions such as mbsrtowcs but
|
||||
are lacking the multitype type mbstate_t. BeOS (unknown version)
|
||||
and HP/UX 11.23 without _XOPEN_SOURCE=500 are like this.
|
||||
|
||||
We really need mbstate_t type to operate properly. For example, see
|
||||
compute_lcd_of_matches, where two mbstate_t's are active at the same
|
||||
time. So we require both the functions and the mbstate_t type in
|
||||
order to enable multibyte support. */
|
||||
|
||||
support user defined character classes. */
|
||||
/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>. */
|
||||
#if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H)
|
||||
#if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H) && defined (HAVE_LOCALE_H)
|
||||
# include <wchar.h>
|
||||
# include <wctype.h>
|
||||
# if defined (HAVE_MBSTATE_T) && defined (HAVE_MBSRTOWCS) && defined (HAVE_MBRTOWC) && defined (HAVE_MBRLEN) && defined (HAVE_WCWIDTH)
|
||||
# if defined (HAVE_ISWCTYPE) && \
|
||||
defined (HAVE_ISWLOWER) && \
|
||||
defined (HAVE_ISWUPPER) && \
|
||||
defined (HAVE_MBSRTOWCS) && \
|
||||
defined (HAVE_MBRTOWC) && \
|
||||
defined (HAVE_MBRLEN) && \
|
||||
defined (HAVE_TOWLOWER) && \
|
||||
defined (HAVE_TOWUPPER) && \
|
||||
defined (HAVE_WCHAR_T) && \
|
||||
defined (HAVE_WCWIDTH)
|
||||
/* system is supposed to support XPG5 */
|
||||
# define HANDLE_MULTIBYTE 1
|
||||
# endif
|
||||
|
|
|
@ -1,25 +1,24 @@
|
|||
/* rlprivate.h -- functions and variables global to the readline library,
|
||||
but not intended for use by applications. */
|
||||
|
||||
/* Copyright (C) 1999-2005 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1999-2010 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#if !defined (_RL_PRIVATE_H_)
|
||||
#define _RL_PRIVATE_H_
|
||||
|
@ -28,6 +27,21 @@
|
|||
#include "rlstdc.h"
|
||||
#include "posixjmp.h" /* defines procenv_t */
|
||||
|
||||
/*************************************************************************
|
||||
* *
|
||||
* Convenience definitions *
|
||||
* *
|
||||
*************************************************************************/
|
||||
|
||||
#define EMACS_MODE() (rl_editing_mode == emacs_mode)
|
||||
#define VI_COMMAND_MODE() (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap)
|
||||
#define VI_INSERT_MODE() (rl_editing_mode == vi_mode && _rl_keymap == vi_insertion_keymap)
|
||||
|
||||
#define RL_CHECK_SIGNALS() \
|
||||
do { \
|
||||
if (_rl_caught_signal) _rl_signal_handler (_rl_caught_signal); \
|
||||
} while (0)
|
||||
|
||||
/*************************************************************************
|
||||
* *
|
||||
* Global structs undocumented in texinfo manual and not in readline.h *
|
||||
|
@ -42,6 +56,7 @@
|
|||
#define SF_REVERSE 0x01
|
||||
#define SF_FOUND 0x02
|
||||
#define SF_FAILED 0x04
|
||||
#define SF_CHGKMAP 0x08
|
||||
|
||||
typedef struct __rl_search_context
|
||||
{
|
||||
|
@ -65,6 +80,9 @@ typedef struct __rl_search_context
|
|||
|
||||
UNDO_LIST *save_undo_list;
|
||||
|
||||
Keymap keymap; /* used when dispatching commands in search string */
|
||||
Keymap okeymap; /* original keymap */
|
||||
|
||||
int history_pos;
|
||||
int direction;
|
||||
|
||||
|
@ -106,7 +124,28 @@ typedef struct __rl_keyseq_context
|
|||
int childval;
|
||||
} _rl_keyseq_cxt;
|
||||
|
||||
/* fill in more as needed */
|
||||
/* vi-mode commands that use result of motion command to define boundaries */
|
||||
#define VIM_DELETE 0x01
|
||||
#define VIM_CHANGE 0x02
|
||||
#define VIM_YANK 0x04
|
||||
|
||||
/* various states for vi-mode commands that use motion commands. reflects
|
||||
RL_READLINE_STATE */
|
||||
#define VMSTATE_READ 0x01
|
||||
#define VMSTATE_NUMARG 0x02
|
||||
|
||||
typedef struct __rl_vimotion_context
|
||||
{
|
||||
int op;
|
||||
int state;
|
||||
int flags; /* reserved */
|
||||
_rl_arg_cxt ncxt;
|
||||
int numeric_arg;
|
||||
int start, end; /* rl_point, rl_end */
|
||||
int key, motion; /* initial key, motion command */
|
||||
} _rl_vimotion_cxt;
|
||||
|
||||
/* fill in more as needed */
|
||||
/* `Generic' callback data and functions */
|
||||
typedef struct __rl_callback_generic_arg
|
||||
{
|
||||
|
@ -139,12 +178,9 @@ extern int rl_visible_stats;
|
|||
extern int rl_line_buffer_len;
|
||||
extern int rl_arg_sign;
|
||||
extern int rl_visible_prompt_length;
|
||||
extern int readline_echoing_p;
|
||||
extern int rl_key_sequence_length;
|
||||
extern int rl_byte_oriented;
|
||||
|
||||
extern _rl_keyseq_cxt *_rl_kscxt;
|
||||
|
||||
/* display.c */
|
||||
extern int rl_display_fixed;
|
||||
|
||||
|
@ -206,6 +242,7 @@ extern void _rl_callback_data_dispose PARAMS((_rl_callback_generic_arg *));
|
|||
/* bind.c */
|
||||
|
||||
/* complete.c */
|
||||
extern void _rl_reset_completion_state PARAMS((void));
|
||||
extern char _rl_find_completion_word PARAMS((int *, int *));
|
||||
extern void _rl_free_match_list PARAMS((char **));
|
||||
|
||||
|
@ -261,6 +298,8 @@ extern void _rl_start_using_history PARAMS((void));
|
|||
extern int _rl_free_saved_history_line PARAMS((void));
|
||||
extern void _rl_set_insert_mode PARAMS((int, int));
|
||||
|
||||
extern void _rl_revert_all_lines PARAMS((void));
|
||||
|
||||
/* nls.c */
|
||||
extern int _rl_init_eightbit PARAMS((void));
|
||||
|
||||
|
@ -281,6 +320,14 @@ extern int _rl_restore_tty_signals PARAMS((void));
|
|||
/* search.c */
|
||||
extern int _rl_nsearch_callback PARAMS((_rl_search_cxt *));
|
||||
|
||||
/* signals.c */
|
||||
extern void _rl_signal_handler PARAMS((int));
|
||||
|
||||
extern void _rl_block_sigint PARAMS((void));
|
||||
extern void _rl_release_sigint PARAMS((void));
|
||||
extern void _rl_block_sigwinch PARAMS((void));
|
||||
extern void _rl_release_sigwinch PARAMS((void));
|
||||
|
||||
/* terminal.c */
|
||||
extern void _rl_get_screen_size PARAMS((int, int));
|
||||
extern int _rl_init_terminal_io PARAMS((const char *));
|
||||
|
@ -298,6 +345,7 @@ extern void _rl_set_cursor PARAMS((int, int));
|
|||
/* text.c */
|
||||
extern void _rl_fix_point PARAMS((int));
|
||||
extern int _rl_replace_text PARAMS((const char *, int, int));
|
||||
extern int _rl_forward_char_internal PARAMS((int));
|
||||
extern int _rl_insert_char PARAMS((int, int));
|
||||
extern int _rl_overwrite_char PARAMS((int, int));
|
||||
extern int _rl_overwrite_rubout PARAMS((int, int));
|
||||
|
@ -309,8 +357,25 @@ extern int _rl_char_search_internal PARAMS((int, int, int));
|
|||
#endif
|
||||
extern int _rl_set_mark_at_pos PARAMS((int));
|
||||
|
||||
/* undo.c */
|
||||
extern UNDO_LIST *_rl_copy_undo_entry PARAMS((UNDO_LIST *));
|
||||
extern UNDO_LIST *_rl_copy_undo_list PARAMS((UNDO_LIST *));
|
||||
|
||||
/* util.c */
|
||||
#if defined (USE_VARARGS) && defined (PREFER_STDARG)
|
||||
extern void _rl_ttymsg (const char *, ...) __attribute__((__format__ (printf, 1, 2)));
|
||||
extern void _rl_errmsg (const char *, ...) __attribute__((__format__ (printf, 1, 2)));
|
||||
extern void _rl_trace (const char *, ...) __attribute__((__format__ (printf, 1, 2)));
|
||||
#else
|
||||
extern void _rl_ttymsg ();
|
||||
extern void _rl_errmsg ();
|
||||
extern void _rl_trace ();
|
||||
#endif
|
||||
|
||||
extern int _rl_tropen PARAMS((void));
|
||||
|
||||
extern int _rl_abort_internal PARAMS((void));
|
||||
extern int _rl_null_function PARAMS((int, int));
|
||||
extern char *_rl_strindex PARAMS((const char *, const char *));
|
||||
extern int _rl_qsort_string_compare PARAMS((char **, char **));
|
||||
extern int (_rl_uppercase_p) PARAMS((int));
|
||||
|
@ -327,14 +392,15 @@ extern void _rl_vi_reset_last PARAMS((void));
|
|||
extern void _rl_vi_set_last PARAMS((int, int, int));
|
||||
extern int _rl_vi_textmod_command PARAMS((int));
|
||||
extern void _rl_vi_done_inserting PARAMS((void));
|
||||
extern int _rl_vi_domove_callback PARAMS((_rl_vimotion_cxt *));
|
||||
|
||||
/*************************************************************************
|
||||
* Undocumented private variables *
|
||||
*************************************************************************/
|
||||
|
||||
/* bind.c */
|
||||
extern const char *_rl_possible_control_prefixes[];
|
||||
extern const char *_rl_possible_meta_prefixes[];
|
||||
extern const char * const _rl_possible_control_prefixes[];
|
||||
extern const char * const _rl_possible_meta_prefixes[];
|
||||
|
||||
/* callback.c */
|
||||
extern _rl_callback_func_t *_rl_callback_func;
|
||||
|
@ -345,17 +411,21 @@ extern int _rl_complete_show_all;
|
|||
extern int _rl_complete_show_unmodified;
|
||||
extern int _rl_complete_mark_directories;
|
||||
extern int _rl_complete_mark_symlink_dirs;
|
||||
extern int _rl_completion_prefix_display_length;
|
||||
extern int _rl_completion_columns;
|
||||
extern int _rl_print_completions_horizontally;
|
||||
extern int _rl_completion_case_fold;
|
||||
extern int _rl_completion_case_map;
|
||||
extern int _rl_match_hidden_files;
|
||||
extern int _rl_page_completions;
|
||||
extern int _rl_skip_completed_text;
|
||||
extern int _rl_menu_complete_prefix_first;
|
||||
|
||||
/* display.c */
|
||||
extern int _rl_vis_botlin;
|
||||
extern int _rl_last_c_pos;
|
||||
extern int _rl_suppress_redisplay;
|
||||
extern int _rl_want_redisplay;
|
||||
extern char *rl_display_prompt;
|
||||
|
||||
/* isearch.c */
|
||||
extern char *_rl_isearch_terminators;
|
||||
|
@ -372,6 +442,7 @@ extern int _rl_history_saved_point;
|
|||
extern _rl_arg_cxt _rl_argcxt;
|
||||
|
||||
/* readline.c */
|
||||
extern int _rl_echoing_p;
|
||||
extern int _rl_horizontal_scroll_mode;
|
||||
extern int _rl_mark_modified_lines;
|
||||
extern int _rl_bell_preference;
|
||||
|
@ -379,6 +450,8 @@ extern int _rl_meta_flag;
|
|||
extern int _rl_convert_meta_chars_to_ascii;
|
||||
extern int _rl_output_meta_chars;
|
||||
extern int _rl_bind_stty_chars;
|
||||
extern int _rl_revert_all_at_newline;
|
||||
extern int _rl_echo_control_chars;
|
||||
extern char *_rl_comment_begin;
|
||||
extern unsigned char _rl_parsing_conditionalized_out;
|
||||
extern Keymap _rl_keymap;
|
||||
|
@ -386,11 +459,22 @@ extern FILE *_rl_in_stream;
|
|||
extern FILE *_rl_out_stream;
|
||||
extern int _rl_last_command_was_kill;
|
||||
extern int _rl_eof_char;
|
||||
extern procenv_t readline_top_level;
|
||||
extern procenv_t _rl_top_level;
|
||||
extern _rl_keyseq_cxt *_rl_kscxt;
|
||||
|
||||
/* search.c */
|
||||
extern _rl_search_cxt *_rl_nscxt;
|
||||
|
||||
/* signals.c */
|
||||
extern int _rl_interrupt_immediately;
|
||||
extern int volatile _rl_caught_signal;
|
||||
|
||||
extern int _rl_echoctl;
|
||||
|
||||
extern int _rl_intr_char;
|
||||
extern int _rl_quit_char;
|
||||
extern int _rl_susp_char;
|
||||
|
||||
/* terminal.c */
|
||||
extern int _rl_enable_keypad;
|
||||
extern int _rl_enable_meta;
|
||||
|
@ -404,6 +488,7 @@ extern char *_rl_term_up;
|
|||
extern char *_rl_term_dc;
|
||||
extern char *_rl_term_cr;
|
||||
extern char *_rl_term_IC;
|
||||
extern char *_rl_term_forward_char;
|
||||
extern int _rl_screenheight;
|
||||
extern int _rl_screenwidth;
|
||||
extern int _rl_screenchars;
|
||||
|
@ -416,5 +501,6 @@ extern int _rl_undo_group_level;
|
|||
|
||||
/* vi_mode.c */
|
||||
extern int _rl_vi_last_command;
|
||||
extern _rl_vimotion_cxt *_rl_vimvcxt;
|
||||
|
||||
#endif /* _RL_PRIVATE_H_ */
|
||||
|
|
|
@ -1,24 +1,23 @@
|
|||
/* rlshell.h -- utility functions normally provided by bash. */
|
||||
|
||||
/* Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1999-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library, a library for
|
||||
reading lines of text with interactive input and history editing.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
The GNU Readline Library is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
The GNU Readline Library is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
The GNU General Public License is often shipped with GNU software, and
|
||||
is generally kept in a file called COPYING or LICENSE. If you do not
|
||||
have a copy of the license, write to the Free Software Foundation,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#if !defined (_RL_SHELL_H_)
|
||||
#define _RL_SHELL_H_
|
||||
|
|
|
@ -1,23 +1,23 @@
|
|||
/* stdc.h -- macros to make source compile on both ANSI C and K&R C
|
||||
compilers. */
|
||||
/* stdc.h -- macros to make source compile on both ANSI C and K&R C compilers. */
|
||||
|
||||
/* Copyright (C) 1993 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1993-2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Bash, the Bourne Again SHell.
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
Bash is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
Readline is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Bash is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||
License for more details.
|
||||
Readline is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Bash; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
|
||||
along with Readline. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#if !defined (_RL_STDC_H_)
|
||||
#define _RL_STDC_H_
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue