commit bash-20051123 snapshot

This commit is contained in:
Chet Ramey
2011-12-03 13:53:34 -05:00
parent ac58e8c8a1
commit 28089d0435
35 changed files with 7529 additions and 1319 deletions
+36
View File
@@ -1,3 +1,39 @@
This document details the changes between this version, bash-3.1-rc2,
and the previous version, bash-3.1-rc1.
1. Changes to Bash
a. Fixed a bug that caused a DEBUG trap to overwrite a command string that's
eventually attached to a background job.
b. Changed some code so that filenames with leading tildes with spaces in the
name aren't tilde-expanded by the bash completion code.
c. Fixed a bug that caused the pushd builtin to fail to change to
directories with leading `-'.
d. Fixed a small memory leak in the programmable completion code.
2. Changes to Readline
a. Fixed a redisplay bug caused by moving the cursor vertically to a line
with invisible characters in the prompt in a multibyte locale.
b. Fixed a bug that could cause the terminal special chars to be bound in the
wrong keymap in vi mode.
3. New Features in Bash
a. If compiled for strict POSIX conformance, LINES and COLUMNS may now
override the true terminal size.
4. New Features in Readline
a. 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.
------------------------------------------------------------------------------
This document details the changes between this version, bash-3.1-rc1,
and the previous version, bash-3.1-beta1.
+24
View File
@@ -12430,3 +12430,27 @@ lib/readline/rltty.c
special characters in the vi insertion keymap if in vi mode. This
matters if we get accept-line for the previous line while in vi
command mode
11/14
-----
builtins/pushd.def
- make sure any call to cd_builtin includes a leading `--' from the
argument list (or constructs one)
11/16
-----
pcomplete.c
- fix small memory leak in gen_wordlist_matches
[bash-3.1-rc2 frozen]
11/23
-----
lib/readline/display.c
- changes to rl_redisplay to compensate for update_line updating
_rl_last_c_pos without taking invisible characters in the line into
account. Important in multibyte locales where _rl_last_c_pos is an
absolute cursor position
- changes to _rl_move_cursor_relative to account for _rl_last_c_pos
being an absolute cursor position in a multibyte character locale
- rewrote _rl_move_cursor_relative to make it a little simpler
+21
View File
@@ -12422,3 +12422,24 @@ lib/readline/readline.h
lib/readline/doc/rltech.texi
- document rl_prefer_env_winsize
11/13
-----
lib/readline/rltty.c
- change rl_prep_terminal to make sure we set and reset the tty
special characters in the vi insertion keymap if in vi mode. This
matters if we get accept-line for the previous line while in vi
command mode
11/14
-----
builtins/pushd.def
- make sure any call to cd_builtin includes a leading `--' from the
argument list (or constructs one)
11/16
-----
pcomplete.c
- fix small memory leak in gen_wordlist_matches
[bash-3.1-rc2 frozen]
+7
View File
@@ -62,6 +62,9 @@ s. Bash now sets the extern variable `environ' to the export environment it
t. A new configuration option, `--enable-strict-posix-default', which will
build bash to be POSIX conforming by default.
u. If compiled for strict POSIX conformance, LINES and COLUMNS may now
override the true terminal size.
2. New Features in Readline
a. The key sequence sent by the keypad `delete' key is now automatically
@@ -78,6 +81,10 @@ 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. 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: rl_prefer_env_winsize
-------------------------------------------------------------------------------
This is a terse description of the new features added to bash-3.0 since
the release of bash-2.05b. As always, the manual page (doc/bash.1) is
+11 -11
View File
@@ -1,7 +1,7 @@
@%:@! /bin/sh
@%:@ From configure.in for Bash 3.1, version 3.180.
@%:@ From configure.in for Bash 3.1, version 3.182.
@%:@ Guess values for system-dependent variables and create Makefiles.
@%:@ Generated by GNU Autoconf 2.59 for bash 3.1-rc1.
@%:@ Generated by GNU Autoconf 2.59 for bash 3.1-rc2.
@%:@
@%:@ Report bugs to <bug-bash@gnu.org>.
@%:@
@@ -270,8 +270,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='bash'
PACKAGE_TARNAME='bash'
PACKAGE_VERSION='3.1-rc1'
PACKAGE_STRING='bash 3.1-rc1'
PACKAGE_VERSION='3.1-rc2'
PACKAGE_STRING='bash 3.1-rc2'
PACKAGE_BUGREPORT='bug-bash@gnu.org'
ac_unique_file="shell.h"
@@ -785,7 +785,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 bash 3.1-rc1 to adapt to many kinds of systems.
\`configure' configures bash 3.1-rc2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -846,7 +846,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of bash 3.1-rc1:";;
short | recursive ) echo "Configuration of bash 3.1-rc2:";;
esac
cat <<\_ACEOF
@@ -1039,7 +1039,7 @@ fi
test -n "$ac_init_help" && exit 0
if $ac_init_version; then
cat <<\_ACEOF
bash configure 3.1-rc1
bash configure 3.1-rc2
generated by GNU Autoconf 2.59
Copyright (C) 2003 Free Software Foundation, Inc.
@@ -1053,7 +1053,7 @@ cat >&5 <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by bash $as_me 3.1-rc1, which was
It was created by bash $as_me 3.1-rc2, which was
generated by GNU Autoconf 2.59. Invocation command line was
$ $0 $@
@@ -1422,7 +1422,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
BASHVERS=3.1
RELSTATUS=rc1
RELSTATUS=rc2
case "$RELSTATUS" in
alp*|bet*|dev*|rc*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;;
@@ -27212,7 +27212,7 @@ _ASBOX
} >&5
cat >&5 <<_CSEOF
This file was extended by bash $as_me 3.1-rc1, which was
This file was extended by bash $as_me 3.1-rc2, which was
generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -27275,7 +27275,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
bash config.status 3.1-rc1
bash config.status 3.1-rc2
configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+17 -17
View File
@@ -17,19 +17,19 @@
{
'm4_pattern_forbid' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
'AC_TYPE_OFF_T' => 1,
'AC_C_VOLATILE' => 1,
'AC_TYPE_OFF_T' => 1,
'AC_FUNC_CLOSEDIR_VOID' => 1,
'AC_REPLACE_FNMATCH' => 1,
'AC_PROG_LIBTOOL' => 1,
'AC_FUNC_STAT' => 1,
'AC_FUNC_WAIT3' => 1,
'AC_HEADER_TIME' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AC_STRUCT_TM' => 1,
'AC_FUNC_WAIT3' => 1,
'AC_FUNC_LSTAT' => 1,
'AC_FUNC_GETMNTENT' => 1,
'AC_STRUCT_TM' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AC_TYPE_MODE_T' => 1,
'AC_FUNC_GETMNTENT' => 1,
'AC_FUNC_STRTOD' => 1,
'AC_CHECK_HEADERS' => 1,
'AC_FUNC_STRNLEN' => 1,
@@ -48,17 +48,17 @@
'AC_STRUCT_ST_BLOCKS' => 1,
'AC_TYPE_SIGNAL' => 1,
'AC_TYPE_UID_T' => 1,
'AC_PROG_MAKE_SET' => 1,
'AC_CONFIG_AUX_DIR' => 1,
'm4_pattern_allow' => 1,
'AC_PROG_MAKE_SET' => 1,
'sinclude' => 1,
'm4_pattern_allow' => 1,
'AC_DEFINE_TRACE_LITERAL' => 1,
'AC_FUNC_STRERROR_R' => 1,
'AC_PROG_CC' => 1,
'AC_DECL_SYS_SIGLIST' => 1,
'AC_FUNC_FORK' => 1,
'AC_FUNC_STRCOLL' => 1,
'AC_DECL_SYS_SIGLIST' => 1,
'AC_FUNC_VPRINTF' => 1,
'AC_FUNC_STRCOLL' => 1,
'AC_PROG_YACC' => 1,
'AC_INIT' => 1,
'AC_STRUCT_TIMEZONE' => 1,
@@ -80,33 +80,33 @@
'AM_MAINTAINER_MODE' => 1,
'AC_FUNC_UTIME_NULL' => 1,
'AC_FUNC_SELECT_ARGTYPES' => 1,
'AC_HEADER_STAT' => 1,
'AC_FUNC_STRFTIME' => 1,
'AC_C_INLINE' => 1,
'AC_HEADER_STAT' => 1,
'AC_PROG_CPP' => 1,
'AC_C_CONST' => 1,
'AC_PROG_LEX' => 1,
'AC_C_INLINE' => 1,
'AC_TYPE_PID_T' => 1,
'AC_PROG_LEX' => 1,
'AC_C_CONST' => 1,
'AC_CONFIG_FILES' => 1,
'include' => 1,
'AC_FUNC_SETVBUF_REVERSED' => 1,
'AC_PROG_INSTALL' => 1,
'AM_GNU_GETTEXT' => 1,
'AC_FUNC_OBSTACK' => 1,
'AC_CHECK_LIB' => 1,
'AC_FUNC_OBSTACK' => 1,
'AC_FUNC_MALLOC' => 1,
'AC_FUNC_GETGROUPS' => 1,
'AC_FUNC_GETLOADAVG' => 1,
'AH_OUTPUT' => 1,
'AC_FUNC_FSEEKO' => 1,
'AM_PROG_CC_C_O' => 1,
'AM_CONDITIONAL' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AC_FUNC_MKTIME' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AM_CONDITIONAL' => 1,
'AC_CONFIG_HEADERS' => 1,
'AC_HEADER_SYS_WAIT' => 1,
'AC_PROG_LN_S' => 1,
'AC_FUNC_MEMCMP' => 1,
'AC_PROG_LN_S' => 1,
'm4_include' => 1,
'AC_HEADER_DIRENT' => 1,
'AC_CHECK_FUNCS' => 1
+1 -1
View File
@@ -1,4 +1,4 @@
m4trace:configure.in:30: -1- AC_INIT([bash], [3.1-rc1], [bug-bash@gnu.org])
m4trace:configure.in:30: -1- AC_INIT([bash], [3.1-rc2], [bug-bash@gnu.org])
m4trace:configure.in:30: -1- m4_pattern_forbid([^_?A[CHUM]_])
m4trace:configure.in:30: -1- m4_pattern_forbid([_AC_])
m4trace:configure.in:30: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
+6 -2
View File
@@ -151,11 +151,13 @@ int
pushd_builtin (list)
WORD_LIST *list;
{
WORD_LIST *orig_list;
char *temp, *current_directory, *top;
int j, flags, skipopt;
intmax_t num;
char direction;
orig_list = list;
if (list && list->word && ISOPTION (list->word->word, '-'))
{
list = list->next;
@@ -270,7 +272,7 @@ pushd_builtin (list)
if (current_directory == 0)
return (EXECUTION_FAILURE);
j = ((flags & NOCD) == 0) ? cd_builtin (list) : EXECUTION_SUCCESS;
j = ((flags & NOCD) == 0) ? cd_builtin (skipopt ? orig_list : list) : EXECUTION_SUCCESS;
if (j == EXECUTION_SUCCESS)
{
add_dirstack_element ((flags & NOCD) ? savestring (list->word->word) : current_directory);
@@ -504,9 +506,11 @@ cd_to_string (name)
char *name;
{
WORD_LIST *tlist;
WORD_LIST *dir;
int result;
tlist = make_word_list (make_word (name), NULL);
dir = make_word_list (make_word (name), NULL);
tlist = make_word_list (make_word ("--"), dir);
result = cd_builtin (tlist);
dispose_words (tlist);
return (result);
Vendored
+11 -11
View File
@@ -1,7 +1,7 @@
#! /bin/sh
# From configure.in for Bash 3.1, version 3.180.
# From configure.in for Bash 3.1, version 3.182.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.59 for bash 3.1-rc1.
# Generated by GNU Autoconf 2.59 for bash 3.1-rc2.
#
# Report bugs to <bug-bash@gnu.org>.
#
@@ -270,8 +270,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='bash'
PACKAGE_TARNAME='bash'
PACKAGE_VERSION='3.1-rc1'
PACKAGE_STRING='bash 3.1-rc1'
PACKAGE_VERSION='3.1-rc2'
PACKAGE_STRING='bash 3.1-rc2'
PACKAGE_BUGREPORT='bug-bash@gnu.org'
ac_unique_file="shell.h"
@@ -785,7 +785,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 bash 3.1-rc1 to adapt to many kinds of systems.
\`configure' configures bash 3.1-rc2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -846,7 +846,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of bash 3.1-rc1:";;
short | recursive ) echo "Configuration of bash 3.1-rc2:";;
esac
cat <<\_ACEOF
@@ -1039,7 +1039,7 @@ fi
test -n "$ac_init_help" && exit 0
if $ac_init_version; then
cat <<\_ACEOF
bash configure 3.1-rc1
bash configure 3.1-rc2
generated by GNU Autoconf 2.59
Copyright (C) 2003 Free Software Foundation, Inc.
@@ -1053,7 +1053,7 @@ cat >&5 <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by bash $as_me 3.1-rc1, which was
It was created by bash $as_me 3.1-rc2, which was
generated by GNU Autoconf 2.59. Invocation command line was
$ $0 $@
@@ -1422,7 +1422,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
BASHVERS=3.1
RELSTATUS=rc1
RELSTATUS=rc2
case "$RELSTATUS" in
alp*|bet*|dev*|rc*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;;
@@ -27212,7 +27212,7 @@ _ASBOX
} >&5
cat >&5 <<_CSEOF
This file was extended by bash $as_me 3.1-rc1, which was
This file was extended by bash $as_me 3.1-rc2, which was
generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -27275,7 +27275,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
bash config.status 3.1-rc1
bash config.status 3.1-rc2
configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+2 -2
View File
@@ -22,10 +22,10 @@ dnl Process this file with autoconf to produce a configure script.
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
AC_REVISION([for Bash 3.1, version 3.180])dnl
AC_REVISION([for Bash 3.1, version 3.182])dnl
define(bashvers, 3.1)
define(relstatus, rc1)
define(relstatus, rc2)
AC_INIT(bash, bashvers-relstatus, bug-bash@gnu.org)
+1797
View File
File diff suppressed because it is too large Load Diff
+1788
View File
File diff suppressed because it is too large Load Diff
+69 -62
View File
@@ -443,7 +443,7 @@ rl_redisplay ()
{
register int in, out, c, linenum, cursor_linenum;
register char *line;
int c_pos, inv_botlin, lb_botlin, lb_linenum;
int c_pos, inv_botlin, lb_botlin, lb_linenum, o_cpos;
int newlines, lpos, temp, modmark, n0, num;
char *prompt_this_line;
#if defined (HANDLE_MULTIBYTE)
@@ -853,7 +853,7 @@ rl_redisplay ()
if (_rl_horizontal_scroll_mode == 0 && _rl_term_up && *_rl_term_up)
{
int nleft, pos, changed_screen_line, tx, fudge;
int nleft, pos, changed_screen_line, tx;
if (!rl_display_fixed || forced_display)
{
@@ -884,9 +884,23 @@ rl_redisplay ()
/* For each line in the buffer, do the updating display. */
for (linenum = 0; linenum <= inv_botlin; linenum++)
{
o_cpos = _rl_last_c_pos;
update_line (VIS_LINE(linenum), INV_LINE(linenum), linenum,
VIS_LLEN(linenum), INV_LLEN(linenum), inv_botlin);
#if 1
/* update_line potentially changes _rl_last_c_pos, but doesn't
take invisible characters into account, since _rl_last_c_pos
is an absolute cursor position in a multibyte locale. See
if compensating here is the right thing, or if we have to
change update_line itself. */
if (linenum == 0 && (MB_CUR_MAX > 1 && rl_byte_oriented == 0) &&
_rl_last_c_pos != o_cpos &&
_rl_last_c_pos > wrap_offset &&
o_cpos < prompt_last_invisible)
_rl_last_c_pos -= wrap_offset;
#endif
/* If this is the line with the prompt, we might need to
compensate for invisible characters in the new line. Do
this only if there is not more than one new line (which
@@ -958,7 +972,7 @@ rl_redisplay ()
#endif
_rl_output_some_chars (local_prompt, nleft);
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
_rl_last_c_pos = _rl_col_width (local_prompt, 0, nleft);
_rl_last_c_pos = _rl_col_width (local_prompt, 0, nleft) - wrap_offset;
else
_rl_last_c_pos = nleft;
}
@@ -974,7 +988,6 @@ rl_redisplay ()
multibyte locale, however, _rl_last_c_pos is an absolute cursor
position that doesn't take invisible characters in the prompt
into account. We use a fudge factor to compensate. */
fudge = (MB_CUR_MAX > 1 && rl_byte_oriented == 0) ? wrap_offset : 0;
/* Since _rl_backspace() doesn't know about invisible characters in the
prompt, and there's no good way to tell it, we compensate for
@@ -982,16 +995,20 @@ rl_redisplay ()
if (wrap_offset && cursor_linenum == 0 && nleft < _rl_last_c_pos)
{
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
tx = _rl_col_width (&visible_line[pos], 0, nleft);
tx = _rl_col_width (&visible_line[pos], 0, nleft) - visible_wrap_offset;
else
tx = nleft;
if ((_rl_last_c_pos+fudge) != tx)
if (_rl_last_c_pos > tx)
{
_rl_backspace (_rl_last_c_pos + fudge - tx); /* XXX */
_rl_backspace (_rl_last_c_pos - tx); /* XXX */
_rl_last_c_pos = tx;
}
}
/* We need to note that in a multibyte locale we are dealing with
_rl_last_c_pos as an absolute cursor position, but moving to a
point specified by a buffer position (NLEFT) that doesn't take
invisible characters into account. */
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
_rl_move_cursor_relative (nleft, &invisible_line[pos]);
else if (nleft != _rl_last_c_pos)
@@ -1388,7 +1405,11 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
#endif
_rl_output_some_chars (local_prompt, lendiff);
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
#if 0
_rl_last_c_pos = _rl_col_width (local_prompt, 0, lendiff) - wrap_offset;
#else
_rl_last_c_pos = _rl_col_width (local_prompt, 0, lendiff);
#endif
else
_rl_last_c_pos = lendiff;
}
@@ -1465,7 +1486,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
the end. We have invisible characters in this line. This
is a dumb update. */
_rl_output_some_chars (nfd, temp);
_rl_last_c_pos += col_temp;
_rl_last_c_pos += col_temp; /* XXX */
return;
}
/* Copy (new) chars to screen from first diff to last match. */
@@ -1489,6 +1510,10 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
/* cannot insert chars, write to EOL */
_rl_output_some_chars (nfd, temp);
_rl_last_c_pos += col_temp;
/* If we're in a multibyte locale and before the last invisible char
in the current line (which assumes we just output some invisible
characters) we need to adjust _rl_last_c_pos, since it represents
a physical character position. */
}
}
else /* Delete characters from line. */
@@ -1520,7 +1545,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
if (temp > 0)
{
_rl_output_some_chars (nfd, temp);
_rl_last_c_pos += col_temp;
_rl_last_c_pos += col_temp; /* XXX */
}
lendiff = (oe - old) - (ne - new);
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
@@ -1582,7 +1607,7 @@ rl_on_new_line_with_prompt ()
l = strlen (prompt_last_line);
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
_rl_last_c_pos = _rl_col_width (prompt_last_line, 0, l);
_rl_last_c_pos = _rl_col_width (prompt_last_line, 0, l); /* XXX */
else
_rl_last_c_pos = l;
@@ -1631,6 +1656,8 @@ rl_forced_update_display ()
}
/* Move the cursor from _rl_last_c_pos to NEW, which are buffer indices.
(Well, when we don't have multibyte characters, _rl_last_c_pos is a
buffer index.)
DATA is the contents of the screen line of interest; i.e., where
the movement is being done. */
void
@@ -1639,28 +1666,40 @@ _rl_move_cursor_relative (new, data)
const char *data;
{
register int i;
int woff; /* number of invisible chars on current line */
int cpos, dpos; /* current and desired cursor positions */
/* If we don't have to do anything, then return. */
woff = W_OFFSET (_rl_last_v_pos, wrap_offset);
cpos = _rl_last_c_pos;
#if defined (HANDLE_MULTIBYTE)
/* If we have multibyte characters, NEW is indexed by the buffer point in
a multibyte string, but _rl_last_c_pos is the display position. In
this case, NEW's display position is not obvious and must be
calculated. */
if (MB_CUR_MAX == 1 || rl_byte_oriented)
calculated. We need to account for invisible characters in this line,
as long as we are past them and they are counted by _rl_col_width. */
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
{
if (_rl_last_c_pos == new)
return;
dpos = _rl_col_width (data, 0, new);
if (dpos > woff)
dpos -= woff;
}
else if (_rl_last_c_pos == _rl_col_width (data, 0, new))
return;
#else
if (_rl_last_c_pos == new) return;
else
#endif
dpos = new;
/* If we don't have to do anything, then return. */
if (cpos == dpos)
return;
/* It may be faster to output a CR, and then move forwards instead
of moving backwards. */
/* i == current physical cursor position. */
i = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset);
#if defined (HANDLE_MULTIBYTE)
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
i = _rl_last_c_pos;
else
#endif
i = _rl_last_c_pos - woff;
if (new == 0 || CR_FASTER (new, _rl_last_c_pos) ||
(_rl_term_autowrap && i == _rl_screenwidth))
{
@@ -1669,10 +1708,10 @@ _rl_move_cursor_relative (new, data)
#else
tputs (_rl_term_cr, 1, _rl_output_character_function);
#endif /* !__MSDOS__ */
_rl_last_c_pos = 0;
cpos = _rl_last_c_pos = 0;
}
if (_rl_last_c_pos < new)
if (cpos < dpos)
{
/* Move the cursor forward. We do it by printing the command
to move the cursor forward if there is one, else print that
@@ -1686,31 +1725,11 @@ _rl_move_cursor_relative (new, data)
#if defined (HACK_TERMCAP_MOTION)
if (_rl_term_forward_char)
{
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
{
int width;
width = _rl_col_width (data, _rl_last_c_pos, new);
for (i = 0; i < width; i++)
tputs (_rl_term_forward_char, 1, _rl_output_character_function);
}
else
{
for (i = _rl_last_c_pos; i < new; i++)
tputs (_rl_term_forward_char, 1, _rl_output_character_function);
}
}
else if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
{
tputs (_rl_term_cr, 1, _rl_output_character_function);
for (i = 0; i < new; i++)
putc (data[i], rl_outstream);
for (i = cpos; i < dpos; i++)
tputs (_rl_term_forward_char, 1, _rl_output_character_function);
}
else
for (i = _rl_last_c_pos; i < new; i++)
putc (data[i], rl_outstream);
#else /* !HACK_TERMCAP_MOTION */
#endif /* HACK_TERMCAP_MOTION */
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
{
tputs (_rl_term_cr, 1, _rl_output_character_function);
@@ -1718,32 +1737,20 @@ _rl_move_cursor_relative (new, data)
putc (data[i], rl_outstream);
}
else
for (i = _rl_last_c_pos; i < new; i++)
for (i = cpos; i < new; i++)
putc (data[i], rl_outstream);
#endif /* !HACK_TERMCAP_MOTION */
}
#if defined (HANDLE_MULTIBYTE)
/* NEW points to the buffer point, but _rl_last_c_pos is the display point.
The byte length of the string is probably bigger than the column width
of the string, which means that if NEW == _rl_last_c_pos, then NEW's
display point is less than _rl_last_c_pos. */
else if (_rl_last_c_pos >= new)
#else
else if (_rl_last_c_pos > new)
#endif
{
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
_rl_backspace (_rl_last_c_pos - _rl_col_width (data, 0, new));
else
_rl_backspace (_rl_last_c_pos - new);
}
else if (cpos > dpos)
_rl_backspace (cpos - dpos);
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
_rl_last_c_pos = _rl_col_width (data, 0, new);
else
_rl_last_c_pos = new;
_rl_last_c_pos = dpos;
}
/* PWP: move the cursor up or down. */
+136 -52
View File
@@ -1,6 +1,6 @@
/* display.c -- readline redisplay facility. */
/* Copyright (C) 1987-2004 Free Software Foundation, Inc.
/* Copyright (C) 1987-2005 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.
@@ -118,13 +118,19 @@ rl_voidfunc_t *rl_redisplay_function = rl_redisplay;
int rl_display_fixed = 0;
int _rl_suppress_redisplay = 0;
int _rl_want_redisplay = 0;
/* The stuff that gets printed out before the actual text of the line.
This is usually pointing to rl_prompt. */
char *rl_display_prompt = (char *)NULL;
/* Pseudo-global variables declared here. */
/* The visible cursor position. If you print some text, adjust this. */
/* NOTE: _rl_last_c_pos is used as a buffer index when not in a locale
supporting multibyte characters, and an absolute cursor position when
in such a locale. This is an artifact of the donated multibyte support.
Care must be taken when modifying its value. */
int _rl_last_c_pos = 0;
int _rl_last_v_pos = 0;
@@ -180,6 +186,18 @@ static int prompt_last_screen_line;
static int prompt_physical_chars;
/* Variables to save and restore prompt and display information. */
/* These are getting numerous enough that it's time to create a struct. */
static char *saved_local_prompt;
static char *saved_local_prefix;
static int saved_last_invisible;
static int saved_visible_length;
static int saved_prefix_length;
static int saved_invis_chars_first_line;
static int saved_physical_chars;
/* Expand the prompt string S and return the number of visible
characters in *LP, if LP is not null. This is currently more-or-less
a placeholder for expansion. LIP, if non-null is a place to store the
@@ -201,7 +219,7 @@ expand_prompt (pmt, lp, lip, niflp, vlp)
int *lp, *lip, *niflp, *vlp;
{
char *r, *ret, *p;
int l, rl, last, ignoring, ninvis, invfl, ind, pind, physchars;
int l, rl, last, ignoring, ninvis, invfl, invflset, ind, pind, physchars;
/* Short-circuit if we can. */
if ((MB_CUR_MAX <= 1 || rl_byte_oriented) && strchr (pmt, RL_PROMPT_START_IGNORE) == 0)
@@ -222,6 +240,7 @@ expand_prompt (pmt, lp, lip, niflp, vlp)
r = ret = (char *)xmalloc (l + 1);
invfl = 0; /* invisible chars in first line of prompt */
invflset = 0; /* we only want to set invfl once */
for (rl = ignoring = last = ninvis = physchars = 0, p = pmt; p && *p; p++)
{
@@ -235,7 +254,8 @@ expand_prompt (pmt, lp, lip, niflp, vlp)
else if (ignoring && *p == RL_PROMPT_END_IGNORE)
{
ignoring = 0;
last = r - ret - 1;
if (p[-1] != RL_PROMPT_START_IGNORE)
last = r - ret - 1;
continue;
}
else
@@ -249,7 +269,10 @@ expand_prompt (pmt, lp, lip, niflp, vlp)
while (l--)
*r++ = *p++;
if (!ignoring)
rl += ind - pind;
{
rl += ind - pind;
physchars += _rl_col_width (pmt, pind, ind);
}
else
ninvis += ind - pind;
p--; /* compensate for later increment */
@@ -259,16 +282,19 @@ expand_prompt (pmt, lp, lip, niflp, vlp)
{
*r++ = *p;
if (!ignoring)
rl++; /* visible length byte counter */
{
rl++; /* visible length byte counter */
physchars++;
}
else
ninvis++; /* invisible chars byte counter */
}
if (rl >= _rl_screenwidth)
invfl = ninvis;
if (ignoring == 0)
physchars++;
if (invflset == 0 && rl >= _rl_screenwidth)
{
invfl = ninvis;
invflset = 1;
}
}
}
@@ -328,7 +354,8 @@ rl_expand_prompt (prompt)
FREE (local_prompt_prefix);
local_prompt = local_prompt_prefix = (char *)0;
prompt_last_invisible = prompt_visible_length = 0;
prompt_last_invisible = prompt_invis_chars_first_line = 0;
prompt_visible_length = prompt_physical_chars = 0;
if (prompt == 0 || *prompt == 0)
return (0);
@@ -351,14 +378,14 @@ rl_expand_prompt (prompt)
local_prompt = expand_prompt (p, &prompt_visible_length,
&prompt_last_invisible,
(int *)NULL,
(int *)NULL);
&prompt_physical_chars);
c = *t; *t = '\0';
/* The portion of the prompt string up to and including the
final newline is now null-terminated. */
local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length,
(int *)NULL,
&prompt_invis_chars_first_line,
&prompt_physical_chars);
(int *)NULL);
*t = c;
return (prompt_prefix_length);
}
@@ -417,7 +444,7 @@ rl_redisplay ()
register int in, out, c, linenum, cursor_linenum;
register char *line;
int c_pos, inv_botlin, lb_botlin, lb_linenum;
int newlines, lpos, temp, modmark;
int newlines, lpos, temp, modmark, n0, num;
char *prompt_this_line;
#if defined (HANDLE_MULTIBYTE)
wchar_t wc;
@@ -433,7 +460,7 @@ rl_redisplay ()
if (!rl_display_prompt)
rl_display_prompt = "";
if (invisible_line == 0)
if (invisible_line == 0 || vis_lbreaks == 0)
{
init_line_structures (0);
rl_on_new_line ();
@@ -573,6 +600,7 @@ rl_redisplay ()
#if defined (HANDLE_MULTIBYTE)
memset (_rl_wrapped_line, 0, vis_lbsize);
num = 0;
#endif
/* prompt_invis_chars_first_line is the number of invisible characters in
@@ -591,13 +619,32 @@ rl_redisplay ()
probably too much work for the benefit gained. How many people have
prompts that exceed two physical lines?
Additional logic fix from Edward Catmur <ed@catmur.co.uk> */
#if defined (HANDLE_MULTIBYTE)
n0 = num;
temp = local_prompt ? strlen (local_prompt) : 0;
while (num < temp)
{
if (_rl_col_width (local_prompt, n0, num) > _rl_screenwidth)
{
num = _rl_find_prev_mbchar (local_prompt, num, MB_FIND_ANY);
break;
}
num++;
}
temp = num +
#else
temp = ((newlines + 1) * _rl_screenwidth) +
#endif /* !HANDLE_MULTIBYTE */
((local_prompt_prefix == 0) ? ((newlines == 0) ? prompt_invis_chars_first_line
: ((newlines == 1) ? wrap_offset : 0))
: ((newlines == 0) ? wrap_offset :0));
inv_lbreaks[++newlines] = temp;
#if defined (HANDLE_MULTIBYTE)
lpos -= _rl_col_width (local_prompt, n0, num);
#else
lpos -= _rl_screenwidth;
#endif
}
prompt_last_screen_line = newlines;
@@ -806,7 +853,7 @@ rl_redisplay ()
if (_rl_horizontal_scroll_mode == 0 && _rl_term_up && *_rl_term_up)
{
int nleft, pos, changed_screen_line;
int nleft, pos, changed_screen_line, tx, fudge;
if (!rl_display_fixed || forced_display)
{
@@ -851,7 +898,10 @@ rl_redisplay ()
(wrap_offset > visible_wrap_offset) &&
(_rl_last_c_pos < visible_first_line_len))
{
nleft = _rl_screenwidth + wrap_offset - _rl_last_c_pos;
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
nleft = _rl_screenwidth - _rl_last_c_pos;
else
nleft = _rl_screenwidth + wrap_offset - _rl_last_c_pos;
if (nleft)
_rl_clear_to_eol (nleft);
}
@@ -887,7 +937,7 @@ rl_redisplay ()
the physical cursor position on the screen stays the same,
but the buffer position needs to be adjusted to account
for invisible characters. */
if (cursor_linenum == 0 && wrap_offset)
if ((MB_CUR_MAX == 1 || rl_byte_oriented) && cursor_linenum == 0 && wrap_offset)
_rl_last_c_pos += wrap_offset;
}
@@ -920,16 +970,26 @@ rl_redisplay ()
start of the line and the cursor position. */
nleft = c_pos - pos;
/* NLEFT is now a number of characters in a buffer. When in a
multibyte locale, however, _rl_last_c_pos is an absolute cursor
position that doesn't take invisible characters in the prompt
into account. We use a fudge factor to compensate. */
fudge = (MB_CUR_MAX > 1 && rl_byte_oriented == 0) ? wrap_offset : 0;
/* Since _rl_backspace() doesn't know about invisible characters in the
prompt, and there's no good way to tell it, we compensate for
those characters here and call _rl_backspace() directly. */
if (wrap_offset && cursor_linenum == 0 && nleft < _rl_last_c_pos)
{
_rl_backspace (_rl_last_c_pos - nleft);
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
_rl_last_c_pos = _rl_col_width (&visible_line[pos], 0, nleft);
tx = _rl_col_width (&visible_line[pos], 0, nleft);
else
_rl_last_c_pos = nleft;
tx = nleft;
if ((_rl_last_c_pos+fudge) != tx)
{
_rl_backspace (_rl_last_c_pos + fudge - tx); /* XXX */
_rl_last_c_pos = tx;
}
}
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
@@ -1090,7 +1150,10 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
the exact cursor position and cut-and-paste with certain terminal
emulators. In this calculation, TEMP is the physical screen
position of the cursor. */
temp = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset);
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
temp = _rl_last_c_pos;
else
temp = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset);
if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode
&& _rl_last_v_pos == current_line - 1)
{
@@ -1296,7 +1359,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
if (_rl_last_v_pos != current_line)
{
_rl_move_vert (current_line);
if (current_line == 0 && visible_wrap_offset)
if ((MB_CUR_MAX == 1 || rl_byte_oriented) && current_line == 0 && visible_wrap_offset)
_rl_last_c_pos += visible_wrap_offset;
}
@@ -1387,7 +1450,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
insert_some_chars (nfd, lendiff, col_lendiff);
_rl_last_c_pos += col_lendiff;
}
else if (*ols == 0 && lendiff > 0)
else if ((MB_CUR_MAX == 1 || rl_byte_oriented != 0) && *ols == 0 && lendiff > 0)
{
/* At the end of a line the characters do not have to
be "inserted". They can just be placed on the screen. */
@@ -1769,9 +1832,9 @@ rl_character_len (c, pos)
return ((ISPRINT (uc)) ? 1 : 2);
}
/* How to print things in the "echo-area". The prompt is treated as a
mini-modeline. */
static int msg_saved_prompt = 0;
#if defined (USE_VARARGS)
int
@@ -1802,8 +1865,19 @@ rl_message (va_alist)
#endif
va_end (args);
if (saved_local_prompt == 0)
{
rl_save_prompt ();
msg_saved_prompt = 1;
}
rl_display_prompt = msg_buf;
local_prompt = expand_prompt (msg_buf, &prompt_visible_length,
&prompt_last_invisible,
&prompt_invis_chars_first_line,
&prompt_physical_chars);
local_prompt_prefix = (char *)NULL;
(*rl_redisplay_function) ();
return 0;
}
#else /* !USE_VARARGS */
@@ -1813,8 +1887,20 @@ rl_message (format, arg1, arg2)
{
sprintf (msg_buf, format, arg1, arg2);
msg_buf[sizeof(msg_buf) - 1] = '\0'; /* overflow? */
rl_display_prompt = msg_buf;
if (saved_local_prompt == 0)
{
rl_save_prompt ();
msg_saved_prompt = 1;
}
local_prompt = expand_prompt (msg_buf, &prompt_visible_length,
&prompt_last_invisible,
&prompt_invis_chars_first_line,
&prompt_physical_chars);
local_prompt_prefix = (char *)NULL;
(*rl_redisplay_function) ();
return 0;
}
#endif /* !USE_VARARGS */
@@ -1824,6 +1910,11 @@ int
rl_clear_message ()
{
rl_display_prompt = rl_prompt;
if (msg_saved_prompt)
{
rl_restore_prompt ();
msg_saved_prompt = 0;
}
(*rl_redisplay_function) ();
return 0;
}
@@ -1838,27 +1929,19 @@ rl_reset_line_state ()
return 0;
}
/* These are getting numerous enough that it's time to create a struct. */
static char *saved_local_prompt;
static char *saved_local_prefix;
static int saved_last_invisible;
static int saved_visible_length;
static int saved_invis_chars_first_line;
static int saved_physical_chars;
void
rl_save_prompt ()
{
saved_local_prompt = local_prompt;
saved_local_prefix = local_prompt_prefix;
saved_prefix_length = prompt_prefix_length;
saved_last_invisible = prompt_last_invisible;
saved_visible_length = prompt_visible_length;
saved_invis_chars_first_line = prompt_invis_chars_first_line;
saved_physical_chars = prompt_physical_chars;
local_prompt = local_prompt_prefix = (char *)0;
prompt_last_invisible = prompt_visible_length = 0;
prompt_last_invisible = prompt_visible_length = prompt_prefix_length = 0;
prompt_invis_chars_first_line = prompt_physical_chars = 0;
}
@@ -1870,10 +1953,16 @@ rl_restore_prompt ()
local_prompt = saved_local_prompt;
local_prompt_prefix = saved_local_prefix;
prompt_prefix_length = saved_prefix_length;
prompt_last_invisible = saved_last_invisible;
prompt_visible_length = saved_visible_length;
prompt_invis_chars_first_line = saved_invis_chars_first_line;
prompt_physical_chars = saved_physical_chars;
/* can test saved_local_prompt to see if prompt info has been saved. */
saved_local_prompt = saved_local_prefix = (char *)0;
saved_last_invisible = saved_visible_length = saved_prefix_length = 0;
saved_invis_chars_first_line = saved_physical_chars = 0;
}
char *
@@ -1907,6 +1996,8 @@ _rl_make_prompt_for_search (pchar)
prompt_visible_length = saved_visible_length + 1;
}
prompt_physical_chars = saved_physical_chars + 1;
return pmt;
}
@@ -1967,6 +2058,9 @@ insert_some_chars (string, count, col)
char *string;
int count, col;
{
#if defined (__MSDOS__) || defined (__MINGW32__)
_rl_output_some_chars (string, count);
#else
/* DEBUGGING */
if (MB_CUR_MAX == 1 || rl_byte_oriented)
if (count != col)
@@ -2005,6 +2099,7 @@ insert_some_chars (string, count, col)
if (_rl_term_ei && *_rl_term_ei)
tputs (_rl_term_ei, 1, _rl_output_character_function);
}
#endif /* __MSDOS__ || __MINGW32__ */
}
/* Delete COUNT characters from the display line. */
@@ -2015,6 +2110,7 @@ delete_chars (count)
if (count > _rl_screenwidth) /* XXX */
return;
#if !defined (__MSDOS__) && !defined (__MINGW32__)
if (_rl_term_DC && *_rl_term_DC)
{
char *buffer;
@@ -2027,6 +2123,7 @@ delete_chars (count)
while (count--)
tputs (_rl_term_dc, 1, _rl_output_character_function);
}
#endif /* !__MSDOS__ && !__MINGW32__ */
}
void
@@ -2082,18 +2179,10 @@ static void
redraw_prompt (t)
char *t;
{
char *oldp, *oldl, *oldlprefix;
int oldlen, oldlast, oldplen, oldninvis, oldphyschars;
char *oldp;
/* Geez, I should make this a struct. */
oldp = rl_display_prompt;
oldl = local_prompt;
oldlprefix = local_prompt_prefix;
oldlen = prompt_visible_length;
oldplen = prompt_prefix_length;
oldlast = prompt_last_invisible;
oldninvis = prompt_invis_chars_first_line;
oldphyschars = prompt_physical_chars;
rl_save_prompt ();
rl_display_prompt = t;
local_prompt = expand_prompt (t, &prompt_visible_length,
@@ -2101,16 +2190,11 @@ redraw_prompt (t)
&prompt_invis_chars_first_line,
&prompt_physical_chars);
local_prompt_prefix = (char *)NULL;
rl_forced_update_display ();
rl_display_prompt = oldp;
local_prompt = oldl;
local_prompt_prefix = oldlprefix;
prompt_visible_length = oldlen;
prompt_prefix_length = oldplen;
prompt_last_invisible = oldlast;
prompt_invis_chars_first_line = oldninvis;
prompt_physical_chars = oldphyschars;
rl_restore_prompt();
}
/* Redisplay the current line after a SIGWINCH is received. */
File diff suppressed because it is too large Load Diff
+72 -62
View File
@@ -443,8 +443,8 @@ rl_redisplay ()
{
register int in, out, c, linenum, cursor_linenum;
register char *line;
int c_pos, inv_botlin, lb_botlin, lb_linenum;
int newlines, lpos, temp, modmark, n0, num, fudge;
int c_pos, inv_botlin, lb_botlin, lb_linenum, o_cpos;
int newlines, lpos, temp, modmark, n0, num;
char *prompt_this_line;
#if defined (HANDLE_MULTIBYTE)
wchar_t wc;
@@ -884,9 +884,23 @@ rl_redisplay ()
/* For each line in the buffer, do the updating display. */
for (linenum = 0; linenum <= inv_botlin; linenum++)
{
o_cpos = _rl_last_c_pos;
update_line (VIS_LINE(linenum), INV_LINE(linenum), linenum,
VIS_LLEN(linenum), INV_LLEN(linenum), inv_botlin);
#if 1
/* update_line potentially changes _rl_last_c_pos, but doesn't
take invisible characters into account, since _rl_last_c_pos
is an absolute cursor position in a multibyte locale. See
if compensating here is the right thing, or if we have to
change update_line itself. */
if (linenum == 0 && (MB_CUR_MAX > 1 && rl_byte_oriented == 0) &&
_rl_last_c_pos != o_cpos &&
_rl_last_c_pos > wrap_offset &&
o_cpos < prompt_last_invisible)
_rl_last_c_pos -= wrap_offset;
#endif
/* If this is the line with the prompt, we might need to
compensate for invisible characters in the new line. Do
this only if there is not more than one new line (which
@@ -958,7 +972,7 @@ rl_redisplay ()
#endif
_rl_output_some_chars (local_prompt, nleft);
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
_rl_last_c_pos = _rl_col_width (local_prompt, 0, nleft);
_rl_last_c_pos = _rl_col_width (local_prompt, 0, nleft) - wrap_offset;
else
_rl_last_c_pos = nleft;
}
@@ -974,7 +988,6 @@ rl_redisplay ()
multibyte locale, however, _rl_last_c_pos is an absolute cursor
position that doesn't take invisible characters in the prompt
into account. We use a fudge factor to compensate. */
fudge = (MB_CUR_MAX > 1 && rl_byte_oriented == 0) ? wrap_offset : 0;
/* Since _rl_backspace() doesn't know about invisible characters in the
prompt, and there's no good way to tell it, we compensate for
@@ -982,16 +995,20 @@ rl_redisplay ()
if (wrap_offset && cursor_linenum == 0 && nleft < _rl_last_c_pos)
{
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
tx = _rl_col_width (&visible_line[pos], 0, nleft);
tx = _rl_col_width (&visible_line[pos], 0, nleft) - visible_wrap_offset;
else
tx = nleft;
if ((_rl_last_c_pos+fudge) != tx)
if (_rl_last_c_pos > tx)
{
_rl_backspace (_rl_last_c_pos + fudge - tx); /* XXX */
_rl_backspace (_rl_last_c_pos - tx); /* XXX */
_rl_last_c_pos = tx;
}
}
/* We need to note that in a multibyte locale we are dealing with
_rl_last_c_pos as an absolute cursor position, but moving to a
point specified by a buffer position (NLEFT) that doesn't take
invisible characters into account. */
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
_rl_move_cursor_relative (nleft, &invisible_line[pos]);
else if (nleft != _rl_last_c_pos)
@@ -1388,7 +1405,11 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
#endif
_rl_output_some_chars (local_prompt, lendiff);
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
#if 0
_rl_last_c_pos = _rl_col_width (local_prompt, 0, lendiff) - wrap_offset;
#else
_rl_last_c_pos = _rl_col_width (local_prompt, 0, lendiff);
#endif
else
_rl_last_c_pos = lendiff;
}
@@ -1465,7 +1486,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
the end. We have invisible characters in this line. This
is a dumb update. */
_rl_output_some_chars (nfd, temp);
_rl_last_c_pos += col_temp;
_rl_last_c_pos += col_temp; /* XXX */
return;
}
/* Copy (new) chars to screen from first diff to last match. */
@@ -1489,6 +1510,10 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
/* cannot insert chars, write to EOL */
_rl_output_some_chars (nfd, temp);
_rl_last_c_pos += col_temp;
/* If we're in a multibyte locale and before the last invisible char
in the current line (which assumes we just output some invisible
characters) we need to adjust _rl_last_c_pos, since it represents
a physical character position. */
}
}
else /* Delete characters from line. */
@@ -1520,7 +1545,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
if (temp > 0)
{
_rl_output_some_chars (nfd, temp);
_rl_last_c_pos += col_temp;
_rl_last_c_pos += col_temp; /* XXX */
}
lendiff = (oe - old) - (ne - new);
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
@@ -1582,7 +1607,7 @@ rl_on_new_line_with_prompt ()
l = strlen (prompt_last_line);
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
_rl_last_c_pos = _rl_col_width (prompt_last_line, 0, l);
_rl_last_c_pos = _rl_col_width (prompt_last_line, 0, l); /* XXX */
else
_rl_last_c_pos = l;
@@ -1631,6 +1656,8 @@ rl_forced_update_display ()
}
/* Move the cursor from _rl_last_c_pos to NEW, which are buffer indices.
(Well, when we don't have multibyte characters, _rl_last_c_pos is a
buffer index.)
DATA is the contents of the screen line of interest; i.e., where
the movement is being done. */
void
@@ -1639,28 +1666,40 @@ _rl_move_cursor_relative (new, data)
const char *data;
{
register int i;
int woff; /* number of invisible chars on current line */
int cpos, dpos; /* current and desired cursor positions */
/* If we don't have to do anything, then return. */
woff = W_OFFSET (_rl_last_v_pos, wrap_offset);
cpos = _rl_last_c_pos;
#if defined (HANDLE_MULTIBYTE)
/* If we have multibyte characters, NEW is indexed by the buffer point in
a multibyte string, but _rl_last_c_pos is the display position. In
this case, NEW's display position is not obvious and must be
calculated. */
if (MB_CUR_MAX == 1 || rl_byte_oriented)
calculated. We need to account for invisible characters in this line,
as long as we are past them and they are counted by _rl_col_width. */
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
{
if (_rl_last_c_pos == new)
return;
dpos = _rl_col_width (data, 0, new);
if (dpos > woff)
dpos -= woff;
}
else if (_rl_last_c_pos == _rl_col_width (data, 0, new))
return;
#else
if (_rl_last_c_pos == new) return;
else
#endif
dpos = new;
/* If we don't have to do anything, then return. */
if (cpos == dpos)
return;
/* It may be faster to output a CR, and then move forwards instead
of moving backwards. */
/* i == current physical cursor position. */
i = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset);
#if defined (HANDLE_MULTIBYTE)
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
i = _rl_last_c_pos;
else
#endif
i = _rl_last_c_pos - woff;
if (new == 0 || CR_FASTER (new, _rl_last_c_pos) ||
(_rl_term_autowrap && i == _rl_screenwidth))
{
@@ -1669,10 +1708,13 @@ _rl_move_cursor_relative (new, data)
#else
tputs (_rl_term_cr, 1, _rl_output_character_function);
#endif /* !__MSDOS__ */
_rl_last_c_pos = 0;
cpos = _rl_last_c_pos = 0;
}
if (_rl_last_c_pos < new)
if (cpos != _rl_last_c_pos)
itrace("_rl_move_cursor_relative: cpos (%d) != _rl_last_c_pos (%d)", cpos, _rl_last_c_pos);
if (cpos < dpos)
{
/* Move the cursor forward. We do it by printing the command
to move the cursor forward if there is one, else print that
@@ -1686,31 +1728,11 @@ _rl_move_cursor_relative (new, data)
#if defined (HACK_TERMCAP_MOTION)
if (_rl_term_forward_char)
{
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
{
int width;
width = _rl_col_width (data, _rl_last_c_pos, new);
for (i = 0; i < width; i++)
tputs (_rl_term_forward_char, 1, _rl_output_character_function);
}
else
{
for (i = _rl_last_c_pos; i < new; i++)
tputs (_rl_term_forward_char, 1, _rl_output_character_function);
}
}
else if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
{
tputs (_rl_term_cr, 1, _rl_output_character_function);
for (i = 0; i < new; i++)
putc (data[i], rl_outstream);
for (i = cpos; i < dpos; i++)
tputs (_rl_term_forward_char, 1, _rl_output_character_function);
}
else
for (i = _rl_last_c_pos; i < new; i++)
putc (data[i], rl_outstream);
#else /* !HACK_TERMCAP_MOTION */
#endif /* HACK_TERMCAP_MOTION */
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
{
tputs (_rl_term_cr, 1, _rl_output_character_function);
@@ -1718,32 +1740,20 @@ _rl_move_cursor_relative (new, data)
putc (data[i], rl_outstream);
}
else
for (i = _rl_last_c_pos; i < new; i++)
for (i = cpos; i < new; i++)
putc (data[i], rl_outstream);
#endif /* !HACK_TERMCAP_MOTION */
}
#if defined (HANDLE_MULTIBYTE)
/* NEW points to the buffer point, but _rl_last_c_pos is the display point.
The byte length of the string is probably bigger than the column width
of the string, which means that if NEW == _rl_last_c_pos, then NEW's
display point is less than _rl_last_c_pos. */
else if (_rl_last_c_pos >= new)
#else
else if (_rl_last_c_pos > new)
#endif
{
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
_rl_backspace (_rl_last_c_pos - _rl_col_width (data, 0, new));
else
_rl_backspace (_rl_last_c_pos - new);
}
else if (cpos > dpos)
_rl_backspace (cpos - dpos);
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
_rl_last_c_pos = _rl_col_width (data, 0, new);
else
_rl_last_c_pos = new;
_rl_last_c_pos = dpos;
}
/* PWP: move the cursor up or down. */
Binary file not shown.
+3 -3
View File
@@ -1,6 +1,6 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 27 2005 by texi2html 1.64 -->
<!-- Created on November, 17 2005 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
@@ -2100,7 +2100,7 @@ to permit their use in free software.
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1>About this document</H1>
This document was generated by <I>Chet Ramey</I> on <I>October, 27 2005</I>
This document was generated by <I>Chet Ramey</I> on <I>November, 17 2005</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
<P></P>
@@ -2262,7 +2262,7 @@ the following structure:
<BR>
<FONT SIZE="-1">
This document was generated
by <I>Chet Ramey</I> on <I>October, 27 2005</I>
by <I>Chet Ramey</I> on <I>November, 17 2005</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
+24 -24
View File
@@ -2,7 +2,7 @@ This is history.info, produced by makeinfo version 4.7 from
./history.texi.
This document describes the GNU History library (version 5.1-beta1,
7 October 2005), a programming tool that provides a consistent user
11 November 2005), a programming tool that provides a consistent user
interface for recalling lines of previously typed input.
Copyright (C) 1988-2004 Free Software Foundation, Inc.
@@ -1325,28 +1325,28 @@ Appendix C Function and Variable Index

Tag Table:
Node: Top1285
Node: Using History Interactively1910
Node: History Interaction2418
Node: Event Designators3842
Node: Word Designators4777
Node: Modifiers6416
Node: Programming with GNU History7643
Node: Introduction to History8375
Node: History Storage10065
Node: History Functions11200
Node: Initializing History and State Management12189
Node: History List Management13001
Node: Information About the History List15033
Node: Moving Around the History List16530
Node: Searching the History List17531
Node: Managing the History File19463
Node: History Expansion21283
Node: History Variables23191
Node: History Programming Example25997
Node: Copying This Manual28674
Node: GNU Free Documentation License28934
Node: Concept Index51340
Node: Function and Variable Index52180
Node: Top1287
Node: Using History Interactively1912
Node: History Interaction2420
Node: Event Designators3844
Node: Word Designators4779
Node: Modifiers6418
Node: Programming with GNU History7645
Node: Introduction to History8377
Node: History Storage10067
Node: History Functions11202
Node: Initializing History and State Management12191
Node: History List Management13003
Node: Information About the History List15035
Node: Moving Around the History List16532
Node: Searching the History List17533
Node: Managing the History File19465
Node: History Expansion21285
Node: History Variables23193
Node: History Programming Example25999
Node: Copying This Manual28676
Node: GNU Free Documentation License28936
Node: Concept Index51342
Node: Function and Variable Index52182

End Tag Table
+3 -3
View File
@@ -1,4 +1,4 @@
This is TeX, Version 3.14159 (Web2C 7.4.5) (format=tex 2005.3.22) 27 OCT 2005 17:26
This is TeX, Version 3.14159 (Web2C 7.4.5) (format=tex 2005.3.22) 17 NOV 2005 10:43
**/usr/homes/chet/src/bash/src/lib/readline/doc/history.texi
(/usr/homes/chet/src/bash/src/lib/readline/doc/history.texi (./texinfo.tex
Loading texinfo [version 2003-02-03.16]: Basics,
@@ -160,10 +160,10 @@ Chapter 2 [3] [4] [5] [6] [7] [8] [9] [10] [11]) Appendix A [12] (./fdl.texi
Here is how much of TeX's memory you used:
1409 strings out of 98002
16451 string characters out of 1221987
45514 words of memory out of 1000001
45518 words of memory out of 1000001
2271 multiletter control sequences out of 10000+50000
31953 words of font info for 111 fonts, out of 500000 for 1000
19 hyphenation exceptions out of 1000
15i,6n,17p,283b,649s stack positions out of 1500i,500n,5000p,200000b,5000s
Output written on history.dvi (28 pages, 79880 bytes).
Output written on history.dvi (28 pages, 79896 bytes).
+15 -14
View File
@@ -10,7 +10,7 @@
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -D 300 -o history.ps history.dvi
%DVIPSParameters: dpi=300, compressed
%DVIPSSource: TeX output 2005.10.27:1726
%DVIPSSource: TeX output 2005.11.17:1043
%%BeginProcSet: texc.pro
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -3316,20 +3316,21 @@ TeXDict begin
%%Page: 1 1
TeXDict begin 1 0 bop 75 659 a Fs(GNU)33 b(History)e(Library)p
75 709 1800 17 v 710 757 a Fr(Edition)14 b(5.1-b)q(eta1,)g(for)h
Fq(History)f(Library)g Fr(V)l(ersion)h(5.1-b)q(eta1.)1608
811 y(Octob)q(er)h(2005)75 2467 y Fp(Chet)22 b(Ramey)-6
b(,)23 b(Case)e(W)-6 b(estern)23 b(Reserv)n(e)f(Univ)n(ersit)n(y)75
2534 y(Brian)g(F)-6 b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6
b(oundation)p 75 2570 1800 9 v eop end
Fq(History)f(Library)g Fr(V)l(ersion)h(5.1-b)q(eta1.)1569
811 y(No)o(v)o(em)o(b)q(er)g(2005)75 2467 y Fp(Chet)22
b(Ramey)-6 b(,)23 b(Case)e(W)-6 b(estern)23 b(Reserv)n(e)f(Univ)n
(ersit)n(y)75 2534 y(Brian)g(F)-6 b(o)n(x,)23 b(F)-6
b(ree)23 b(Soft)n(w)n(are)f(F)-6 b(oundation)p 75 2570
1800 9 v eop end
%%Page: 2 2
TeXDict begin 2 1 bop 75 1512 a Fr(This)17 b(do)q(cumen)o(t)h(describ)q
(es)g(the)g(GNU)f(History)g(library)f(\(v)o(ersion)h(5.1-b)q(eta1,)g(7)
g(Octob)q(er)h(2005\),)e(a)75 1567 y(programming)e(to)q(ol)h(that)h
(pro)o(vides)f(a)h(consisten)o(t)f(user)h(in)o(terface)f(for)h
(recalling)e(lines)i(of)g(previously)75 1621 y(t)o(yp)q(ed)g(input.)75
1689 y(Cop)o(yrigh)o(t)301 1688 y(c)289 1689 y Fo(\015)f
Fr(1988-2004)e(F)l(ree)i(Soft)o(w)o(are)f(F)l(oundation,)g(Inc.)75
1756 y(P)o(ermission)h(is)g(gran)o(ted)h(to)f(mak)o(e)h(and)g
TeXDict begin 2 1 bop 75 1512 a Fr(This)15 b(do)q(cumen)o(t)h(describ)q
(es)h(the)f(GNU)f(History)g(library)f(\(v)o(ersion)h(5.1-b)q(eta1,)f
(11)h(No)o(v)o(em)o(b)q(er)h(2005\),)75 1567 y(a)d(programming)e(to)q
(ol)h(that)g(pro)o(vides)h(a)g(consisten)o(t)f(user)h(in)o(terface)f
(for)h(recalling)e(lines)i(of)g(previously)75 1621 y(t)o(yp)q(ed)j
(input.)75 1689 y(Cop)o(yrigh)o(t)301 1688 y(c)289 1689
y Fo(\015)f Fr(1988-2004)e(F)l(ree)i(Soft)o(w)o(are)f(F)l(oundation,)g
(Inc.)75 1756 y(P)o(ermission)h(is)g(gran)o(ted)h(to)f(mak)o(e)h(and)g
(distribute)g(v)o(erbatim)e(copies)i(of)g(this)g(man)o(ual)f(pro)o
(vided)h(the)75 1811 y(cop)o(yrigh)o(t)e(notice)h(and)g(this)g(p)q
(ermission)f(notice)h(are)g(preserv)o(ed)h(on)f(all)f(copies.)195
Binary file not shown.
File diff suppressed because it is too large Load Diff
+89 -76
View File
@@ -2,7 +2,7 @@ This is readline.info, produced by makeinfo version 4.7 from
./rlman.texi.
This manual describes the GNU Readline Library (version 5.1-beta1,
7 October 2005), a library which aids in the consistency of user
11 November 2005), a library which aids in the consistency of user
interface across discrete programs which provide a command line
interface.
@@ -1640,6 +1640,11 @@ These variables are available to function writers.
The stdio stream to which Readline performs output. If `NULL',
Readline defaults to STDOUT.
-- Variable: int rl_prefer_env_winsize
If non-zero, Readline gives values found in the `LINES' and
`COLUMNS' environment variables greater precedence than values
fetched from the kernel when computing the screen dimensions.
-- Variable: rl_command_func_t * rl_last_func
The address of the last command function Readline executed. May
be used to test whether or not a function is being executed twice
@@ -2593,7 +2598,8 @@ to update its idea of the terminal size when a `SIGWINCH' is received.
-- Function: void rl_set_screen_size (int rows, int cols)
Set Readline's idea of the terminal size to ROWS rows and COLS
columns.
columns. If either ROWS or COLUMNS is less than or equal to 0,
Readline's idea of that terminal dimension is unchanged.
If an application does not want to install a `SIGWINCH' handler, but
is still interested in the screen dimensions, Readline's idea of the
@@ -2603,6 +2609,10 @@ screen size may be queried.
Return Readline's idea of the terminal's size in the variables
pointed to by the arguments.
-- Function: void rl_reset_screen_size (void)
Cause Readline to reobtain the screen size and recalculate its
dimensions.
The following functions install and remove Readline's signal
handlers.
@@ -4088,7 +4098,7 @@ Function and Variable Index
* rl_bind_keyseq_if_unbound: Binding Keys. (line 77)
* rl_bind_keyseq_if_unbound_in_map: Binding Keys. (line 83)
* rl_bind_keyseq_in_map: Binding Keys. (line 66)
* rl_binding_keymap: Readline Variables. (line 149)
* rl_binding_keymap: Readline Variables. (line 154)
* rl_callback_handler_install: Alternate Interface. (line 15)
* rl_callback_handler_remove: Alternate Interface. (line 33)
* rl_callback_read_char: Alternate Interface. (line 21)
@@ -4103,11 +4113,11 @@ Function and Variable Index
* rl_clear_message: Redisplay. (line 48)
* rl_clear_pending_input: Character Input. (line 30)
* rl_clear_signals: Readline Signal Handling.
(line 114)
* rl_complete <1>: How Completing Works.
(line 49)
* rl_complete: Completion Functions.
(line 119)
* rl_complete <1>: Completion Functions.
(line 20)
* rl_complete: How Completing Works.
(line 49)
* rl_complete_internal: Completion Functions.
(line 10)
* rl_completer_quote_characters: Completion Variables.
@@ -4146,7 +4156,7 @@ Function and Variable Index
* rl_copy_text: Modifying Text. (line 15)
* rl_crlf: Redisplay. (line 30)
* rl_delete_text: Modifying Text. (line 11)
* rl_deprep_term_function: Readline Variables. (line 139)
* rl_deprep_term_function: Readline Variables. (line 144)
* rl_deprep_terminal: Terminal Management. (line 13)
* rl_ding: Utility Functions. (line 21)
* rl_directory_completion_hook: Completion Variables.
@@ -4156,16 +4166,16 @@ Function and Variable Index
* rl_display_match_list: Utility Functions. (line 28)
* rl_do_undo: Allowing Undoing. (line 48)
* rl_done: Readline Variables. (line 28)
* rl_editing_mode: Readline Variables. (line 237)
* rl_editing_mode: Readline Variables. (line 242)
* rl_end: Readline Variables. (line 19)
* rl_end_undo_group: Allowing Undoing. (line 35)
* rl_erase_empty_line: Readline Variables. (line 47)
* rl_event_hook: Readline Variables. (line 114)
* rl_event_hook: Readline Variables. (line 119)
* rl_execute_next: Character Input. (line 26)
* rl_executing_keymap: Readline Variables. (line 145)
* rl_executing_macro: Readline Variables. (line 153)
* rl_executing_keymap: Readline Variables. (line 150)
* rl_executing_macro: Readline Variables. (line 158)
* rl_expand_prompt: Redisplay. (line 64)
* rl_explicit_arg: Readline Variables. (line 228)
* rl_explicit_arg: Readline Variables. (line 233)
* rl_extend_line_buffer: Utility Functions. (line 12)
* rl_filename_completion_desired: Completion Variables.
(line 187)
@@ -4194,11 +4204,11 @@ Function and Variable Index
* rl_get_keymap_by_name: Keymaps. (line 38)
* rl_get_keymap_name: Keymaps. (line 43)
* rl_get_screen_size: Readline Signal Handling.
(line 101)
(line 102)
* rl_get_termcap: Miscellaneous Functions.
(line 42)
* rl_getc: Character Input. (line 15)
* rl_getc_function: Readline Variables. (line 120)
* rl_getc_function: Readline Variables. (line 125)
* rl_gnu_readline_p: Readline Variables. (line 78)
* rl_ignore_completion_duplicates: Completion Variables.
(line 183)
@@ -4216,7 +4226,7 @@ Function and Variable Index
* rl_invoking_keyseqs_in_map: Associating Function Names and Bindings.
(line 26)
* rl_kill_text: Modifying Text. (line 19)
* rl_last_func: Readline Variables. (line 100)
* rl_last_func: Readline Variables. (line 105)
* rl_library_version: Readline Variables. (line 68)
* rl_line_buffer: Readline Variables. (line 9)
* rl_list_funmap_names: Associating Function Names and Bindings.
@@ -4233,7 +4243,7 @@ Function and Variable Index
* rl_named_function: Associating Function Names and Bindings.
(line 11)
* rl_num_chars_to_read: Readline Variables. (line 32)
* rl_numeric_arg: Readline Variables. (line 232)
* rl_numeric_arg: Readline Variables. (line 237)
* rl_on_new_line: Redisplay. (line 15)
* rl_on_new_line_with_prompt: Redisplay. (line 19)
* rl_outstream: Readline Variables. (line 96)
@@ -4242,22 +4252,25 @@ Function and Variable Index
* rl_point: Readline Variables. (line 15)
* rl_possible_completions: Completion Functions.
(line 28)
* rl_pre_input_hook: Readline Variables. (line 109)
* rl_prep_term_function: Readline Variables. (line 132)
* rl_pre_input_hook: Readline Variables. (line 114)
* rl_prefer_env_winsize: Readline Variables. (line 100)
* rl_prep_term_function: Readline Variables. (line 137)
* rl_prep_terminal: Terminal Management. (line 7)
* rl_prompt: Readline Variables. (line 53)
* rl_push_macro_input: Modifying Text. (line 26)
* rl_read_init_file: Binding Keys. (line 101)
* rl_read_key: Character Input. (line 7)
* rl_readline_name: Readline Variables. (line 87)
* rl_readline_state: Readline Variables. (line 156)
* rl_readline_state: Readline Variables. (line 161)
* rl_readline_version: Readline Variables. (line 71)
* rl_redisplay: Redisplay. (line 7)
* rl_redisplay_function: Readline Variables. (line 126)
* rl_redisplay_function: Readline Variables. (line 131)
* rl_replace_line: Utility Functions. (line 7)
* rl_reset_after_signal: Readline Signal Handling.
(line 80)
* rl_reset_line_state: Redisplay. (line 26)
* rl_reset_screen_size: Readline Signal Handling.
(line 106)
* rl_reset_terminal: Terminal Management. (line 28)
* rl_resize_terminal: Readline Signal Handling.
(line 89)
@@ -4272,11 +4285,11 @@ Function and Variable Index
* rl_set_screen_size: Readline Signal Handling.
(line 93)
* rl_set_signals: Readline Signal Handling.
(line 108)
(line 113)
* rl_show_char: Redisplay. (line 33)
* rl_special_prefixes: Completion Variables.
(line 124)
* rl_startup_hook: Readline Variables. (line 105)
* rl_startup_hook: Readline Variables. (line 110)
* rl_stuff_char: Character Input. (line 19)
* rl_terminal_name: Readline Variables. (line 82)
* rl_tty_set_default_bindings: Terminal Management. (line 18)
@@ -4327,58 +4340,58 @@ Function and Variable Index

