bash-4.3-beta2 overlay

This commit is contained in:
Chet Ramey
2013-10-10 16:17:42 -04:00
parent aaa810a212
commit 145d6930ab
116 changed files with 12457 additions and 12721 deletions
+16 -3
View File
@@ -626,19 +626,32 @@ STRCOMPARE (p, pe, s, se)
{
int ret;
CHAR c1, c2;
int l1, l2;
l1 = pe - p;
l2 = se - s;
if (l1 != l2)
return (FNM_NOMATCH); /* unequal lengths, can't be identical */
c1 = *pe;
c2 = *se;
*pe = *se = '\0';
if (c1 != 0)
*pe = '\0';
if (c2 != 0)
*se = '\0';
#if HAVE_MULTIBYTE || defined (HAVE_STRCOLL)
ret = STRCOLL ((XCHAR *)p, (XCHAR *)s);
#else
ret = STRCMP ((XCHAR *)p, (XCHAR *)s);
#endif
*pe = c1;
*se = c2;
if (c1 != 0)
*pe = c1;
if (c2 != 0)
*se = c2;
return (ret == 0 ? ret : FNM_NOMATCH);
}
+11 -2
View File
@@ -1539,12 +1539,21 @@ The default value of @code{rl_catch_signals} is 1.
@end deftypevar
@deftypevar int rl_catch_sigwinch
If this variable is non-zero, Readline will install a signal handler for
@code{SIGWINCH}.
If this variable is set to a non-zero value,
Readline will install a signal handler for @code{SIGWINCH}.
The default value of @code{rl_catch_sigwinch} is 1.
@end deftypevar
@deftypevar int rl_change_environment
If this variable is set to a non-zero value,
and Readline is handling @code{SIGWINCH}, Readline will modify the
@var{LINES} and @var{COLUMNS} environment variables upon receipt of a
@code{SIGWINCH}
The default value of @code{rl_change_environment} is 1.
@end deftypevar
If an application does not wish to have Readline catch any signals, or
to handle signals other than those Readline catches (@code{SIGHUP},
for example),
+1 -1
View File
@@ -1833,7 +1833,7 @@ _completion_loader()
@{
. "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
@}
complete -D -F _completion_loader
complete -D -F _completion_loader -o bashdefault -o default
@end example
@node Programmable Completion Builtins
+6 -6
View File
@@ -113,6 +113,12 @@ _rl_any_typein ()
return any_typein;
}
int
_rl_pushed_input_available ()
{
return (push_index != pop_index);
}
/* Return the amount of space available in the buffer for stuffing
characters. */
static int
@@ -163,12 +169,6 @@ _rl_unget_char (key)
return (0);
}
int
_rl_pushed_input_available ()
{
return (push_index != pop_index);
}
/* If a character is available to be read, then read it and stuff it into
IBUFFER. Otherwise, just return. Returns number of characters read
(0 if none available) and -1 on error (EIO). */
+16 -9
View File
@@ -156,16 +156,16 @@ rl_forward_search_history (sign, key)
WHERE is the history list number of the current line. If it is
-1, then this line is the starting one. */
static void
rl_display_search (search_string, reverse_p, where)
rl_display_search (search_string, flags, where)
char *search_string;
int reverse_p, where;
int flags, where;
{
char *message;
int msglen, searchlen;
searchlen = (search_string && *search_string) ? strlen (search_string) : 0;
message = (char *)xmalloc (searchlen + 33);
message = (char *)xmalloc (searchlen + 64);
msglen = 0;
#if defined (NOTDEF)
@@ -178,7 +178,13 @@ rl_display_search (search_string, reverse_p, where)
message[msglen++] = '(';
if (reverse_p)
if (flags & SF_FAILED)
{
strcpy (message + msglen, "failed ");
msglen += 7;
}
if (flags & SF_REVERSE)
{
strcpy (message + msglen, "reverse-");
msglen += 8;
@@ -352,7 +358,7 @@ _rl_isearch_dispatch (cxt, c)
{
/* _rl_keyseq_timeout specified in milliseconds; _rl_input_queued
takes microseconds, so multiply by 1000. If we don't get any
additional input and we this keymap shadows another function, process
additional input and this keymap shadows another function, process
that key as if it was all we read. */
if (_rl_keyseq_timeout > 0 &&
RL_ISSTATE (RL_STATE_CALLBACK) == 0 &&
@@ -477,7 +483,7 @@ add_character:
XXX - since _rl_input_available depends on the application-
settable keyboard timeout value, this could alternatively
use _rl_input_queued(100000) */
if (cxt->lastc == ESC && _rl_input_available ())
if (cxt->lastc == ESC && (_rl_pushed_input_available () || _rl_input_available ()))
rl_execute_next (ESC);
return (0);
}
@@ -517,7 +523,7 @@ add_character:
cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size);
strcpy (cxt->search_string, last_isearch_string);
cxt->search_string_index = last_isearch_string_len;
rl_display_search (cxt->search_string, (cxt->sflags & SF_REVERSE), -1);
rl_display_search (cxt->search_string, cxt->sflags, -1);
break;
}
return (1);
@@ -691,6 +697,7 @@ add_character:
/* We cannot find the search string. Ding the bell. */
rl_ding ();
cxt->history_pos = cxt->last_found_line;
rl_display_search (cxt->search_string, cxt->sflags, (cxt->history_pos == cxt->save_line) ? -1 : cxt->history_pos);
return 1;
}
@@ -703,7 +710,7 @@ add_character:
rl_replace_line (cxt->lines[cxt->history_pos], 0);
rl_point = cxt->sline_index;
cxt->last_found_line = cxt->history_pos;
rl_display_search (cxt->search_string, (cxt->sflags & SF_REVERSE), (cxt->history_pos == cxt->save_line) ? -1 : cxt->history_pos);
rl_display_search (cxt->search_string, cxt->sflags, (cxt->history_pos == cxt->save_line) ? -1 : cxt->history_pos);
}
return 1;
@@ -738,7 +745,7 @@ rl_search_history (direction, invoking_key)
RL_SETSTATE(RL_STATE_ISEARCH);
cxt = _rl_isearch_init (direction);
rl_display_search (cxt->search_string, (cxt->sflags & SF_REVERSE), -1);
rl_display_search (cxt->search_string, cxt->sflags, -1);
/* If we are using the callback interface, all we do is set up here and
return. The key is that we leave RL_STATE_ISEARCH set. */
+12 -2
View File
@@ -1,7 +1,7 @@
/* readline.c -- a general facility for reading lines of input
with emacs style editing and completion. */
/* Copyright (C) 1987-2012 Free Software Foundation, Inc.
/* Copyright (C) 1987-2013 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.
@@ -1249,7 +1249,17 @@ bind_arrow_keys_internal (map)
rl_bind_keyseq_if_unbound ("\340G", rl_beg_of_line);
rl_bind_keyseq_if_unbound ("\340O", rl_end_of_line);
rl_bind_keyseq_if_unbound ("\340S", rl_delete);
rl_bind_keyseq_if_unbound ("\340R", rl_overwrite_mode);
rl_bind_keyseq_if_unbound ("\340R", rl_overwrite_mode);
/* These may or may not work because of the embedded NUL. */
rl_bind_keyseq_if_unbound ("\\000H", rl_get_previous_history);
rl_bind_keyseq_if_unbound ("\\000P", rl_get_next_history);
rl_bind_keyseq_if_unbound ("\\000M", rl_forward_char);
rl_bind_keyseq_if_unbound ("\\000K", rl_backward_char);
rl_bind_keyseq_if_unbound ("\\000G", rl_beg_of_line);
rl_bind_keyseq_if_unbound ("\\000O", rl_end_of_line);
rl_bind_keyseq_if_unbound ("\\000S", rl_delete);
rl_bind_keyseq_if_unbound ("\\000R", rl_overwrite_mode);
#endif
_rl_keymap = xkeymap;
+4
View File
@@ -617,6 +617,10 @@ extern int rl_catch_signals;
to do that. */
extern int rl_catch_sigwinch;
/* If non-zero, the readline SIGWINCH handler will modify LINES and
COLUMNS in the environment. */
extern int rl_change_environment;
/* Completion variables. */
/* Pointer to the generator function for completion_matches ().
NULL means to use rl_filename_completion_function (), the default
+2 -2
View File
@@ -79,8 +79,8 @@ extern char *strchr (), *strrchr ();
#define _rl_stricmp strcasecmp
#define _rl_strnicmp strncasecmp
#else
extern int _rl_stricmp PARAMS((char *, char *));
extern int _rl_strnicmp PARAMS((char *, char *, int));
extern int _rl_stricmp PARAMS((const char *, const char *));
extern int _rl_strnicmp PARAMS((const char *, const char *, int));
#endif
#if defined (HAVE_STRPBRK) && !defined (HAVE_MULTIBYTE)
+2 -2
View File
@@ -121,7 +121,7 @@ static int set_tty_settings PARAMS((int, TIOTYPE *));
static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *));
static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t));
static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t *));
static void
save_tty_chars (tiop)
@@ -341,7 +341,7 @@ static int set_tty_settings PARAMS((int, TIOTYPE *));
static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *));
static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t));
static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t *));
static void _rl_bind_tty_special_chars PARAMS((Keymap, TIOTYPE));
#if defined (FLUSHO)
+9 -4
View File
@@ -81,11 +81,15 @@ static void _win_get_screensize PARAMS((int *, int *));
static void _emx_get_screensize PARAMS((int *, int *));
#endif
/* If the calling application sets this to a non-zero value, readline will
use the $LINES and $COLUMNS environment variables to set its idea of the
window size before interrogating the kernel. */
/* If the calling application sets this to a non-zero value, readline will
use the $LINES and $COLUMNS environment variables to set its idea of the
window size before interrogating the kernel. */
int rl_prefer_env_winsize = 0;
/* If this is non-zero, readline will set LINES and COLUMNS in the
environment when it handles SIGWINCH. */
int rl_change_environment = 1;
/* **************************************************************** */
/* */
/* Terminal and Termcap */
@@ -305,7 +309,8 @@ _rl_get_screen_size (tty, ignore_env)
/* If we're being compiled as part of bash, set the environment
variables $LINES and $COLUMNS to new values. Otherwise, just
do a pair of putenv () or setenv () calls. */
sh_set_lines_and_columns (_rl_screenheight, _rl_screenwidth);
if (rl_change_environment)
sh_set_lines_and_columns (_rl_screenheight, _rl_screenwidth);
if (_rl_term_autowrap == 0)
_rl_screenwidth--;
+1 -1
View File
@@ -826,7 +826,7 @@ _rl_insert_char (count, c)
pending characters that are bound to rl_insert, and insert
them all. Don't do this if we're current reading input from
a macro. */
if ((RL_ISSTATE (RL_STATE_MACROINPUT) == 0) && _rl_any_typein ())
if ((RL_ISSTATE (RL_STATE_MACROINPUT) == 0) && _rl_pushed_input_available ())
_rl_insert_typein (c);
else
{
+11 -7
View File
@@ -373,11 +373,13 @@ _rl_strpbrk (string1, string2)
doesn't matter (strncasecmp). */
int
_rl_strnicmp (string1, string2, count)
char *string1, *string2;
const char *string1;
const char *string2;
int count;
{
register char *s1, *s2;
int d;
register const char *s1;
register const char *s2;
register int d;
if (count <= 0 || (string1 == string2))
return 0;
@@ -393,7 +395,7 @@ _rl_strnicmp (string1, string2, count)
break;
s2++;
}
while (--count != 0)
while (--count != 0);
return (0);
}
@@ -401,10 +403,12 @@ _rl_strnicmp (string1, string2, count)
/* strcmp (), but caseless (strcasecmp). */
int
_rl_stricmp (string1, string2)
char *string1, *string2;
const char *string1;
const char *string2;
{
register char *s1, *s2;
int d;
register const char *s1;
register const char *s2;
register int d;
s1 = string1;
s2 = string2;