mirror of
https://https.git.savannah.gnu.org/git/bash.git
synced 2026-07-09 05:00:49 +02:00
commit bash-20100902 snapshot
This commit is contained in:
+40
-3
@@ -6088,7 +6088,8 @@ lib/readline/complete.c
|
||||
- new variable, rl_menu_completion_entry_function, generator for
|
||||
rl_menu_complete
|
||||
- new menu completion `browsing' implementation, with several
|
||||
improvements over the old code. Inspired by Sami
|
||||
improvements over the old code. Inspired by Sami Pietila
|
||||
<sami.pietila@gmail.com>
|
||||
|
||||
lib/readline/readline.h
|
||||
- extern declaration for rl_menu_completion_entry_function
|
||||
@@ -10363,12 +10364,48 @@ pathexp.c
|
||||
8/28
|
||||
----
|
||||
lib/readline/rlprivate.h
|
||||
- add member to search_cxt to save _rl_keymap
|
||||
- add members to search_cxt to save _rl_keymap
|
||||
- new flag for isearch context: SF_CHGKMAP, set if we changed the
|
||||
keymap while reading a character for the search string that
|
||||
translated to a command
|
||||
|
||||
lib/readline/isearch.c
|
||||
- save current readline keymap in cxt->keymap in _rl_scxt_alloc
|
||||
- save current readline keymap in cxt->keymap and cxt->okeymap
|
||||
in _rl_scxt_alloc
|
||||
- in _rl_isearch_dispatch, only check for cxt->lastc as a member of
|
||||
cxt->search_terminators if it's > 0 (i.e., not an isearch opcode)
|
||||
|
||||
9/3
|
||||
---
|
||||
support/signames.c
|
||||
- add Solaris SIGJVM1 and SIGJVM2. Update from Stefan Teleman
|
||||
<stefan.teleman@oracle.com>
|
||||
|
||||
shell.c
|
||||
- instead of closing all fds 3-20 at shell startup, just set them to
|
||||
be close-on-exec. Report from Rainer Müller<raimue@macports.org>
|
||||
|
||||
lib/readline/isearch.c
|
||||
- in _rl_isearch_dispatch, if the current character maps to ISKMAP,
|
||||
move to the indicated keymap (using cxt->keymap) and go on to
|
||||
read another character. Fixes problem reported by Davor
|
||||
Cubranic <cubranic@stat.ubc.ca>
|
||||
- in _rl_isearch_dispatch, after translating key to possible opcode,
|
||||
restore _rl_keymap from cxt->okeymap if necessary
|
||||
- in _rl_isearch_dispatch, use key sequences that map to default
|
||||
functions that ^G, ^W, and ^Y map to as equivalent to those chars
|
||||
|
||||
lib/readline/complete.c
|
||||
- new variable, _rl_menu_complete_prefix_first, zero by default
|
||||
- change menu_complete to display common prefix (matches[0]) first
|
||||
before cycling through rest of match list if
|
||||
_rl_menu_complete_prefix_first is non-zero. Suggested by Sami
|
||||
Pietila <sami.pietila@gmail.com>
|
||||
|
||||
lib/readline/bind.c
|
||||
- new bindable readline variable, "menu-complete-display-prefix",
|
||||
controls setting of _rl_menu_complete_prefix_first
|
||||
|
||||
doc/{bash.1,bashref.texi},lib/readline/doc/{readline.3,rluser.texi}
|
||||
- added description of menu-complete-display-prefix bindable
|
||||
readline variable
|
||||
|
||||
+41
-3
@@ -6088,7 +6088,8 @@ lib/readline/complete.c
|
||||
- new variable, rl_menu_completion_entry_function, generator for
|
||||
rl_menu_complete
|
||||
- new menu completion `browsing' implementation, with several
|
||||
improvements over the old code. Inspired by Sami
|
||||
improvements over the old code. Inspired by Sami Pietila
|
||||
<sami.pietila@gmail.com>
|
||||
|
||||
lib/readline/readline.h
|
||||
- extern declaration for rl_menu_completion_entry_function
|
||||
@@ -10363,9 +10364,46 @@ pathexp.c
|
||||
8/28
|
||||
----
|
||||
lib/readline/rlprivate.h
|
||||
- add member to search_cxt to save _rl_keymap
|
||||
- add members to search_cxt to save _rl_keymap
|
||||
- new flag for isearch context: SF_CHGKMAP, set if we changed the
|
||||
keymap while reading a character for the search string that
|
||||
translated to a command
|
||||
|
||||
lib/readline/isearch.c
|
||||
- save current readline keymap in cxt->keymap in _rl_scxt_alloc
|
||||
- save current readline keymap in cxt->keymap and cxt->okeymap
|
||||
in _rl_scxt_alloc
|
||||
- in _rl_isearch_dispatch, only check for cxt->lastc as a member of
|
||||
cxt->search_terminators if it's > 0 (i.e., not an isearch opcode)
|
||||
|
||||
9/3
|
||||
---
|
||||
support/signames.c
|
||||
- add Solaris SIGJVM1 and SIGJVM2. Update from Stefan Teleman
|
||||
<stefan.teleman@oracle.com>
|
||||
|
||||
shell.c
|
||||
- instead of closing all fds 3-20 at shell startup, just set them to
|
||||
be close-on-exec. Report from Rainer Müller<raimue@macports.org>
|
||||
|
||||
lib/readline/isearch.c
|
||||
- in _rl_isearch_dispatch, if the current character maps to ISKMAP,
|
||||
move to the indicated keymap (using cxt->keymap) and go on to
|
||||
read another character. Fixes problem reported by Davor
|
||||
Cubranic <cubranic@stat.ubc.ca>
|
||||
- in _rl_isearch_dispatch, after translating key to possible opcode,
|
||||
restore _rl_keymap from cxt->okeymap if necessary
|
||||
- in _rl_isearch_dispatch, use key sequences that map to default
|
||||
functions that ^G, ^W, and ^Y map to as equivalent to those chars
|
||||
|
||||
lib/readline/complete.c
|
||||
- new variable, _rl_menu_complete_prefix_first, zero by default
|
||||
- change menu_complete to display common prefix (matches[0]) first
|
||||
before cycling through rest of match list if
|
||||
_rl_menu_complete_prefix_first is non-zero. Suggested by Sami
|
||||
Pietila <sami.pietila@gmail.com>
|
||||
|
||||
lib/readline/bind.c
|
||||
- new bindable readline variable, "menu-complete-display-prefix",
|
||||
controls setting of _rl_menu_complete_prefix_first
|
||||
|
||||
|
||||
|
||||
+7
-2
@@ -5,12 +5,12 @@
|
||||
.\" Case Western Reserve University
|
||||
.\" chet@po.cwru.edu
|
||||
.\"
|
||||
.\" Last Change: Sat Aug 28 18:55:45 EDT 2010
|
||||
.\" Last Change: Mon Sep 6 22:07:38 EDT 2010
|
||||
.\"
|
||||
.\" bash_builtins, strip all but Built-Ins section
|
||||
.if \n(zZ=1 .ig zZ
|
||||
.if \n(zY=1 .ig zY
|
||||
.TH BASH 1 "2010 August 28" "GNU Bash-4.2"
|
||||
.TH BASH 1 "2010 September 6" "GNU Bash-4.2"
|
||||
.\"
|
||||
.\" There's some problem with having a `@'
|
||||
.\" in a tagged paragraph with the BSD man macros.
|
||||
@@ -5227,6 +5227,11 @@ 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
|
||||
|
||||
+46
-40
@@ -5,12 +5,12 @@
|
||||
.\" Case Western Reserve University
|
||||
.\" chet@po.cwru.edu
|
||||
.\"
|
||||
.\" Last Change: Tue Aug 3 15:24:33 EDT 2010
|
||||
.\" Last Change: Sat Aug 28 18:55:45 EDT 2010
|
||||
.\"
|
||||
.\" bash_builtins, strip all but Built-Ins section
|
||||
.if \n(zZ=1 .ig zZ
|
||||
.if \n(zY=1 .ig zY
|
||||
.TH BASH 1 "2010 August 3" "GNU Bash-4.2"
|
||||
.TH BASH 1 "2010 August 28" "GNU Bash-4.2"
|
||||
.\"
|
||||
.\" There's some problem with having a `@'
|
||||
.\" in a tagged paragraph with the BSD man macros.
|
||||
@@ -408,7 +408,7 @@ No other startup files are read.
|
||||
.PP
|
||||
.B Bash
|
||||
attempts to determine when it is being run with its standard input
|
||||
connected to a network connection, as if by the remote shell
|
||||
connected to a network connection, as when executed by the remote shell
|
||||
daemon, usually \fIrshd\fP, or the secure shell daemon \fIsshd\fP.
|
||||
If
|
||||
.B bash
|
||||
@@ -938,7 +938,7 @@ command (see
|
||||
below).
|
||||
The file descriptors can be utilized as arguments to shell commands
|
||||
and redirections using standard word expansions.
|
||||
The process id of the shell spawned to execute the coprocess is
|
||||
The process ID of the shell spawned to execute the coprocess is
|
||||
available as the value of the variable \fINAME\fP_PID.
|
||||
The \fBwait\fP
|
||||
builtin command may be used to wait for the coprocess to terminate.
|
||||
@@ -1213,7 +1213,7 @@ builtin commands.
|
||||
In the context where an assignment statement is assigning a value
|
||||
to a shell variable or array index, the += operator can be used to
|
||||
append to or add to the variable's previous value.
|
||||
When += is applied to a variable for which the integer attribute has been
|
||||
When += is applied to a variable for which the \fIinteger\fP attribute has been
|
||||
set, \fIvalue\fP is evaluated as an arithmetic expression and added to the
|
||||
variable's current value, which is also evaluated.
|
||||
When += is applied to an array variable using compound assignment (see
|
||||
@@ -1373,7 +1373,7 @@ reading any startup files.
|
||||
This variable is read-only.
|
||||
.TP
|
||||
.B BASHPID
|
||||
Expands to the process id of the current \fBbash\fP process.
|
||||
Expands to the process ID of the current \fBbash\fP process.
|
||||
This differs from \fB$$\fP under certain circumstances, such as subshells
|
||||
that do not require \fBbash\fP to be re-initialized.
|
||||
.TP
|
||||
@@ -2680,7 +2680,7 @@ a level of variable indirection is introduced.
|
||||
expanded and that value is used in the rest of the substitution, rather
|
||||
than the value of \fIparameter\fP itself.
|
||||
This is known as \fIindirect expansion\fP.
|
||||
The exceptions to this are the expansions of ${!\fIprefix\fP*} and
|
||||
The exceptions to this are the expansions of ${\fB!\\fPfIprefix\fP\fB*\fP} and
|
||||
${\fB!\fP\fIname\fP[\fI@\fP]} described below.
|
||||
The exclamation point must immediately follow the left brace in order to
|
||||
introduce indirection.
|
||||
@@ -2740,7 +2740,7 @@ ${\fIparameter\fP\fB:\fP\fIoffset\fP}
|
||||
.TP
|
||||
${\fIparameter\fP\fB:\fP\fIoffset\fP\fB:\fP\fIlength\fP}
|
||||
.PD
|
||||
\fBSubstring Expansion.\fP
|
||||
\fBSubstring Expansion\fP.
|
||||
Expands to up to \fIlength\fP characters of \fIparameter\fP
|
||||
starting at the character specified by \fIoffset\fP.
|
||||
If \fIlength\fP is omitted, expands to the substring of
|
||||
@@ -2778,7 +2778,7 @@ ${\fB!\fP\fIprefix\fP\fB*\fP}
|
||||
.TP
|
||||
${\fB!\fP\fIprefix\fP\fB@\fP}
|
||||
.PD
|
||||
\fBNames matching prefix.\fP
|
||||
\fBNames matching prefix\fP.
|
||||
Expands to the names of variables whose names begin with \fIprefix\fP,
|
||||
separated by the first character of the
|
||||
.SM
|
||||
@@ -2792,7 +2792,7 @@ ${\fB!\fP\fIname\fP[\fI@\fP]}
|
||||
.TP
|
||||
${\fB!\fP\fIname\fP[\fI*\fP]}
|
||||
.PD
|
||||
\fBList of array keys.\fP
|
||||
\fBList of array keys\fP.
|
||||
If \fIname\fP is an array variable, expands to the list of array indices
|
||||
(keys) assigned in \fIname\fP.
|
||||
If \fIname\fP is not an array, expands to 0 if \fIname\fP is set and null
|
||||
@@ -2801,7 +2801,7 @@ When \fI@\fP is used and the expansion appears within double quotes, each
|
||||
key expands to a separate word.
|
||||
.TP
|
||||
${\fB#\fP\fIparameter\fP}
|
||||
\fBParameter length.\fP
|
||||
\fBParameter length\fP.
|
||||
The length in characters of the value of \fIparameter\fP is substituted.
|
||||
If
|
||||
.I parameter
|
||||
@@ -2823,7 +2823,7 @@ ${\fIparameter\fP\fB#\fP\fIword\fP}
|
||||
.TP
|
||||
${\fIparameter\fP\fB##\fP\fIword\fP}
|
||||
.PD
|
||||
\fBRemove matching prefix pattern.\fP
|
||||
\fBRemove matching prefix pattern\fP.
|
||||
The
|
||||
.I word
|
||||
is expanded to produce a pattern just as in pathname
|
||||
@@ -2856,7 +2856,7 @@ ${\fIparameter\fP\fB%\fP\fIword\fP}
|
||||
.TP
|
||||
${\fIparameter\fP\fB%%\fP\fIword\fP}
|
||||
.PD
|
||||
\fBRemove matching suffix pattern.\fP
|
||||
\fBRemove matching suffix pattern\fP.
|
||||
The \fIword\fP is expanded to produce a pattern just as in
|
||||
pathname expansion.
|
||||
If the pattern matches a trailing portion of the expanded value of
|
||||
@@ -2883,7 +2883,7 @@ the pattern removal operation is applied to each member of the
|
||||
array in turn, and the expansion is the resultant list.
|
||||
.TP
|
||||
${\fIparameter\fP\fB/\fP\fIpattern\fP\fB/\fP\fIstring\fP}
|
||||
\fBPattern substitution.\fP
|
||||
\fBPattern substitution\fP.
|
||||
The \fIpattern\fP is expanded to produce a pattern just as in
|
||||
pathname expansion.
|
||||
\fIParameter\fP is expanded and the longest match of \fIpattern\fP
|
||||
@@ -2922,7 +2922,7 @@ ${\fIparameter\fP\fB,\fP\fIpattern\fP}
|
||||
.TP
|
||||
${\fIparameter\fP\fB,,\fP\fIpattern\fP}
|
||||
.PD
|
||||
\fBCase modification.\fP
|
||||
\fBCase modification\fP.
|
||||
This expansion modifies the case of alphabetic characters in \fIparameter\fP.
|
||||
The \fIpattern\fP is expanded to produce a pattern just as in
|
||||
pathname expansion.
|
||||
@@ -3786,7 +3786,7 @@ function become the positional parameters
|
||||
during its execution.
|
||||
The special parameter
|
||||
.B #
|
||||
is updated to reflect the change. Special parameter 0
|
||||
is updated to reflect the change. Special parameter \fB0\fP
|
||||
is unchanged.
|
||||
The first element of the
|
||||
.SM
|
||||
@@ -3956,7 +3956,7 @@ The value of a variable is evaluated as an arithmetic expression
|
||||
when it is referenced, or when a variable which has been given the
|
||||
\fIinteger\fP attribute using \fBdeclare -i\fP is assigned a value.
|
||||
A null value evaluates to 0.
|
||||
A shell variable need not have its integer attribute
|
||||
A shell variable need not have its \fIinteger\fP attribute
|
||||
turned on to be used in an expression.
|
||||
.PP
|
||||
Constants with a leading 0 are interpreted as octal numbers.
|
||||
@@ -4308,8 +4308,8 @@ subshell environment. Changes made to the subshell environment
|
||||
cannot affect the shell's execution environment.
|
||||
.PP
|
||||
Subshells spawned to execute command substitutions inherit the value of
|
||||
the \fB\-e\fP option from the parent shell. When not in posix mode,
|
||||
Bash clears the \fB\-e\fP option in such subshells.
|
||||
the \fB\-e\fP option from the parent shell. When not in \fIposix\fP mode,
|
||||
\fBbash\fP clears the \fB\-e\fP option in such subshells.
|
||||
.PP
|
||||
If a command is followed by a \fB&\fP and job control is not active, the
|
||||
default standard input for the command is the empty file \fI/dev/null\fP.
|
||||
@@ -4804,7 +4804,7 @@ shell, unless the
|
||||
option is given at shell invocation.
|
||||
Line editing is also used when using the \fB\-e\fP option to the
|
||||
\fBread\fP builtin.
|
||||
By default, the line editing commands are similar to those of emacs.
|
||||
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
|
||||
.B \-o emacs
|
||||
@@ -4825,7 +4825,7 @@ options to the
|
||||
builtin.
|
||||
.SS "Readline Notation"
|
||||
.PP
|
||||
In this section, the emacs-style notation is used to denote
|
||||
In this section, the 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
|
||||
@@ -5142,7 +5142,7 @@ mapped to \fBself-insert\fP.
|
||||
.TP
|
||||
.B editing\-mode (emacs)
|
||||
Controls whether readline begins with a set of key bindings similar
|
||||
to \fIemacs\fP or \fIvi\fP.
|
||||
to \fIEmacs\fP or \fIvi\fP.
|
||||
.B editing\-mode
|
||||
can be set to either
|
||||
.B emacs
|
||||
@@ -5165,11 +5165,11 @@ 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
|
||||
@@ -5227,6 +5227,11 @@ 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
|
||||
@@ -5241,7 +5246,7 @@ 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
|
||||
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.
|
||||
@@ -5249,7 +5254,7 @@ calls to \fBreadline\fP.
|
||||
.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
|
||||
@@ -5257,7 +5262,7 @@ 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
|
||||
@@ -5317,7 +5322,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
|
||||
@@ -5755,7 +5760,7 @@ through the list.
|
||||
This command is intended to be bound to \fBTAB\fP, but is unbound
|
||||
by default.
|
||||
.TP
|
||||
.B menu\-complete-\backward
|
||||
.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.
|
||||
@@ -5892,7 +5897,7 @@ 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 ()
|
||||
.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
|
||||
@@ -5976,7 +5981,7 @@ 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 to not result in a compspec, any compspec defined with
|
||||
If those searches do not result in a compspec, any compspec defined with
|
||||
the \fB\-D\fP option to \fBcomplete\fP is used as the default.
|
||||
.PP
|
||||
Once a compspec has been found, it is used to generate the list of
|
||||
@@ -7670,7 +7675,7 @@ return value greater than zero.
|
||||
.SM
|
||||
.B OPTIND
|
||||
is set to the index of the first non-option argument,
|
||||
and \fBname\fP is set to ?.
|
||||
and \fIname\fP is set to ?.
|
||||
.sp 1
|
||||
.B getopts
|
||||
normally parses the positional parameters, but if more arguments are
|
||||
@@ -8419,10 +8424,10 @@ the return status is false.
|
||||
Any command associated with the \fBRETURN\fP trap is executed
|
||||
before execution resumes after the function or script.
|
||||
.TP
|
||||
\fBset\fP [\fB\-\-abefhkmnptuvxBCEHPT\fP] [\fB\-o\fP \fIoption\fP] [\fIarg\fP ...]
|
||||
\fBset\fP [\fB\-\-abefhkmnptuvxBCEHPT\fP] [\fB\-o\fP \fIoption\-name\fP] [\fIarg\fP ...]
|
||||
.PD 0
|
||||
.TP
|
||||
\fBset\fP [\fB+abefhkmnptuvxBCEHPT\fP] [\fB+o\fP \fIoption\fP] [\fIarg\fP ...]
|
||||
\fBset\fP [\fB+abefhkmnptuvxBCEHPT\fP] [\fB+o\fP \fIoption\-name\fP] [\fIarg\fP ...]
|
||||
.PD
|
||||
Without options, the name and value of each shell variable are displayed
|
||||
in a format that can be reused as input
|
||||
@@ -8904,20 +8909,21 @@ easy re-editing of multi-line commands.
|
||||
If set,
|
||||
.B bash
|
||||
changes its behavior to that of version 3.1 with respect to quoted
|
||||
arguments to the conditional command's =~ operator.
|
||||
arguments to the conditional command's \fB=~\fP operator.
|
||||
.TP 8
|
||||
.B compat32
|
||||
If set,
|
||||
.B bash
|
||||
changes its behavior to that of version 3.2 with respect to locale-specific
|
||||
string comparison when using the conditional command's < and > operators.
|
||||
string comparison when using the conditional command's \fB<\fP and \fB>\fP
|
||||
operators.
|
||||
.TP 8
|
||||
.B compat40
|
||||
If set,
|
||||
.B bash
|
||||
changes its behavior to that of version 4.0 with respect to locale-specific
|
||||
string comparison when using the conditional command's < and > operators
|
||||
and the effect of interrupting a command list.
|
||||
string comparison when using the conditional command's \fB<\fP and \fB>\fP
|
||||
operators and the effect of interrupting a command list.
|
||||
.TP 8
|
||||
.B compat41
|
||||
@item compat41
|
||||
@@ -9720,7 +9726,7 @@ as an argument to the
|
||||
.B .
|
||||
builtin command
|
||||
.IP \(bu
|
||||
Specifying a filename containing a slash as an argument to the
|
||||
specifying a filename containing a slash as an argument to the
|
||||
.B \-p
|
||||
option to the
|
||||
.B hash
|
||||
@@ -9747,7 +9753,7 @@ options to the
|
||||
.B enable
|
||||
builtin command
|
||||
.IP \(bu
|
||||
Using the \fBenable\fP builtin command to enable disabled shell builtins
|
||||
using the \fBenable\fP builtin command to enable disabled shell builtins
|
||||
.IP \(bu
|
||||
specifying the
|
||||
.B \-p
|
||||
|
||||
+3
-3
@@ -2,9 +2,9 @@
|
||||
Copyright (C) 1988-2010 Free Software Foundation, Inc.
|
||||
@end ignore
|
||||
|
||||
@set LASTCHANGE Sat Aug 28 18:56:04 EDT 2010
|
||||
@set LASTCHANGE Mon Sep 6 22:08:10 EDT 2010
|
||||
|
||||
@set EDITION 4.2
|
||||
@set VERSION 4.2
|
||||
@set UPDATED 28 August 2010
|
||||
@set UPDATED-MONTH August 2010
|
||||
@set UPDATED 6 September 2010
|
||||
@set UPDATED-MONTH September 2010
|
||||
|
||||
+3
-3
@@ -2,9 +2,9 @@
|
||||
Copyright (C) 1988-2010 Free Software Foundation, Inc.
|
||||
@end ignore
|
||||
|
||||
@set LASTCHANGE Wed Jul 21 08:54:40 EDT 2010
|
||||
@set LASTCHANGE Sat Aug 28 18:56:04 EDT 2010
|
||||
|
||||
@set EDITION 4.2
|
||||
@set VERSION 4.2
|
||||
@set UPDATED 21 July 2010
|
||||
@set UPDATED-MONTH July 2010
|
||||
@set UPDATED 28 August 2010
|
||||
@set UPDATED-MONTH August 2010
|
||||
|
||||
+1
-2
@@ -735,7 +735,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
|
||||
execute_simple_command (command->value.Simple, pipe_in, pipe_out,
|
||||
asynchronous, fds_to_close);
|
||||
line_number = save_line_number;
|
||||
|
||||
itrace("execute_simple_command (%s) returns %d", command->value.Simple->words->word->word, exec_result);
|
||||
/* The temporary environment should be used for only the simple
|
||||
command immediately following its definition. */
|
||||
dispose_used_env_vars ();
|
||||
@@ -4329,7 +4329,6 @@ execute_shell_function (var, words)
|
||||
int ret;
|
||||
struct fd_bitmap *bitmap;
|
||||
|
||||
itrace("execute_shell_function: %s", var->name);
|
||||
bitmap = new_fd_bitmap (FD_BITMAP_DEFAULT_SIZE);
|
||||
begin_unwind_frame ("execute-shell-function");
|
||||
add_unwind_protect (dispose_fd_bitmap, (char *)bitmap);
|
||||
|
||||
@@ -1438,6 +1438,7 @@ static const 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 },
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* bind.c -- key binding and startup file support for the readline library. */
|
||||
|
||||
/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1987-2010 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.
|
||||
|
||||
+10
-1
@@ -195,6 +195,10 @@ int rl_visible_stats = 0;
|
||||
after the `e' in `Makefile' won't result in `Makefilefile'. */
|
||||
int _rl_skip_completed_text = 0;
|
||||
|
||||
/* If non-zero, menu completion displays the common prefix first in the
|
||||
cycle of possible completions instead of the last. */
|
||||
int _rl_menu_complete_prefix_first = 0;
|
||||
|
||||
/* If non-zero, then this is the address of a function to call when
|
||||
completing on a directory name. The function is called with
|
||||
the address of a string (the current directory name) as an arg. */
|
||||
@@ -2481,7 +2485,7 @@ rl_menu_complete (count, ignore)
|
||||
static int full_completion = 0; /* set to 1 if menu completion should reinitialize on next call */
|
||||
static int orig_start, orig_end;
|
||||
static char quote_char;
|
||||
static int delimiter;
|
||||
static int delimiter, cstate;
|
||||
|
||||
/* The first time through, we generate the list of matches and set things
|
||||
up to insert them. */
|
||||
@@ -2589,6 +2593,11 @@ rl_menu_complete (count, ignore)
|
||||
full_completion = 1;
|
||||
return (0);
|
||||
}
|
||||
else if (_rl_menu_complete_prefix_first && match_list_size > 1)
|
||||
{
|
||||
rl_ding ();
|
||||
return (0);
|
||||
}
|
||||
}
|
||||
|
||||
/* Now we have the list of matches. Replace the text between
|
||||
|
||||
+35
-26
@@ -195,6 +195,10 @@ int rl_visible_stats = 0;
|
||||
after the `e' in `Makefile' won't result in `Makefilefile'. */
|
||||
int _rl_skip_completed_text = 0;
|
||||
|
||||
/* If non-zero, menu completion displays the common prefix first in the
|
||||
cycle of possible completions instead of the last. */
|
||||
int _rl_menu_complete_prefix_first = 1;
|
||||
|
||||
/* If non-zero, then this is the address of a function to call when
|
||||
completing on a directory name. The function is called with
|
||||
the address of a string (the current directory name) as an arg. */
|
||||
@@ -847,7 +851,7 @@ print_filename (to_print, full_pathname, prefix_bytes)
|
||||
if (path_isdir (new_full_pathname))
|
||||
extension_char = '/';
|
||||
|
||||
free (new_full_pathname);
|
||||
xfree (new_full_pathname);
|
||||
to_print[-1] = c;
|
||||
}
|
||||
else
|
||||
@@ -862,7 +866,7 @@ print_filename (to_print, full_pathname, prefix_bytes)
|
||||
extension_char = '/';
|
||||
}
|
||||
|
||||
free (s);
|
||||
xfree (s);
|
||||
if (extension_char)
|
||||
{
|
||||
putc (extension_char, rl_outstream);
|
||||
@@ -1099,7 +1103,7 @@ remove_duplicate_matches (matches)
|
||||
{
|
||||
if (strcmp (matches[i], matches[i + 1]) == 0)
|
||||
{
|
||||
free (matches[i]);
|
||||
xfree (matches[i]);
|
||||
matches[i] = (char *)&dead_slot;
|
||||
}
|
||||
else
|
||||
@@ -1117,7 +1121,7 @@ remove_duplicate_matches (matches)
|
||||
temp_array[j] = (char *)NULL;
|
||||
|
||||
if (matches[0] != (char *)&dead_slot)
|
||||
free (matches[0]);
|
||||
xfree (matches[0]);
|
||||
|
||||
/* Place the lowest common denominator back in [0]. */
|
||||
temp_array[0] = lowest_common;
|
||||
@@ -1127,7 +1131,7 @@ remove_duplicate_matches (matches)
|
||||
insert. */
|
||||
if (j == 2 && strcmp (temp_array[0], temp_array[1]) == 0)
|
||||
{
|
||||
free (temp_array[1]);
|
||||
xfree (temp_array[1]);
|
||||
temp_array[1] = (char *)NULL;
|
||||
}
|
||||
return (temp_array);
|
||||
@@ -1306,7 +1310,7 @@ postprocess_matches (matchesp, matching_filenames)
|
||||
if (rl_ignore_completion_duplicates)
|
||||
{
|
||||
temp_matches = remove_duplicate_matches (matches);
|
||||
free (matches);
|
||||
xfree (matches);
|
||||
matches = temp_matches;
|
||||
}
|
||||
|
||||
@@ -1648,7 +1652,7 @@ insert_match (match, start, mtype, qc)
|
||||
else
|
||||
_rl_replace_text (replacement, start, end);
|
||||
if (replacement != match)
|
||||
free (replacement);
|
||||
xfree (replacement);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1715,7 +1719,7 @@ append_to_match (text, delimiter, quote_char, nontrivial_match)
|
||||
if (rl_point == rl_end && temp_string_index)
|
||||
rl_insert_text (temp_string);
|
||||
}
|
||||
free (filename);
|
||||
xfree (filename);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1751,7 +1755,7 @@ insert_all_matches (matches, point, qc)
|
||||
rl_insert_text (rp);
|
||||
rl_insert_text (" ");
|
||||
if (rp != matches[i])
|
||||
free (rp);
|
||||
xfree (rp);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1760,7 +1764,7 @@ insert_all_matches (matches, point, qc)
|
||||
rl_insert_text (rp);
|
||||
rl_insert_text (" ");
|
||||
if (rp != matches[0])
|
||||
free (rp);
|
||||
xfree (rp);
|
||||
}
|
||||
rl_end_undo_group ();
|
||||
}
|
||||
@@ -1775,8 +1779,8 @@ _rl_free_match_list (matches)
|
||||
return;
|
||||
|
||||
for (i = 0; matches[i]; i++)
|
||||
free (matches[i]);
|
||||
free (matches);
|
||||
xfree (matches[i]);
|
||||
xfree (matches);
|
||||
}
|
||||
|
||||
/* Complete the word at or before point.
|
||||
@@ -1831,7 +1835,7 @@ rl_complete_internal (what_to_do)
|
||||
if (what_to_do == '!' || what_to_do == '@')
|
||||
tlen = strlen (text);
|
||||
#endif
|
||||
free (text);
|
||||
xfree (text);
|
||||
|
||||
if (matches == 0)
|
||||
{
|
||||
@@ -1936,7 +1940,7 @@ rl_complete_internal (what_to_do)
|
||||
if (saved_line_buffer)
|
||||
{
|
||||
completion_changed_buffer = strcmp (rl_line_buffer, saved_line_buffer) != 0;
|
||||
free (saved_line_buffer);
|
||||
xfree (saved_line_buffer);
|
||||
}
|
||||
|
||||
RL_UNSETSTATE(RL_STATE_COMPLETING);
|
||||
@@ -2003,7 +2007,7 @@ rl_completion_matches (text, entry_function)
|
||||
compute_lcd_of_matches (match_list, matches, text);
|
||||
else /* There were no matches. */
|
||||
{
|
||||
free (match_list);
|
||||
xfree (match_list);
|
||||
match_list = (char **)NULL;
|
||||
}
|
||||
return (match_list);
|
||||
@@ -2092,8 +2096,8 @@ complete_fncmp (convfn, convlen, filename, filename_len)
|
||||
return 1;
|
||||
if (convlen < filename_len)
|
||||
return 0;
|
||||
s1 = convfn;
|
||||
s2 = filename;
|
||||
s1 = (char *)convfn;
|
||||
s2 = (char *)filename;
|
||||
len = filename_len;
|
||||
do
|
||||
{
|
||||
@@ -2197,7 +2201,7 @@ rl_filename_completion_function (text, state)
|
||||
if (*dirname == '~')
|
||||
{
|
||||
temp = tilde_expand (dirname);
|
||||
free (dirname);
|
||||
xfree (dirname);
|
||||
dirname = temp;
|
||||
}
|
||||
|
||||
@@ -2208,14 +2212,14 @@ rl_filename_completion_function (text, state)
|
||||
dequoting. */
|
||||
if (rl_directory_completion_hook && (*rl_directory_completion_hook) (&dirname))
|
||||
{
|
||||
free (users_dirname);
|
||||
xfree (users_dirname);
|
||||
users_dirname = savestring (dirname);
|
||||
}
|
||||
else if (rl_completion_found_quote && rl_filename_dequoting_function)
|
||||
{
|
||||
/* delete single and double quotes */
|
||||
temp = (*rl_filename_dequoting_function) (dirname, rl_completion_quote_character);
|
||||
free (dirname);
|
||||
xfree (dirname);
|
||||
dirname = temp;
|
||||
}
|
||||
directory = opendir (dirname);
|
||||
@@ -2225,7 +2229,7 @@ rl_filename_completion_function (text, state)
|
||||
{
|
||||
/* delete single and double quotes */
|
||||
temp = (*rl_filename_dequoting_function) (filename, rl_completion_quote_character);
|
||||
free (filename);
|
||||
xfree (filename);
|
||||
filename = temp;
|
||||
}
|
||||
filename_len = strlen (filename);
|
||||
@@ -2281,17 +2285,17 @@ rl_filename_completion_function (text, state)
|
||||
}
|
||||
if (dirname)
|
||||
{
|
||||
free (dirname);
|
||||
xfree (dirname);
|
||||
dirname = (char *)NULL;
|
||||
}
|
||||
if (filename)
|
||||
{
|
||||
free (filename);
|
||||
xfree (filename);
|
||||
filename = (char *)NULL;
|
||||
}
|
||||
if (users_dirname)
|
||||
{
|
||||
free (users_dirname);
|
||||
xfree (users_dirname);
|
||||
users_dirname = (char *)NULL;
|
||||
}
|
||||
|
||||
@@ -2331,7 +2335,7 @@ rl_filename_completion_function (text, state)
|
||||
temp = savestring (convfn);
|
||||
|
||||
if (convfn != dentry)
|
||||
free (convfn);
|
||||
xfree (convfn);
|
||||
|
||||
return (temp);
|
||||
}
|
||||
@@ -2481,7 +2485,7 @@ rl_menu_complete (count, ignore)
|
||||
static int full_completion = 0; /* set to 1 if menu completion should reinitialize on next call */
|
||||
static int orig_start, orig_end;
|
||||
static char quote_char;
|
||||
static int delimiter;
|
||||
static int delimiter, cstate;
|
||||
|
||||
/* The first time through, we generate the list of matches and set things
|
||||
up to insert them. */
|
||||
@@ -2589,6 +2593,11 @@ rl_menu_complete (count, ignore)
|
||||
full_completion = 1;
|
||||
return (0);
|
||||
}
|
||||
else if (_rl_menu_complete_prefix_first && match_list_size > 1)
|
||||
{
|
||||
rl_ding ();
|
||||
return (0);
|
||||
}
|
||||
}
|
||||
|
||||
/* Now we have the list of matches. Replace the text between
|
||||
|
||||
@@ -492,6 +492,11 @@ 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
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
.\" Case Western Reserve University
|
||||
.\" chet@ins.CWRU.Edu
|
||||
.\"
|
||||
.\" Last Change: Thu Apr 22 18:59:21 EDT 2010
|
||||
.\" Last Change: Sat Aug 28 18:56:32 EDT 2010
|
||||
.\"
|
||||
.TH READLINE 3 "2010 April 22" "GNU Readline 6.2"
|
||||
.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.
|
||||
@@ -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
|
||||
@@ -407,7 +407,7 @@ 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
|
||||
@@ -430,11 +430,11 @@ 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
|
||||
@@ -506,7 +506,7 @@ 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
|
||||
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.
|
||||
@@ -514,7 +514,7 @@ calls to \fBreadline\fP.
|
||||
.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
|
||||
@@ -522,7 +522,7 @@ 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
|
||||
@@ -582,7 +582,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
|
||||
@@ -962,7 +962,7 @@ through the list.
|
||||
This command is intended to be bound to \fBTAB\fP, but is unbound
|
||||
by default.
|
||||
.TP
|
||||
.B menu\-complete-\backward
|
||||
.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.
|
||||
@@ -1040,7 +1040,7 @@ 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 ()
|
||||
.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
|
||||
|
||||
@@ -591,6 +591,12 @@ 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
|
||||
|
||||
@@ -51,7 +51,7 @@ 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.
|
||||
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
|
||||
|
||||
@@ -4,7 +4,7 @@ Copyright (C) 1988-2010 Free Software Foundation, Inc.
|
||||
|
||||
@set EDITION 6.2
|
||||
@set VERSION 6.2
|
||||
@set UPDATED August 28 2010
|
||||
@set UPDATED-MONTH August 2010
|
||||
@set UPDATED September 6 2010
|
||||
@set UPDATED-MONTH September 2010
|
||||
|
||||
@set LASTCHANGE Sat Aug 28 18:57:07 EDT 2010
|
||||
@set LASTCHANGE Mon Sep 6 22:07:10 EDT 2010
|
||||
|
||||
@@ -4,7 +4,7 @@ Copyright (C) 1988-2010 Free Software Foundation, Inc.
|
||||
|
||||
@set EDITION 6.2
|
||||
@set VERSION 6.2
|
||||
@set UPDATED August 12 2010
|
||||
@set UPDATED August 28 2010
|
||||
@set UPDATED-MONTH August 2010
|
||||
|
||||
@set LASTCHANGE Thu Aug 12 22:24:28 EDT 2010
|
||||
@set LASTCHANGE Sat Aug 28 18:57:07 EDT 2010
|
||||
|
||||
+13
-16
@@ -105,6 +105,7 @@ _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;
|
||||
@@ -338,10 +339,9 @@ _rl_isearch_dispatch (cxt, c)
|
||||
return -1;
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* 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 */
|
||||
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);
|
||||
@@ -350,7 +350,6 @@ _rl_isearch_dispatch (cxt, c)
|
||||
something useful if this doesn't end up mapping to a command. */
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Translate the keys we do something with to opcodes. */
|
||||
if (c >= 0 && cxt->keymap[c].type == ISFUNC)
|
||||
@@ -363,14 +362,22 @@ _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
|
||||
@@ -415,16 +422,6 @@ _rl_isearch_dispatch (cxt, c)
|
||||
return (0);
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* 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 = _rl_keymap;
|
||||
cxt->sflags &= ~SF_CHGKMAP;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Now dispatch on the character. `Opcodes' affect the search string or
|
||||
state. Other characters are added to the string. */
|
||||
switch (cxt->lastc)
|
||||
|
||||
+13
-16
@@ -105,6 +105,7 @@ _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;
|
||||
@@ -338,19 +339,17 @@ _rl_isearch_dispatch (cxt, c)
|
||||
return -1;
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* If we are moving into a new keymap, modify cxt->keymap and go on */
|
||||
/* 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.
|
||||
This can be a problem if c == ESC and we want to terminate
|
||||
the incremental search */
|
||||
something useful if this doesn't end up mapping to a command. */
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Translate the keys we do something with to opcodes. */
|
||||
if (c >= 0 && cxt->keymap[c].type == ISFUNC)
|
||||
@@ -371,6 +370,14 @@ _rl_isearch_dispatch (cxt, c)
|
||||
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
|
||||
@@ -415,16 +422,6 @@ _rl_isearch_dispatch (cxt, c)
|
||||
return (0);
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* 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 = _rl_keymap;
|
||||
cxt->sflags &= ~SF_CHGKMAP;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Now dispatch on the character. `Opcodes' affect the search string or
|
||||
state. Other characters are added to the string. */
|
||||
switch (cxt->lastc)
|
||||
|
||||
@@ -81,6 +81,7 @@ 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;
|
||||
@@ -417,6 +418,7 @@ 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;
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
#define SF_REVERSE 0x01
|
||||
#define SF_FOUND 0x02
|
||||
#define SF_FAILED 0x04
|
||||
#define SF_CHGKMAP 0x08
|
||||
|
||||
typedef struct __rl_search_context
|
||||
{
|
||||
@@ -80,6 +81,7 @@ 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;
|
||||
|
||||
@@ -526,21 +526,20 @@ main (argc, argv, env)
|
||||
else
|
||||
init_noninteractive ();
|
||||
|
||||
#define CLOSE_FDS_AT_LOGIN
|
||||
#if defined (CLOSE_FDS_AT_LOGIN)
|
||||
/*
|
||||
* Some systems have the bad habit of starting login shells with lots of open
|
||||
* file descriptors. For instance, most systems that have picked up the
|
||||
* pre-4.0 Sun YP code leave a file descriptor open each time you call one
|
||||
* of the getpw* functions, and it's set to be open across execs. That
|
||||
* means one for login, one for xterm, one for shelltool, etc.
|
||||
* means one for login, one for xterm, one for shelltool, etc. There are
|
||||
* also systems that open persistent FDs to other agents or files as part
|
||||
* of process startup; these need to be set to be close-on-exec.
|
||||
*/
|
||||
if (login_shell && interactive_shell)
|
||||
{
|
||||
for (i = 3; i < 20; i++)
|
||||
close (i);
|
||||
SET_CLOSE_ON_EXEC (i);
|
||||
}
|
||||
#endif /* CLOSE_FDS_AT_LOGIN */
|
||||
|
||||
/* If we're in a strict Posix.2 mode, turn on interactive comments,
|
||||
alias expansion in non-interactive shells, and other Posix.2 things. */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* shell.c -- GNU's idea of the POSIX shell specification. */
|
||||
|
||||
/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1987-2010 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Bash, the Bourne Again SHell.
|
||||
|
||||
|
||||
@@ -1692,7 +1692,7 @@ skip_to_delim (string, start, delims, flags)
|
||||
{
|
||||
int i, pass_next, backq, si, c, invert, skipquote, skipcmd;
|
||||
size_t slen;
|
||||
char *temp;
|
||||
char *temp, open[3];
|
||||
DECLARE_MBSTATE;
|
||||
|
||||
slen = strlen (string + start) + start;
|
||||
@@ -1775,6 +1775,25 @@ skip_to_delim (string, start, delims, flags)
|
||||
continue;
|
||||
}
|
||||
#endif /* PROCESS_SUBSTITUTION */
|
||||
#if defined (EXTENDED_GLOB)
|
||||
else if ((flags & SD_EXTGLOB) && extended_glob && string[i+1] == LPAREN && member (c, "?*+!@"))
|
||||
{
|
||||
si = i + 2;
|
||||
if (string[si] == '\0')
|
||||
CQ_RETURN(si);
|
||||
|
||||
open[0] = c;
|
||||
open[1] = LPAREN;
|
||||
open[2] = '\0';
|
||||
temp = extract_delimited_string (string, &si, open, "(", ")", SX_NOALLOC); /* ) */
|
||||
|
||||
i = si;
|
||||
if (string[i] == '\0') /* don't increment i past EOS in loop */
|
||||
break;
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
else if ((skipquote || invert) && (member (c, delims) == 0))
|
||||
break;
|
||||
else
|
||||
@@ -7430,6 +7449,7 @@ param_expand (string, sindex, quoted, expanded_something,
|
||||
/* $? -- return value of the last synchronous command. */
|
||||
case '?':
|
||||
temp = itos (last_command_exit_value);
|
||||
itrace("last_command_exit_value = %d", last_command_exit_value);
|
||||
break;
|
||||
|
||||
/* $- -- flags supplied to the shell on invocation or by `set'. */
|
||||
|
||||
+13
-5
@@ -192,26 +192,34 @@ initialize_signames ()
|
||||
#endif
|
||||
|
||||
/* SunOS5 */
|
||||
#if defined (SIGLWP) /* special signal used by thread library */
|
||||
#if defined (SIGLWP) /* Solaris: special signal used by thread library */
|
||||
signal_names[SIGLWP] = "SIGLWP";
|
||||
#endif
|
||||
|
||||
#if defined (SIGFREEZE) /* special signal used by CPR */
|
||||
#if defined (SIGFREEZE) /* Solaris: special signal used by CPR */
|
||||
signal_names[SIGFREEZE] = "SIGFREEZE";
|
||||
#endif
|
||||
|
||||
#if defined (SIGTHAW) /* special signal used by CPR */
|
||||
#if defined (SIGTHAW) /* Solaris: special signal used by CPR */
|
||||
signal_names[SIGTHAW] = "SIGTHAW";
|
||||
#endif
|
||||
|
||||
#if defined (SIGCANCEL) /* thread cancellation signal used by libthread */
|
||||
#if defined (SIGCANCEL) /* Solaris: thread cancellation signal used by libthread */
|
||||
signal_names[SIGCANCEL] = "SIGCANCEL";
|
||||
#endif
|
||||
|
||||
#if defined (SIGXRES) /* resource control exceeded */
|
||||
#if defined (SIGXRES) /* Solaris: resource control exceeded */
|
||||
signal_names[SIGXRES] = "SIGXRES";
|
||||
#endif
|
||||
|
||||
#if defined (SIGJVM1) /* Solaris: Java Virtual Machine 1 */
|
||||
signal_names[SIGJVM1] = "SIGJVM1";
|
||||
#endif
|
||||
|
||||
#if defined (SIGJVM2) /* Solaris: Java Virtual Machine 2 */
|
||||
signal_names[SIGJVM2] = "SIGJVM2";
|
||||
#endif
|
||||
|
||||
/* HP-UX */
|
||||
#if defined (SIGDIL) /* DIL signal (?) */
|
||||
signal_names[SIGDIL] = "SIGDIL";
|
||||
|
||||
@@ -0,0 +1,393 @@
|
||||
/* signames.c -- Create an array of signal names. */
|
||||
|
||||
/* Copyright (C) 2006 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/>.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <signal.h>
|
||||
|
||||
#if defined (HAVE_STDLIB_H)
|
||||
# include <stdlib.h>
|
||||
#else
|
||||
# include "ansi_stdlib.h"
|
||||
#endif /* HAVE_STDLIB_H */
|
||||
|
||||
#if !defined (NSIG)
|
||||
# define NSIG 64
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Special traps:
|
||||
* EXIT == 0
|
||||
* DEBUG == NSIG
|
||||
* ERR == NSIG+1
|
||||
* RETURN == NSIG+2
|
||||
*/
|
||||
#define LASTSIG NSIG+2
|
||||
|
||||
char *signal_names[2 * (LASTSIG)];
|
||||
|
||||
#define signal_names_size (sizeof(signal_names)/sizeof(signal_names[0]))
|
||||
|
||||
/* AIX 4.3 defines SIGRTMIN and SIGRTMAX as 888 and 999 respectively.
|
||||
I don't want to allocate so much unused space for the intervening signal
|
||||
numbers, so we just punt if SIGRTMAX is past the bounds of the
|
||||
signal_names array (handled in configure). */
|
||||
#if defined (SIGRTMAX) && defined (UNUSABLE_RT_SIGNALS)
|
||||
# undef SIGRTMAX
|
||||
# undef SIGRTMIN
|
||||
#endif
|
||||
|
||||
#if defined (SIGRTMAX) || defined (SIGRTMIN)
|
||||
# define RTLEN 14
|
||||
# define RTLIM 256
|
||||
#endif
|
||||
|
||||
#if defined (BUILDTOOL)
|
||||
extern char *progname;
|
||||
#endif
|
||||
|
||||
void
|
||||
initialize_signames ()
|
||||
{
|
||||
register int i;
|
||||
#if defined (SIGRTMAX) || defined (SIGRTMIN)
|
||||
int rtmin, rtmax, rtcnt;
|
||||
#endif
|
||||
|
||||
for (i = 1; i < signal_names_size; i++)
|
||||
signal_names[i] = (char *)NULL;
|
||||
|
||||
/* `signal' 0 is what we do on exit. */
|
||||
signal_names[0] = "EXIT";
|
||||
|
||||
/* Place signal names which can be aliases for more common signal
|
||||
names first. This allows (for example) SIGABRT to overwrite SIGLOST. */
|
||||
|
||||
/* POSIX 1003.1b-1993 real time signals, but take care of incomplete
|
||||
implementations. Acoording to the standard, both, SIGRTMIN and
|
||||
SIGRTMAX must be defined, SIGRTMIN must be stricly less than
|
||||
SIGRTMAX, and the difference must be at least 7, that is, there
|
||||
must be at least eight distinct real time signals. */
|
||||
|
||||
/* The generated signal names are SIGRTMIN, SIGRTMIN+1, ...,
|
||||
SIGRTMIN+x, SIGRTMAX-x, ..., SIGRTMAX-1, SIGRTMAX. If the number
|
||||
of RT signals is odd, there is an extra SIGRTMIN+(x+1).
|
||||
These names are the ones used by ksh and /usr/xpg4/bin/sh on SunOS5. */
|
||||
|
||||
#if defined (SIGRTMIN)
|
||||
rtmin = SIGRTMIN;
|
||||
signal_names[rtmin] = "SIGRTMIN";
|
||||
#endif
|
||||
|
||||
#if defined (SIGRTMAX)
|
||||
rtmax = SIGRTMAX;
|
||||
signal_names[rtmax] = "SIGRTMAX";
|
||||
#endif
|
||||
|
||||
#if defined (SIGRTMAX) && defined (SIGRTMIN)
|
||||
if (rtmax > rtmin)
|
||||
{
|
||||
rtcnt = (rtmax - rtmin - 1) / 2;
|
||||
/* croak if there are too many RT signals */
|
||||
if (rtcnt >= RTLIM/2)
|
||||
{
|
||||
rtcnt = RTLIM/2-1;
|
||||
#ifdef BUILDTOOL
|
||||
fprintf(stderr, "%s: error: more than %d real time signals, fix `%s'\n",
|
||||
progname, RTLIM, progname);
|
||||
#endif
|
||||
}
|
||||
|
||||
for (i = 1; i <= rtcnt; i++)
|
||||
{
|
||||
signal_names[rtmin+i] = (char *)malloc(RTLEN);
|
||||
if (signal_names[rtmin+i])
|
||||
sprintf (signal_names[rtmin+i], "SIGRTMIN+%d", i);
|
||||
signal_names[rtmax-i] = (char *)malloc(RTLEN);
|
||||
if (signal_names[rtmax-i])
|
||||
sprintf (signal_names[rtmax-i], "SIGRTMAX-%d", i);
|
||||
}
|
||||
|
||||
if (rtcnt < RTLIM/2-1 && rtcnt != (rtmax-rtmin)/2)
|
||||
{
|
||||
/* Need an extra RTMIN signal */
|
||||
signal_names[rtmin+rtcnt+1] = (char *)malloc(RTLEN);
|
||||
if (signal_names[rtmin+rtcnt+1])
|
||||
sprintf (signal_names[rtmin+rtcnt+1], "SIGRTMIN+%d", rtcnt+1);
|
||||
}
|
||||
}
|
||||
#endif /* SIGRTMIN && SIGRTMAX */
|
||||
|
||||
#if defined (SIGLOST) /* resource lost (eg, record-lock lost) */
|
||||
signal_names[SIGLOST] = "SIGLOST";
|
||||
#endif
|
||||
|
||||
/* AIX */
|
||||
#if defined (SIGMSG) /* HFT input data pending */
|
||||
signal_names[SIGMSG] = "SIGMSG";
|
||||
#endif
|
||||
|
||||
#if defined (SIGDANGER) /* system crash imminent */
|
||||
signal_names[SIGDANGER] = "SIGDANGER";
|
||||
#endif
|
||||
|
||||
#if defined (SIGMIGRATE) /* migrate process to another CPU */
|
||||
signal_names[SIGMIGRATE] = "SIGMIGRATE";
|
||||
#endif
|
||||
|
||||
#if defined (SIGPRE) /* programming error */
|
||||
signal_names[SIGPRE] = "SIGPRE";
|
||||
#endif
|
||||
|
||||
#if defined (SIGVIRT) /* AIX virtual time alarm */
|
||||
signal_names[SIGVIRT] = "SIGVIRT";
|
||||
#endif
|
||||
|
||||
#if defined (SIGALRM1) /* m:n condition variables */
|
||||
signal_names[SIGALRM1] = "SIGALRM1";
|
||||
#endif
|
||||
|
||||
#if defined (SIGWAITING) /* m:n scheduling */
|
||||
signal_names[SIGWAITING] = "SIGWAITING";
|
||||
#endif
|
||||
|
||||
#if defined (SIGGRANT) /* HFT monitor mode granted */
|
||||
signal_names[SIGGRANT] = "SIGGRANT";
|
||||
#endif
|
||||
|
||||
#if defined (SIGKAP) /* keep alive poll from native keyboard */
|
||||
signal_names[SIGKAP] = "SIGKAP";
|
||||
#endif
|
||||
|
||||
#if defined (SIGRETRACT) /* HFT monitor mode retracted */
|
||||
signal_names[SIGRETRACT] = "SIGRETRACT";
|
||||
#endif
|
||||
|
||||
#if defined (SIGSOUND) /* HFT sound sequence has completed */
|
||||
signal_names[SIGSOUND] = "SIGSOUND";
|
||||
#endif
|
||||
|
||||
#if defined (SIGSAK) /* Secure Attention Key */
|
||||
signal_names[SIGSAK] = "SIGSAK";
|
||||
#endif
|
||||
|
||||
/* SunOS5 */
|
||||
#if defined (SIGLWP) /* special signal used by thread library */
|
||||
signal_names[SIGLWP] = "SIGLWP";
|
||||
#endif
|
||||
|
||||
#if defined (SIGFREEZE) /* special signal used by CPR */
|
||||
signal_names[SIGFREEZE] = "SIGFREEZE";
|
||||
#endif
|
||||
|
||||
#if defined (SIGTHAW) /* special signal used by CPR */
|
||||
signal_names[SIGTHAW] = "SIGTHAW";
|
||||
#endif
|
||||
|
||||
#if defined (SIGCANCEL) /* thread cancellation signal used by libthread */
|
||||
signal_names[SIGCANCEL] = "SIGCANCEL";
|
||||
#endif
|
||||
|
||||
#if defined (SIGXRES) /* resource control exceeded */
|
||||
signal_names[SIGXRES] = "SIGXRES";
|
||||
#endif
|
||||
|
||||
/* HP-UX */
|
||||
#if defined (SIGDIL) /* DIL signal (?) */
|
||||
signal_names[SIGDIL] = "SIGDIL";
|
||||
#endif
|
||||
|
||||
/* System V */
|
||||
#if defined (SIGCLD) /* Like SIGCHLD. */
|
||||
signal_names[SIGCLD] = "SIGCLD";
|
||||
#endif
|
||||
|
||||
#if defined (SIGPWR) /* power state indication */
|
||||
signal_names[SIGPWR] = "SIGPWR";
|
||||
#endif
|
||||
|
||||
#if defined (SIGPOLL) /* Pollable event (for streams) */
|
||||
signal_names[SIGPOLL] = "SIGPOLL";
|
||||
#endif
|
||||
|
||||
/* Unknown */
|
||||
#if defined (SIGWINDOW)
|
||||
signal_names[SIGWINDOW] = "SIGWINDOW";
|
||||
#endif
|
||||
|
||||
/* Linux */
|
||||
#if defined (SIGSTKFLT)
|
||||
signal_names[SIGSTKFLT] = "SIGSTKFLT";
|
||||
#endif
|
||||
|
||||
/* FreeBSD */
|
||||
#if defined (SIGTHR) /* thread interrupt */
|
||||
signal_names[SIGTHR] = "SIGTHR";
|
||||
#endif
|
||||
|
||||
/* Common */
|
||||
#if defined (SIGHUP) /* hangup */
|
||||
signal_names[SIGHUP] = "SIGHUP";
|
||||
#endif
|
||||
|
||||
#if defined (SIGINT) /* interrupt */
|
||||
signal_names[SIGINT] = "SIGINT";
|
||||
#endif
|
||||
|
||||
#if defined (SIGQUIT) /* quit */
|
||||
signal_names[SIGQUIT] = "SIGQUIT";
|
||||
#endif
|
||||
|
||||
#if defined (SIGILL) /* illegal instruction (not reset when caught) */
|
||||
signal_names[SIGILL] = "SIGILL";
|
||||
#endif
|
||||
|
||||
#if defined (SIGTRAP) /* trace trap (not reset when caught) */
|
||||
signal_names[SIGTRAP] = "SIGTRAP";
|
||||
#endif
|
||||
|
||||
#if defined (SIGIOT) /* IOT instruction */
|
||||
signal_names[SIGIOT] = "SIGIOT";
|
||||
#endif
|
||||
|
||||
#if defined (SIGABRT) /* Cause current process to dump core. */
|
||||
signal_names[SIGABRT] = "SIGABRT";
|
||||
#endif
|
||||
|
||||
#if defined (SIGEMT) /* EMT instruction */
|
||||
signal_names[SIGEMT] = "SIGEMT";
|
||||
#endif
|
||||
|
||||
#if defined (SIGFPE) /* floating point exception */
|
||||
signal_names[SIGFPE] = "SIGFPE";
|
||||
#endif
|
||||
|
||||
#if defined (SIGKILL) /* kill (cannot be caught or ignored) */
|
||||
signal_names[SIGKILL] = "SIGKILL";
|
||||
#endif
|
||||
|
||||
#if defined (SIGBUS) /* bus error */
|
||||
signal_names[SIGBUS] = "SIGBUS";
|
||||
#endif
|
||||
|
||||
#if defined (SIGSEGV) /* segmentation violation */
|
||||
signal_names[SIGSEGV] = "SIGSEGV";
|
||||
#endif
|
||||
|
||||
#if defined (SIGSYS) /* bad argument to system call */
|
||||
signal_names[SIGSYS] = "SIGSYS";
|
||||
#endif
|
||||
|
||||
#if defined (SIGPIPE) /* write on a pipe with no one to read it */
|
||||
signal_names[SIGPIPE] = "SIGPIPE";
|
||||
#endif
|
||||
|
||||
#if defined (SIGALRM) /* alarm clock */
|
||||
signal_names[SIGALRM] = "SIGALRM";
|
||||
#endif
|
||||
|
||||
#if defined (SIGTERM) /* software termination signal from kill */
|
||||
signal_names[SIGTERM] = "SIGTERM";
|
||||
#endif
|
||||
|
||||
#if defined (SIGURG) /* urgent condition on IO channel */
|
||||
signal_names[SIGURG] = "SIGURG";
|
||||
#endif
|
||||
|
||||
#if defined (SIGSTOP) /* sendable stop signal not from tty */
|
||||
signal_names[SIGSTOP] = "SIGSTOP";
|
||||
#endif
|
||||
|
||||
#if defined (SIGTSTP) /* stop signal from tty */
|
||||
signal_names[SIGTSTP] = "SIGTSTP";
|
||||
#endif
|
||||
|
||||
#if defined (SIGCONT) /* continue a stopped process */
|
||||
signal_names[SIGCONT] = "SIGCONT";
|
||||
#endif
|
||||
|
||||
#if defined (SIGCHLD) /* to parent on child stop or exit */
|
||||
signal_names[SIGCHLD] = "SIGCHLD";
|
||||
#endif
|
||||
|
||||
#if defined (SIGTTIN) /* to readers pgrp upon background tty read */
|
||||
signal_names[SIGTTIN] = "SIGTTIN";
|
||||
#endif
|
||||
|
||||
#if defined (SIGTTOU) /* like TTIN for output if (tp->t_local<OSTOP) */
|
||||
signal_names[SIGTTOU] = "SIGTTOU";
|
||||
#endif
|
||||
|
||||
#if defined (SIGIO) /* input/output possible signal */
|
||||
signal_names[SIGIO] = "SIGIO";
|
||||
#endif
|
||||
|
||||
#if defined (SIGXCPU) /* exceeded CPU time limit */
|
||||
signal_names[SIGXCPU] = "SIGXCPU";
|
||||
#endif
|
||||
|
||||
#if defined (SIGXFSZ) /* exceeded file size limit */
|
||||
signal_names[SIGXFSZ] = "SIGXFSZ";
|
||||
#endif
|
||||
|
||||
#if defined (SIGVTALRM) /* virtual time alarm */
|
||||
signal_names[SIGVTALRM] = "SIGVTALRM";
|
||||
#endif
|
||||
|
||||
#if defined (SIGPROF) /* profiling time alarm */
|
||||
signal_names[SIGPROF] = "SIGPROF";
|
||||
#endif
|
||||
|
||||
#if defined (SIGWINCH) /* window changed */
|
||||
signal_names[SIGWINCH] = "SIGWINCH";
|
||||
#endif
|
||||
|
||||
/* 4.4 BSD */
|
||||
#if defined (SIGINFO) && !defined (_SEQUENT_) /* information request */
|
||||
signal_names[SIGINFO] = "SIGINFO";
|
||||
#endif
|
||||
|
||||
#if defined (SIGUSR1) /* user defined signal 1 */
|
||||
signal_names[SIGUSR1] = "SIGUSR1";
|
||||
#endif
|
||||
|
||||
#if defined (SIGUSR2) /* user defined signal 2 */
|
||||
signal_names[SIGUSR2] = "SIGUSR2";
|
||||
#endif
|
||||
|
||||
#if defined (SIGKILLTHR) /* BeOS: Kill Thread */
|
||||
signal_names[SIGKILLTHR] = "SIGKILLTHR";
|
||||
#endif
|
||||
|
||||
for (i = 0; i < NSIG; i++)
|
||||
if (signal_names[i] == (char *)NULL)
|
||||
{
|
||||
signal_names[i] = (char *)malloc (18);
|
||||
if (signal_names[i])
|
||||
sprintf (signal_names[i], "SIGJUNK(%d)", i);
|
||||
}
|
||||
|
||||
signal_names[NSIG] = "DEBUG";
|
||||
signal_names[NSIG+1] = "ERR";
|
||||
signal_names[NSIG+2] = "RETURN";
|
||||
}
|
||||
Reference in New Issue
Block a user