Tag Table:
Node: Top1301
Node: Command Line Editing1939
Node: Introduction and Notation2591
Node: Readline Interaction4214
Node: Readline Bare Essentials5406
Node: Readline Movement Commands7196
Node: Readline Killing Commands8162
Node: Readline Arguments10083
Node: Searching11128
Node: Readline Init File13280
Node: Readline Init File Syntax14346
Node: Conditional Init Constructs26281
Node: Sample Init File28815
Node: Bindable Readline Commands31933
Node: Commands For Moving32991
Node: Commands For History33853
Node: Commands For Text36978
Node: Commands For Killing39705
Node: Numeric Arguments41848
Node: Commands For Completion42988
Node: Keyboard Macros44533
Node: Miscellaneous Commands45105
Node: Readline vi Mode48467
Node: Programming with GNU Readline50291
Node: Basic Behavior51266
Node: Custom Functions54683
Node: Readline Typedefs56167
Node: Function Writing57806
Node: Readline Variables59113
Node: Readline Convenience Functions68574
Node: Function Naming69564
Node: Keymaps70826
Node: Binding Keys72598
Node: Associating Function Names and Bindings77145
Node: Allowing Undoing79407
Node: Redisplay81957
Node: Modifying Text85857
Node: Character Input87103
Node: Terminal Management88901
Node: Utility Functions90337
Node: Miscellaneous Functions92702
Node: Alternate Interface94999
Node: A Readline Example97158
Node: Readline Signal Handling99061
Node: Custom Completers104679
Node: How Completing Works105399
Node: Completion Functions108713
Node: Completion Variables112285
Node: A Short Completion Example124475
Node: Copying This Manual136648
Node: GNU Free Documentation License136910
Node: Concept Index159317
Node: Function and Variable Index160973
Node: Top1303
Node: Command Line Editing1941
Node: Introduction and Notation2593
Node: Readline Interaction4216
Node: Readline Bare Essentials5408
Node: Readline Movement Commands7198
Node: Readline Killing Commands8164
Node: Readline Arguments10085
Node: Searching11130
Node: Readline Init File13282
Node: Readline Init File Syntax14348
Node: Conditional Init Constructs26283
Node: Sample Init File28817
Node: Bindable Readline Commands31935
Node: Commands For Moving32993
Node: Commands For History33855
Node: Commands For Text36980
Node: Commands For Killing39707
Node: Numeric Arguments41850
Node: Commands For Completion42990
Node: Keyboard Macros44535
Node: Miscellaneous Commands45107
Node: Readline vi Mode48469
Node: Programming with GNU Readline50293
Node: Basic Behavior51268
Node: Custom Functions54685
Node: Readline Typedefs56169
Node: Function Writing57808
Node: Readline Variables59115
Node: Readline Convenience Functions68817
Node: Function Naming69807
Node: Keymaps71069
Node: Binding Keys72841
Node: Associating Function Names and Bindings77388
Node: Allowing Undoing79650
Node: Redisplay82200
Node: Modifying Text86100
Node: Character Input87346
Node: Terminal Management89144
Node: Utility Functions90580
Node: Miscellaneous Functions92945
Node: Alternate Interface95242
Node: A Readline Example97401
Node: Readline Signal Handling99304
Node: Custom Completers105172
Node: How Completing Works105892
Node: Completion Functions109206
Node: Completion Variables112778
Node: A Short Completion Example124968
Node: Copying This Manual137141
Node: GNU Free Documentation License137403
Node: Concept Index159810
Node: Function and Variable Index161466

End Tag Table
File diff suppressed because it is too large Load Diff
+9 -7
View File
@@ -115,9 +115,10 @@
\entry{rl_readline_name}{25}{\code {rl_readline_name}}
\entry{rl_instream}{25}{\code {rl_instream}}
\entry{rl_outstream}{25}{\code {rl_outstream}}
\entry{rl_prefer_env_winsize}{25}{\code {rl_prefer_env_winsize}}
\entry{rl_last_func}{25}{\code {rl_last_func}}
\entry{rl_startup_hook}{25}{\code {rl_startup_hook}}
\entry{rl_pre_input_hook}{25}{\code {rl_pre_input_hook}}
\entry{rl_startup_hook}{26}{\code {rl_startup_hook}}
\entry{rl_pre_input_hook}{26}{\code {rl_pre_input_hook}}
\entry{rl_event_hook}{26}{\code {rl_event_hook}}
\entry{rl_getc_function}{26}{\code {rl_getc_function}}
\entry{rl_redisplay_function}{26}{\code {rl_redisplay_function}}
@@ -127,13 +128,13 @@
\entry{rl_binding_keymap}{26}{\code {rl_binding_keymap}}
\entry{rl_executing_macro}{26}{\code {rl_executing_macro}}
\entry{rl_readline_state}{26}{\code {rl_readline_state}}
\entry{rl_explicit_arg}{27}{\code {rl_explicit_arg}}
\entry{rl_explicit_arg}{28}{\code {rl_explicit_arg}}
\entry{rl_numeric_arg}{28}{\code {rl_numeric_arg}}
\entry{rl_editing_mode}{28}{\code {rl_editing_mode}}
\entry{rl_add_defun}{28}{\code {rl_add_defun}}
\entry{rl_make_bare_keymap}{28}{\code {rl_make_bare_keymap}}
\entry{rl_copy_keymap}{28}{\code {rl_copy_keymap}}
\entry{rl_make_keymap}{28}{\code {rl_make_keymap}}
\entry{rl_make_keymap}{29}{\code {rl_make_keymap}}
\entry{rl_discard_keymap}{29}{\code {rl_discard_keymap}}
\entry{rl_get_keymap}{29}{\code {rl_get_keymap}}
\entry{rl_set_keymap}{29}{\code {rl_set_keymap}}
@@ -142,7 +143,7 @@
\entry{rl_bind_key}{29}{\code {rl_bind_key}}
\entry{rl_bind_key_in_map}{29}{\code {rl_bind_key_in_map}}
\entry{rl_bind_key_if_unbound}{29}{\code {rl_bind_key_if_unbound}}
\entry{rl_bind_key_if_unbound_in_map}{29}{\code {rl_bind_key_if_unbound_in_map}}
\entry{rl_bind_key_if_unbound_in_map}{30}{\code {rl_bind_key_if_unbound_in_map}}
\entry{rl_unbind_key}{30}{\code {rl_unbind_key}}
\entry{rl_unbind_key_in_map}{30}{\code {rl_unbind_key_in_map}}
\entry{rl_unbind_function_in_map}{30}{\code {rl_unbind_function_in_map}}
@@ -153,7 +154,7 @@
\entry{rl_bind_keyseq_if_unbound}{30}{\code {rl_bind_keyseq_if_unbound}}
\entry{rl_bind_keyseq_if_unbound_in_map}{30}{\code {rl_bind_keyseq_if_unbound_in_map}}
\entry{rl_generic_bind}{30}{\code {rl_generic_bind}}
\entry{rl_parse_and_bind}{30}{\code {rl_parse_and_bind}}
\entry{rl_parse_and_bind}{31}{\code {rl_parse_and_bind}}
\entry{rl_read_init_file}{31}{\code {rl_read_init_file}}
\entry{rl_named_function}{31}{\code {rl_named_function}}
\entry{rl_function_of_keyseq}{31}{\code {rl_function_of_keyseq}}
@@ -228,12 +229,13 @@
\entry{rl_resize_terminal}{41}{\code {rl_resize_terminal}}
\entry{rl_set_screen_size}{41}{\code {rl_set_screen_size}}
\entry{rl_get_screen_size}{41}{\code {rl_get_screen_size}}
\entry{rl_reset_screen_size}{41}{\code {rl_reset_screen_size}}
\entry{rl_set_signals}{41}{\code {rl_set_signals}}
\entry{rl_clear_signals}{41}{\code {rl_clear_signals}}
\entry{rl_complete}{42}{\code {rl_complete}}
\entry{rl_completion_entry_function}{42}{\code {rl_completion_entry_function}}
\entry{rl_complete_internal}{42}{\code {rl_complete_internal}}
\entry{rl_complete}{42}{\code {rl_complete}}
\entry{rl_complete}{43}{\code {rl_complete}}
\entry{rl_possible_completions}{43}{\code {rl_possible_completions}}
\entry{rl_insert_completions}{43}{\code {rl_insert_completions}}
\entry{rl_completion_mode}{43}{\code {rl_completion_mode}}
+9 -7
View File
@@ -110,7 +110,7 @@
\entry {\code {rl_begin_undo_group}}{32}
\entry {\code {rl_bind_key}}{29}
\entry {\code {rl_bind_key_if_unbound}}{29}
\entry {\code {rl_bind_key_if_unbound_in_map}}{29}
\entry {\code {rl_bind_key_if_unbound_in_map}}{30}
\entry {\code {rl_bind_key_in_map}}{29}
\entry {\code {rl_bind_keyseq}}{30}
\entry {\code {rl_bind_keyseq_if_unbound}}{30}
@@ -127,7 +127,7 @@
\entry {\code {rl_clear_message}}{33}
\entry {\code {rl_clear_pending_input}}{35}
\entry {\code {rl_clear_signals}}{41}
\entry {\code {rl_complete}}{42}
\entry {\code {rl_complete}}{42, 43}
\entry {\code {rl_complete_internal}}{42}
\entry {\code {rl_completer_quote_characters}}{45}
\entry {\code {rl_completer_word_break_characters}}{45}
@@ -166,7 +166,7 @@
\entry {\code {rl_executing_keymap}}{26}
\entry {\code {rl_executing_macro}}{26}
\entry {\code {rl_expand_prompt}}{34}
\entry {\code {rl_explicit_arg}}{27}
\entry {\code {rl_explicit_arg}}{28}
\entry {\code {rl_extend_line_buffer}}{36}
\entry {\code {rl_filename_completion_desired}}{46}
\entry {\code {rl_filename_completion_function}}{43}
@@ -206,7 +206,7 @@
\entry {\code {rl_macro_bind}}{37}
\entry {\code {rl_macro_dumper}}{37}
\entry {\code {rl_make_bare_keymap}}{28}
\entry {\code {rl_make_keymap}}{28}
\entry {\code {rl_make_keymap}}{29}
\entry {\code {rl_mark}}{24}
\entry {\code {rl_message}}{33}
\entry {\code {rl_modifying}}{32}
@@ -216,11 +216,12 @@
\entry {\code {rl_on_new_line}}{33}
\entry {\code {rl_on_new_line_with_prompt}}{33}
\entry {\code {rl_outstream}}{25}
\entry {\code {rl_parse_and_bind}}{30}
\entry {\code {rl_parse_and_bind}}{31}
\entry {\code {rl_pending_input}}{24}
\entry {\code {rl_point}}{24}
\entry {\code {rl_possible_completions}}{43}
\entry {\code {rl_pre_input_hook}}{25}
\entry {\code {rl_pre_input_hook}}{26}
\entry {\code {rl_prefer_env_winsize}}{25}
\entry {\code {rl_prep_term_function}}{26}
\entry {\code {rl_prep_terminal}}{35}
\entry {\code {rl_prompt}}{25}
@@ -235,6 +236,7 @@
\entry {\code {rl_replace_line}}{36}
\entry {\code {rl_reset_after_signal}}{41}
\entry {\code {rl_reset_line_state}}{33}
\entry {\code {rl_reset_screen_size}}{41}
\entry {\code {rl_reset_terminal}}{35}
\entry {\code {rl_resize_terminal}}{41}
\entry {\code {rl_restore_prompt}}{33}
@@ -248,7 +250,7 @@
\entry {\code {rl_set_signals}}{41}
\entry {\code {rl_show_char}}{33}
\entry {\code {rl_special_prefixes}}{45}
\entry {\code {rl_startup_hook}}{25}
\entry {\code {rl_startup_hook}}{26}
\entry {\code {rl_stuff_char}}{35}
\entry {\code {rl_terminal_name}}{25}
\entry {\code {rl_tty_set_default_bindings}}{35}
+4 -4
View File
@@ -1,4 +1,4 @@
This is TeX, Version 3.14159 (Web2C 7.4.5) (format=tex 2005.3.22) 27 OCT 2005 17:26
This is TeX, Version 3.14159 (Web2C 7.4.5) (format=tex 2005.3.22) 17 NOV 2005 10:43
**/usr/homes/chet/src/bash/src/lib/readline/doc/rlman.texi
(/usr/homes/chet/src/bash/src/lib/readline/doc/rlman.texi (./texinfo.tex
Loading texinfo [version 2003-02-03.16]: Basics,
@@ -183,7 +183,7 @@ gnored[] |
[11] [12] [13] [14] [15] [16] [17] [18]) (./rltech.texi Chapter 2 [19] [20]
[21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35]
[36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46]
Underfull \hbox (badness 7379) in paragraph at lines 1807--1812
Underfull \hbox (badness 7379) in paragraph at lines 1818--1823
[]@textrm If an application-specific com-ple-tion func-tion as-signed to @text
tt rl_attempted_
@@ -201,10 +201,10 @@ tt rl_attempted_
Here is how much of TeX's memory you used:
1499 strings out of 98002
18486 string characters out of 1221987
58299 words of memory out of 1000001
59444 words of memory out of 1000001
2361 multiletter control sequences out of 10000+50000
31953 words of font info for 111 fonts, out of 500000 for 1000
19 hyphenation exceptions out of 1000
15i,8n,17p,281b,695s stack positions out of 1500i,500n,5000p,200000b,5000s
Output written on rlman.dvi (74 pages, 276580 bytes).
Output written on rlman.dvi (74 pages, 277700 bytes).
+1 -1
View File
@@ -400,7 +400,7 @@ The stdio stream to which Readline performs output.
If @code{NULL}, Readline defaults to @var{stdout}.
@end deftypevar
@detypevar int rl_prefer_env_winsize
@deftypevar int rl_prefer_env_winsize
If non-zero, Readline gives values found in the @env{LINES} and
@env{COLUMNS} environment variables greater precedence than values fetched
from the kernel when computing the screen dimensions.
Binary file not shown.
+3 -3
View File
@@ -1,6 +1,6 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 27 2005 by texi2html 1.64 -->
<!-- Created on November, 17 2005 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
@@ -2626,7 +2626,7 @@ to permit their use in free software.
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1>About this document</H1>
This document was generated by <I>Chet Ramey</I> on <I>October, 27 2005</I>
This document was generated by <I>Chet Ramey</I> on <I>November, 17 2005</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
<P></P>
@@ -2788,7 +2788,7 @@ the following structure:
<BR>
<FONT SIZE="-1">
This document was generated
by <I>Chet Ramey</I> on <I>October, 27 2005</I>
by <I>Chet Ramey</I> on <I>November, 17 2005</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
+28 -28
View File
@@ -2,9 +2,9 @@ This is rluserman.info, produced by makeinfo version 4.7 from
./rluserman.texi.
This manual describes the end user interface of the GNU Readline
Library (version 5.1-beta1, 7 October 2005), a library which aids in the
consistency of user interface across discrete programs which provide a
command line interface.
Library (version 5.1-beta1, 11 November 2005), a library which aids in
the consistency of user interface across discrete programs which provide
a command line interface.
Copyright (C) 1988-2005 Free Software Foundation, Inc.
@@ -1717,30 +1717,30 @@ permit their use in free software.

Tag Table:
Node: Top1344
Node: Command Line Editing1776
Node: Introduction and Notation2419
Node: Readline Interaction4043
Node: Readline Bare Essentials5236
Node: Readline Movement Commands7027
Node: Readline Killing Commands7994
Node: Readline Arguments9916
Node: Searching10962
Node: Readline Init File13115
Node: Readline Init File Syntax14182
Node: Conditional Init Constructs26118
Node: Sample Init File28653
Node: Bindable Readline Commands31772
Node: Commands For Moving32831
Node: Commands For History33694
Node: Commands For Text36820
Node: Commands For Killing39548
Node: Numeric Arguments41692
Node: Commands For Completion42833
Node: Keyboard Macros44379
Node: Miscellaneous Commands44952
Node: Readline vi Mode48315
Node: Copying This Manual49236
Node: GNU Free Documentation License49468
Node: Top1346
Node: Command Line Editing1778
Node: Introduction and Notation2421
Node: Readline Interaction4045
Node: Readline Bare Essentials5238
Node: Readline Movement Commands7029
Node: Readline Killing Commands7996
Node: Readline Arguments9918
Node: Searching10964
Node: Readline Init File13117
Node: Readline Init File Syntax14184
Node: Conditional Init Constructs26120
Node: Sample Init File28655
Node: Bindable Readline Commands31774
Node: Commands For Moving32833
Node: Commands For History33696
Node: Commands For Text36822
Node: Commands For Killing39550
Node: Numeric Arguments41694
Node: Commands For Completion42835
Node: Keyboard Macros44381
Node: Miscellaneous Commands44954
Node: Readline vi Mode48317
Node: Copying This Manual49238
Node: GNU Free Documentation License49470

End Tag Table
+3 -3
View File
@@ -1,4 +1,4 @@
This is TeX, Version 3.14159 (Web2C 7.4.5) (format=tex 2005.3.22) 27 OCT 2005 17:26
This is TeX, Version 3.14159 (Web2C 7.4.5) (format=tex 2005.3.22) 17 NOV 2005 10:43
**/usr/homes/chet/src/bash/src/lib/readline/doc/rluserman.texi
(/usr/homes/chet/src/bash/src/lib/readline/doc/rluserman.texi (./texinfo.tex
Loading texinfo [version 2003-02-03.16]: Basics,
@@ -186,10 +186,10 @@ gnored[] |
Here is how much of TeX's memory you used:
1405 strings out of 98002
16392 string characters out of 1221987
44924 words of memory out of 1000001
44928 words of memory out of 1000001
2276 multiletter control sequences out of 10000+50000
31953 words of font info for 111 fonts, out of 500000 for 1000
19 hyphenation exceptions out of 1000
13i,8n,10p,285b,695s stack positions out of 1500i,500n,5000p,200000b,5000s
Output written on rluserman.dvi (32 pages, 92856 bytes).
Output written on rluserman.dvi (32 pages, 92872 bytes).
+34 -33
View File
@@ -10,7 +10,7 @@
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -D 300 -o rluserman.ps rluserman.dvi
%DVIPSParameters: dpi=300, compressed
%DVIPSSource: TeX output 2005.10.27:1726
%DVIPSSource: TeX output 2005.11.17:1043
%%BeginProcSet: texc.pro
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -3042,41 +3042,42 @@ TeXDict begin
TeXDict begin 1 0 bop 75 659 a Fp(GNU)33 b(Readline)f(Library)f(User)i
(In)m(terface)p 75 709 1800 17 v 686 757 a Fo(Edition)15
b(5.1-b)q(eta1,)e(for)i Fn(Readline)f(Library)g Fo(V)l(ersion)h(5.1-b)q
(eta1.)1608 811 y(Octob)q(er)h(2005)75 2467 y Fm(Chet)22
b(Ramey)-6 b(,)23 b(Case)e(W)-6 b(estern)23 b(Reserv)n(e)f(Univ)n
(ersit)n(y)75 2534 y(Brian)g(F)-6 b(o)n(x,)23 b(F)-6
b(ree)23 b(Soft)n(w)n(are)f(F)-6 b(oundation)p 75 2570
1800 9 v eop end
(eta1.)1569 811 y(No)o(v)o(em)o(b)q(er)g(2005)75 2467
y Fm(Chet)22 b(Ramey)-6 b(,)23 b(Case)e(W)-6 b(estern)23
b(Reserv)n(e)f(Univ)n(ersit)n(y)75 2534 y(Brian)g(F)-6
b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6 b(oundation)p
75 2570 1800 9 v eop end
%%Page: 2 2
TeXDict begin 2 1 bop 75 1512 a Fo(This)19 b(man)o(ual)f(describ)q(es)i
(the)f(end)h(user)f(in)o(terface)g(of)f(the)i(GNU)f(Readline)g(Library)
g(\(v)o(ersion)f(5.1-)75 1567 y(b)q(eta1,)k(7)e(Octob)q(er)h(2005\),)f
(a)h(library)e(whic)o(h)i(aids)f(in)h(the)g(consistency)f(of)h(user)g
(in)o(terface)f(across)75 1621 y(discrete)15 b(programs)f(whic)o(h)h
(pro)o(vide)g(a)g(command)g(line)g(in)o(terface.)75 1689
y(Cop)o(yrigh)o(t)301 1688 y(c)289 1689 y Fl(\015)g Fo(1988-2005)e(F)l
(ree)i(Soft)o(w)o(are)f(F)l(oundation,)g(Inc.)75 1756
y(P)o(ermission)h(is)g(gran)o(ted)h(to)f(mak)o(e)h(and)g(distribute)g
(v)o(erbatim)e(copies)i(of)g(this)g(man)o(ual)f(pro)o(vided)h(the)75
1811 y(cop)o(yrigh)o(t)e(notice)h(and)g(this)g(p)q(ermission)f(notice)h
(are)g(preserv)o(ed)h(on)f(all)f(copies.)195 1878 y(P)o(ermission)i(is)
h(gran)o(ted)g(to)g(cop)o(y)l(,)h(distribute)f(and/or)g(mo)q(dify)g
(this)g(do)q(cumen)o(t)h(under)195 1933 y(the)h(terms)f(of)h(the)g(GNU)
g(F)l(ree)g(Do)q(cumen)o(tation)f(License,)i(V)l(ersion)f(1.1)f(or)g
(an)o(y)h(later)195 1988 y(v)o(ersion)13 b(published)h(b)o(y)g(the)g(F)
l(ree)f(Soft)o(w)o(are)g(F)l(oundation;)g(with)g(no)g(In)o(v)m(arian)o
(t)h(Sections,)195 2042 y(with)h(the)g(F)l(ron)o(t-Co)o(v)o(er)e(texts)
i(b)q(eing)h(\\A)f(GNU)g(Man)o(ual,")f(and)h(with)g(the)g(Bac)o(k-Co)o
(v)o(er)195 2097 y(T)l(exts)h(as)g(in)g(\(a\))f(b)q(elo)o(w.)23
b(A)16 b(cop)o(y)g(of)g(the)g(license)g(is)g(included)h(in)f(the)g
(section)g(en)o(titled)195 2152 y(\\GNU)f(F)l(ree)g(Do)q(cumen)o
(tation)f(License.")195 2219 y(\(a\))k(The)h(FSF's)f(Bac)o(k-Co)o(v)o
(er)g(T)l(ext)h(is:)27 b(\\Y)l(ou)19 b(ha)o(v)o(e)g(freedom)g(to)f(cop)
o(y)h(and)g(mo)q(dify)195 2274 y(this)d(GNU)g(Man)o(ual,)f(lik)o(e)g
(GNU)h(soft)o(w)o(are.)22 b(Copies)16 b(published)g(b)o(y)h(the)f(F)l
(ree)g(Soft)o(w)o(are)195 2329 y(F)l(oundation)f(raise)f(funds)i(for)e
(GNU)h(dev)o(elopmen)o(t.")75 2451 y(Published)g(b)o(y)h(the)f(F)l(ree)
g(Soft)o(w)o(are)f(F)l(oundation)75 2506 y(59)h(T)l(emple)g(Place,)f
g(\(v)o(ersion)f(5.1-)75 1567 y(b)q(eta1,)e(11)g(No)o(v)o(em)o(b)q(er)g
(2005\),)f(a)h(library)g(whic)o(h)g(aids)g(in)g(the)h(consistency)f(of)
g(user)h(in)o(terface)f(across)75 1621 y(discrete)f(programs)f(whic)o
(h)h(pro)o(vide)g(a)g(command)g(line)g(in)o(terface.)75
1689 y(Cop)o(yrigh)o(t)301 1688 y(c)289 1689 y Fl(\015)g
Fo(1988-2005)e(F)l(ree)i(Soft)o(w)o(are)f(F)l(oundation,)g(Inc.)75
1756 y(P)o(ermission)h(is)g(gran)o(ted)h(to)f(mak)o(e)h(and)g
(distribute)g(v)o(erbatim)e(copies)i(of)g(this)g(man)o(ual)f(pro)o
(vided)h(the)75 1811 y(cop)o(yrigh)o(t)e(notice)h(and)g(this)g(p)q
(ermission)f(notice)h(are)g(preserv)o(ed)h(on)f(all)f(copies.)195
1878 y(P)o(ermission)i(is)h(gran)o(ted)g(to)g(cop)o(y)l(,)h(distribute)
f(and/or)g(mo)q(dify)g(this)g(do)q(cumen)o(t)h(under)195
1933 y(the)h(terms)f(of)h(the)g(GNU)g(F)l(ree)g(Do)q(cumen)o(tation)f
(License,)i(V)l(ersion)f(1.1)f(or)g(an)o(y)h(later)195
1988 y(v)o(ersion)13 b(published)h(b)o(y)g(the)g(F)l(ree)f(Soft)o(w)o
(are)g(F)l(oundation;)g(with)g(no)g(In)o(v)m(arian)o(t)h(Sections,)195
2042 y(with)h(the)g(F)l(ron)o(t-Co)o(v)o(er)e(texts)i(b)q(eing)h(\\A)f
(GNU)g(Man)o(ual,")f(and)h(with)g(the)g(Bac)o(k-Co)o(v)o(er)195
2097 y(T)l(exts)h(as)g(in)g(\(a\))f(b)q(elo)o(w.)23 b(A)16
b(cop)o(y)g(of)g(the)g(license)g(is)g(included)h(in)f(the)g(section)g
(en)o(titled)195 2152 y(\\GNU)f(F)l(ree)g(Do)q(cumen)o(tation)f
(License.")195 2219 y(\(a\))k(The)h(FSF's)f(Bac)o(k-Co)o(v)o(er)g(T)l
(ext)h(is:)27 b(\\Y)l(ou)19 b(ha)o(v)o(e)g(freedom)g(to)f(cop)o(y)h
(and)g(mo)q(dify)195 2274 y(this)d(GNU)g(Man)o(ual,)f(lik)o(e)g(GNU)h
(soft)o(w)o(are.)22 b(Copies)16 b(published)g(b)o(y)h(the)f(F)l(ree)g
(Soft)o(w)o(are)195 2329 y(F)l(oundation)f(raise)f(funds)i(for)e(GNU)h
(dev)o(elopmen)o(t.")75 2451 y(Published)g(b)o(y)h(the)f(F)l(ree)g
(Soft)o(w)o(are)f(F)l(oundation)75 2506 y(59)h(T)l(emple)g(Place,)f
(Suite)i(330,)75 2560 y(Boston,)e(MA)h(02111-1307)75
2615 y(USA)p eop end
%%Page: -1 3
+1
View File
@@ -845,6 +845,7 @@ gen_wordlist_matches (cs, text)
}
sl->list[sl->list_len = nw] = (char *)NULL;
dispose_words (l2);
FREE (ntxt);
return sl;
}