fix for incomplete multibyte characters in pasted input; fix for syntax errors while entering compound assignments; fix for jobs not removing jobs from the list in a SIGCHLD trap; fix for PS0 that contains a command substitution after interactive shell reads EOF; fix for non-interactive shell reading from stdin and evaling a command that dups stdin

This commit is contained in:
Chet Ramey
2023-05-04 11:19:43 -04:00
parent 23935dbe85
commit 896df2874a
16 changed files with 465 additions and 300 deletions
+65
View File
@@ -6191,4 +6191,69 @@ bashline.c
lib/readline/histexpand.c
- history_expand: don't read past the end of the string if it ends with
an incomplete multibyte character
From a report by Grisha Levit <grishalevit@gmail.com>
5/1
---
lib/readline/text.c
- _rl_insert_char: make sure to return 1 in all cases where there are
pending bytes accumulating for a multibyte character
- _rl_insert_char: if the COUNT argument is 0, insert any pending
bytes read so far. The idea is that these bytes were accumulating
to compose a possible multibyte character, and the count of 0
indicates that the current character doesn't contribute to that
because it's bound to an editing command.
- rl_insert, rl_quoted_insert: make sure to call _rl_insert_char
with a 0 count as appropriate to insert any accumulating bytes
From a patch by Grisha Levit <grishalevit@gmail.com>
sig.c
- top_level_cleanup,throw_to_top_level: set variable_context to 0, just
to make sure
execute_cmd.c
- function_misc_cleanup: new function, runs make_funcname_visible and
unlink_fifo_list at the end of execute_function, replaces inline
code
- uw_function_misc_cleanup: unwind-protect function, just calls
function_misc_cleanup. Installed by execute_function.
Partial fix for FUNCNAME bug reported by Grisha Levit <grishalevit@gmail.com>
- execute_builtin: run unwind-protects if evalnest exeeds max
- execute_builtin: run unwind-protects if sourcenest exeeds max
parse.y
- parse_string_to_word_list: set current_token = '\n' on error
- parse_string_to_word_list: if we're executing and not running in
parse_and_execute, call top_level_cleanup before we jump to the
top level. Rest of fix for FUNCNAME bug
- parse_compound_assignment: set last_read_token and current_token to
'\n' on parse error. Fix for alias expansion bug reported by
Grisha Levit <grishalevit@gmail.com>
- parse_compound_assignment: if we're executing and not running in
parse_and_execute, call top_level_cleanup before we jump to the
top level
5/2
---
jobs.c
- run_sigchld_trap: don't freeze and unfreeze the jobs list; move it
to the callers who are running this on SIGCHLD receipt and cannot
deal with jobs disappearing from the list while they're running
- waitchld: if we are running the wait builtin, continue to run the
SIGCHLD trap immediately upon signal receipt, but freeze and
unfreeze the jobs list around the call to run_sigchld_trap().
Fixes issue with `jobs' in a SIGCHLD trap not removing jobs from
the jobs list reported by Guldrelokk <me@rarity.fan>
5/4
---
input.c
- fd_to_buffered_stream: make sure buffers[fd2] is non-null before
turning on SHAREDBUF.
From Emanuele Torre <torreemanuele6@gmail.com>
eval.c
- reader_loop: save and restore EOF_Reached around expanding $PS0,
setting it to 0 for the expansion so it doesn't affect things like
command substitution.
From a report by Grisha Levit <grishalevit@gmail.com>
+5 -3
View File
@@ -1205,9 +1205,11 @@ PPAARRAAMMEETTEERRSS
_m_t_i_m_e, _a_t_i_m_e, _c_t_i_m_e, and _b_l_o_c_k_s, which sort the files on name,
file size, modification time, access time, inode change time,
and number of blocks, respectively. For example, a value of
--mmttiimmee sorts the results in descending order by modification
time (newest first). If the sort specifier is missing, it de-
faults to _n_a_m_e, so a value of _+ is equivalent to the null
_-_m_t_i_m_e sorts the results in descending order by modification
time (newest first). A sort specifier of _n_o_s_o_r_t disables sort-
ing completely; the results are returned in the order they are
read from the file system,. If the sort specifier is missing,
it defaults to _n_a_m_e, so a value of _+ is equivalent to the null
string, and a value of _- sorts by name in descending order. Any
invalid value restores the historical sorting behavior.
HHIISSTTCCOONNTTRROOLL
+129 -125
View File
@@ -5581,6 +5581,10 @@ Variables::).
For example, a value of '-mtime' sorts the results in descending
order by modification time (newest first).
A sort specifier of 'nosort' disables sorting completely; the
results are returned in the order they are read from the file
system,.
If the sort specifier is missing, it defaults to NAME, so a value
of '+' is equivalent to the null string, and a value of '-' sorts
by name in descending order.
@@ -12194,57 +12198,57 @@ D.3 Parameter and Variable Index
* FUNCNEST: Bash Variables. (line 343)
* GLOBIGNORE: Bash Variables. (line 348)
* GLOBSORT: Bash Variables. (line 355)
* GROUPS: Bash Variables. (line 377)
* histchars: Bash Variables. (line 383)
* HISTCMD: Bash Variables. (line 398)
* HISTCONTROL: Bash Variables. (line 404)
* HISTFILE: Bash Variables. (line 420)
* HISTFILESIZE: Bash Variables. (line 424)
* HISTIGNORE: Bash Variables. (line 435)
* GROUPS: Bash Variables. (line 381)
* histchars: Bash Variables. (line 387)
* HISTCMD: Bash Variables. (line 402)
* HISTCONTROL: Bash Variables. (line 408)
* HISTFILE: Bash Variables. (line 424)
* HISTFILESIZE: Bash Variables. (line 428)
* HISTIGNORE: Bash Variables. (line 439)
* history-preserve-point: Readline Init File Syntax.
(line 211)
* history-size: Readline Init File Syntax.
(line 217)
* HISTSIZE: Bash Variables. (line 455)
* HISTTIMEFORMAT: Bash Variables. (line 462)
* HISTSIZE: Bash Variables. (line 459)
* HISTTIMEFORMAT: Bash Variables. (line 466)
* HOME: Bourne Shell Variables.
(line 13)
* horizontal-scroll-mode: Readline Init File Syntax.
(line 226)
* HOSTFILE: Bash Variables. (line 470)
* HOSTNAME: Bash Variables. (line 481)
* HOSTTYPE: Bash Variables. (line 484)
* HOSTFILE: Bash Variables. (line 474)
* HOSTNAME: Bash Variables. (line 485)
* HOSTTYPE: Bash Variables. (line 488)
* IFS: Bourne Shell Variables.
(line 18)
* IGNOREEOF: Bash Variables. (line 487)
* IGNOREEOF: Bash Variables. (line 491)
* input-meta: Readline Init File Syntax.
(line 235)
* INPUTRC: Bash Variables. (line 497)
* INSIDE_EMACS: Bash Variables. (line 501)
* INPUTRC: Bash Variables. (line 501)
* INSIDE_EMACS: Bash Variables. (line 505)
* isearch-terminators: Readline Init File Syntax.
(line 245)
* keymap: Readline Init File Syntax.
(line 252)
* LANG: Creating Internationalized Scripts.
(line 51)
* LANG <1>: Bash Variables. (line 507)
* LC_ALL: Bash Variables. (line 511)
* LC_COLLATE: Bash Variables. (line 515)
* LC_CTYPE: Bash Variables. (line 522)
* LANG <1>: Bash Variables. (line 511)
* LC_ALL: Bash Variables. (line 515)
* LC_COLLATE: Bash Variables. (line 519)
* LC_CTYPE: Bash Variables. (line 526)
* LC_MESSAGES: Creating Internationalized Scripts.
(line 51)
* LC_MESSAGES <1>: Bash Variables. (line 527)
* LC_NUMERIC: Bash Variables. (line 531)
* LC_TIME: Bash Variables. (line 535)
* LINENO: Bash Variables. (line 539)
* LINES: Bash Variables. (line 544)
* MACHTYPE: Bash Variables. (line 550)
* LC_MESSAGES <1>: Bash Variables. (line 531)
* LC_NUMERIC: Bash Variables. (line 535)
* LC_TIME: Bash Variables. (line 539)
* LINENO: Bash Variables. (line 543)
* LINES: Bash Variables. (line 548)
* MACHTYPE: Bash Variables. (line 554)
* MAIL: Bourne Shell Variables.
(line 22)
* MAILCHECK: Bash Variables. (line 554)
* MAILCHECK: Bash Variables. (line 558)
* MAILPATH: Bourne Shell Variables.
(line 27)
* MAPFILE: Bash Variables. (line 562)
* MAPFILE: Bash Variables. (line 566)
* mark-modified-lines: Readline Init File Syntax.
(line 282)
* mark-symlinked-directories: Readline Init File Syntax.
@@ -12255,46 +12259,46 @@ D.3 Parameter and Variable Index
(line 299)
* meta-flag: Readline Init File Syntax.
(line 235)
* OLDPWD: Bash Variables. (line 566)
* OLDPWD: Bash Variables. (line 570)
* OPTARG: Bourne Shell Variables.
(line 34)
* OPTERR: Bash Variables. (line 569)
* OPTERR: Bash Variables. (line 573)
* OPTIND: Bourne Shell Variables.
(line 38)
* OSTYPE: Bash Variables. (line 573)
* OSTYPE: Bash Variables. (line 577)
* output-meta: Readline Init File Syntax.
(line 304)
* page-completions: Readline Init File Syntax.
(line 312)
* PATH: Bourne Shell Variables.
(line 42)
* PIPESTATUS: Bash Variables. (line 576)
* POSIXLY_CORRECT: Bash Variables. (line 581)
* PPID: Bash Variables. (line 591)
* PROMPT_COMMAND: Bash Variables. (line 595)
* PROMPT_DIRTRIM: Bash Variables. (line 601)
* PS0: Bash Variables. (line 607)
* PIPESTATUS: Bash Variables. (line 580)
* POSIXLY_CORRECT: Bash Variables. (line 585)
* PPID: Bash Variables. (line 595)
* PROMPT_COMMAND: Bash Variables. (line 599)
* PROMPT_DIRTRIM: Bash Variables. (line 605)
* PS0: Bash Variables. (line 611)
* PS1: Bourne Shell Variables.
(line 48)
* PS2: Bourne Shell Variables.
(line 53)
* PS3: Bash Variables. (line 612)
* PS4: Bash Variables. (line 617)
* PWD: Bash Variables. (line 625)
* RANDOM: Bash Variables. (line 628)
* READLINE_ARGUMENT: Bash Variables. (line 634)
* READLINE_LINE: Bash Variables. (line 638)
* READLINE_MARK: Bash Variables. (line 642)
* READLINE_POINT: Bash Variables. (line 648)
* REPLY: Bash Variables. (line 652)
* PS3: Bash Variables. (line 616)
* PS4: Bash Variables. (line 621)
* PWD: Bash Variables. (line 629)
* RANDOM: Bash Variables. (line 632)
* READLINE_ARGUMENT: Bash Variables. (line 638)
* READLINE_LINE: Bash Variables. (line 642)
* READLINE_MARK: Bash Variables. (line 646)
* READLINE_POINT: Bash Variables. (line 652)
* REPLY: Bash Variables. (line 656)
* revert-all-at-newline: Readline Init File Syntax.
(line 322)
* search-ignore-case: Readline Init File Syntax.
(line 329)
* SECONDS: Bash Variables. (line 655)
* SHELL: Bash Variables. (line 664)
* SHELLOPTS: Bash Variables. (line 669)
* SHLVL: Bash Variables. (line 678)
* SECONDS: Bash Variables. (line 659)
* SHELL: Bash Variables. (line 668)
* SHELLOPTS: Bash Variables. (line 673)
* SHLVL: Bash Variables. (line 682)
* show-all-if-ambiguous: Readline Init File Syntax.
(line 334)
* show-all-if-unmodified: Readline Init File Syntax.
@@ -12303,15 +12307,15 @@ D.3 Parameter and Variable Index
(line 349)
* skip-completed-text: Readline Init File Syntax.
(line 355)
* SRANDOM: Bash Variables. (line 683)
* SRANDOM: Bash Variables. (line 687)
* TEXTDOMAIN: Creating Internationalized Scripts.
(line 51)
* TEXTDOMAINDIR: Creating Internationalized Scripts.
(line 51)
* TIMEFORMAT: Bash Variables. (line 692)
* TMOUT: Bash Variables. (line 730)
* TMPDIR: Bash Variables. (line 742)
* UID: Bash Variables. (line 746)
* TIMEFORMAT: Bash Variables. (line 696)
* TMOUT: Bash Variables. (line 734)
* TMPDIR: Bash Variables. (line 746)
* UID: Bash Variables. (line 750)
* vi-cmd-mode-string: Readline Init File Syntax.
(line 368)
* vi-ins-mode-string: Readline Init File Syntax.
@@ -12763,77 +12767,77 @@ Node: Special Builtins220857
Node: Shell Variables221833
Node: Bourne Shell Variables222267
Node: Bash Variables224368
Node: Bash Features258281
Node: Invoking Bash259291
Node: Bash Startup Files265301
Node: Interactive Shells270429
Node: What is an Interactive Shell?270837
Node: Is this Shell Interactive?271483
Node: Interactive Shell Behavior272295
Node: Bash Conditional Expressions275921
Node: Shell Arithmetic280560
Node: Aliases283518
Node: Arrays286409
Node: The Directory Stack292969
Node: Directory Stack Builtins293750
Node: Controlling the Prompt298007
Node: The Restricted Shell300969
Node: Bash POSIX Mode303576
Node: Shell Compatibility Mode319366
Node: Job Control327607
Node: Job Control Basics328064
Node: Job Control Builtins333063
Node: Job Control Variables338855
Node: Command Line Editing340008
Node: Introduction and Notation341676
Node: Readline Interaction343296
Node: Readline Bare Essentials344484
Node: Readline Movement Commands346270
Node: Readline Killing Commands347227
Node: Readline Arguments349145
Node: Searching350186
Node: Readline Init File352369
Node: Readline Init File Syntax353627
Node: Conditional Init Constructs377415
Node: Sample Init File381608
Node: Bindable Readline Commands384729
Node: Commands For Moving385930
Node: Commands For History387978
Node: Commands For Text392969
Node: Commands For Killing396615
Node: Numeric Arguments399645
Node: Commands For Completion400781
Node: Keyboard Macros404969
Node: Miscellaneous Commands405654
Node: Readline vi Mode411689
Node: Programmable Completion412593
Node: Programmable Completion Builtins420370
Node: A Programmable Completion Example431355
Node: Using History Interactively436600
Node: Bash History Facilities437281
Node: Bash History Builtins440283
Node: History Interaction445304
Node: Event Designators448921
Node: Word Designators450272
Node: Modifiers452029
Node: Installing Bash453834
Node: Basic Installation454968
Node: Compilers and Options458687
Node: Compiling For Multiple Architectures459425
Node: Installation Names461114
Node: Specifying the System Type463220
Node: Sharing Defaults463934
Node: Operation Controls464604
Node: Optional Features465559
Node: Reporting Bugs476775
Node: Major Differences From The Bourne Shell478106
Node: GNU Free Documentation License494952
Node: Indexes520126
Node: Builtin Index520577
Node: Reserved Word Index527401
Node: Variable Index529846
Node: Function Index546831
Node: Concept Index560612
Node: Bash Features258430
Node: Invoking Bash259440
Node: Bash Startup Files265450
Node: Interactive Shells270578
Node: What is an Interactive Shell?270986
Node: Is this Shell Interactive?271632
Node: Interactive Shell Behavior272444
Node: Bash Conditional Expressions276070
Node: Shell Arithmetic280709
Node: Aliases283667
Node: Arrays286558
Node: The Directory Stack293118
Node: Directory Stack Builtins293899
Node: Controlling the Prompt298156
Node: The Restricted Shell301118
Node: Bash POSIX Mode303725
Node: Shell Compatibility Mode319515
Node: Job Control327756
Node: Job Control Basics328213
Node: Job Control Builtins333212
Node: Job Control Variables339004
Node: Command Line Editing340157
Node: Introduction and Notation341825
Node: Readline Interaction343445
Node: Readline Bare Essentials344633
Node: Readline Movement Commands346419
Node: Readline Killing Commands347376
Node: Readline Arguments349294
Node: Searching350335
Node: Readline Init File352518
Node: Readline Init File Syntax353776
Node: Conditional Init Constructs377564
Node: Sample Init File381757
Node: Bindable Readline Commands384878
Node: Commands For Moving386079
Node: Commands For History388127
Node: Commands For Text393118
Node: Commands For Killing396764
Node: Numeric Arguments399794
Node: Commands For Completion400930
Node: Keyboard Macros405118
Node: Miscellaneous Commands405803
Node: Readline vi Mode411838
Node: Programmable Completion412742
Node: Programmable Completion Builtins420519
Node: A Programmable Completion Example431504
Node: Using History Interactively436749
Node: Bash History Facilities437430
Node: Bash History Builtins440432
Node: History Interaction445453
Node: Event Designators449070
Node: Word Designators450421
Node: Modifiers452178
Node: Installing Bash453983
Node: Basic Installation455117
Node: Compilers and Options458836
Node: Compiling For Multiple Architectures459574
Node: Installation Names461263
Node: Specifying the System Type463369
Node: Sharing Defaults464083
Node: Operation Controls464753
Node: Optional Features465708
Node: Reporting Bugs476924
Node: Major Differences From The Bourne Shell478255
Node: GNU Free Documentation License495101
Node: Indexes520275
Node: Builtin Index520726
Node: Reserved Word Index527550
Node: Variable Index529995
Node: Function Index546980
Node: Concept Index560761

End Tag Table
+129 -125
View File
@@ -5582,6 +5582,10 @@ Variables::).
For example, a value of '-mtime' sorts the results in descending
order by modification time (newest first).
A sort specifier of 'nosort' disables sorting completely; the
results are returned in the order they are read from the file
system,.
If the sort specifier is missing, it defaults to NAME, so a value
of '+' is equivalent to the null string, and a value of '-' sorts
by name in descending order.
@@ -12195,57 +12199,57 @@ D.3 Parameter and Variable Index
* FUNCNEST: Bash Variables. (line 343)
* GLOBIGNORE: Bash Variables. (line 348)
* GLOBSORT: Bash Variables. (line 355)
* GROUPS: Bash Variables. (line 377)
* histchars: Bash Variables. (line 383)
* HISTCMD: Bash Variables. (line 398)
* HISTCONTROL: Bash Variables. (line 404)
* HISTFILE: Bash Variables. (line 420)
* HISTFILESIZE: Bash Variables. (line 424)
* HISTIGNORE: Bash Variables. (line 435)
* GROUPS: Bash Variables. (line 381)
* histchars: Bash Variables. (line 387)
* HISTCMD: Bash Variables. (line 402)
* HISTCONTROL: Bash Variables. (line 408)
* HISTFILE: Bash Variables. (line 424)
* HISTFILESIZE: Bash Variables. (line 428)
* HISTIGNORE: Bash Variables. (line 439)
* history-preserve-point: Readline Init File Syntax.
(line 211)
* history-size: Readline Init File Syntax.
(line 217)
* HISTSIZE: Bash Variables. (line 455)
* HISTTIMEFORMAT: Bash Variables. (line 462)
* HISTSIZE: Bash Variables. (line 459)
* HISTTIMEFORMAT: Bash Variables. (line 466)
* HOME: Bourne Shell Variables.
(line 13)
* horizontal-scroll-mode: Readline Init File Syntax.
(line 226)
* HOSTFILE: Bash Variables. (line 470)
* HOSTNAME: Bash Variables. (line 481)
* HOSTTYPE: Bash Variables. (line 484)
* HOSTFILE: Bash Variables. (line 474)
* HOSTNAME: Bash Variables. (line 485)
* HOSTTYPE: Bash Variables. (line 488)
* IFS: Bourne Shell Variables.
(line 18)
* IGNOREEOF: Bash Variables. (line 487)
* IGNOREEOF: Bash Variables. (line 491)
* input-meta: Readline Init File Syntax.
(line 235)
* INPUTRC: Bash Variables. (line 497)
* INSIDE_EMACS: Bash Variables. (line 501)
* INPUTRC: Bash Variables. (line 501)
* INSIDE_EMACS: Bash Variables. (line 505)
* isearch-terminators: Readline Init File Syntax.
(line 245)
* keymap: Readline Init File Syntax.
(line 252)
* LANG: Creating Internationalized Scripts.
(line 51)
* LANG <1>: Bash Variables. (line 507)
* LC_ALL: Bash Variables. (line 511)
* LC_COLLATE: Bash Variables. (line 515)
* LC_CTYPE: Bash Variables. (line 522)
* LANG <1>: Bash Variables. (line 511)
* LC_ALL: Bash Variables. (line 515)
* LC_COLLATE: Bash Variables. (line 519)
* LC_CTYPE: Bash Variables. (line 526)
* LC_MESSAGES: Creating Internationalized Scripts.
(line 51)
* LC_MESSAGES <1>: Bash Variables. (line 527)
* LC_NUMERIC: Bash Variables. (line 531)
* LC_TIME: Bash Variables. (line 535)
* LINENO: Bash Variables. (line 539)
* LINES: Bash Variables. (line 544)
* MACHTYPE: Bash Variables. (line 550)
* LC_MESSAGES <1>: Bash Variables. (line 531)
* LC_NUMERIC: Bash Variables. (line 535)
* LC_TIME: Bash Variables. (line 539)
* LINENO: Bash Variables. (line 543)
* LINES: Bash Variables. (line 548)
* MACHTYPE: Bash Variables. (line 554)
* MAIL: Bourne Shell Variables.
(line 22)
* MAILCHECK: Bash Variables. (line 554)
* MAILCHECK: Bash Variables. (line 558)
* MAILPATH: Bourne Shell Variables.
(line 27)
* MAPFILE: Bash Variables. (line 562)
* MAPFILE: Bash Variables. (line 566)
* mark-modified-lines: Readline Init File Syntax.
(line 282)
* mark-symlinked-directories: Readline Init File Syntax.
@@ -12256,46 +12260,46 @@ D.3 Parameter and Variable Index
(line 299)
* meta-flag: Readline Init File Syntax.
(line 235)
* OLDPWD: Bash Variables. (line 566)
* OLDPWD: Bash Variables. (line 570)
* OPTARG: Bourne Shell Variables.
(line 34)
* OPTERR: Bash Variables. (line 569)
* OPTERR: Bash Variables. (line 573)
* OPTIND: Bourne Shell Variables.
(line 38)
* OSTYPE: Bash Variables. (line 573)
* OSTYPE: Bash Variables. (line 577)
* output-meta: Readline Init File Syntax.
(line 304)
* page-completions: Readline Init File Syntax.
(line 312)
* PATH: Bourne Shell Variables.
(line 42)
* PIPESTATUS: Bash Variables. (line 576)
* POSIXLY_CORRECT: Bash Variables. (line 581)
* PPID: Bash Variables. (line 591)
* PROMPT_COMMAND: Bash Variables. (line 595)
* PROMPT_DIRTRIM: Bash Variables. (line 601)
* PS0: Bash Variables. (line 607)
* PIPESTATUS: Bash Variables. (line 580)
* POSIXLY_CORRECT: Bash Variables. (line 585)
* PPID: Bash Variables. (line 595)
* PROMPT_COMMAND: Bash Variables. (line 599)
* PROMPT_DIRTRIM: Bash Variables. (line 605)
* PS0: Bash Variables. (line 611)
* PS1: Bourne Shell Variables.
(line 48)
* PS2: Bourne Shell Variables.
(line 53)
* PS3: Bash Variables. (line 612)
* PS4: Bash Variables. (line 617)
* PWD: Bash Variables. (line 625)
* RANDOM: Bash Variables. (line 628)
* READLINE_ARGUMENT: Bash Variables. (line 634)
* READLINE_LINE: Bash Variables. (line 638)
* READLINE_MARK: Bash Variables. (line 642)
* READLINE_POINT: Bash Variables. (line 648)
* REPLY: Bash Variables. (line 652)
* PS3: Bash Variables. (line 616)
* PS4: Bash Variables. (line 621)
* PWD: Bash Variables. (line 629)
* RANDOM: Bash Variables. (line 632)
* READLINE_ARGUMENT: Bash Variables. (line 638)
* READLINE_LINE: Bash Variables. (line 642)
* READLINE_MARK: Bash Variables. (line 646)
* READLINE_POINT: Bash Variables. (line 652)
* REPLY: Bash Variables. (line 656)
* revert-all-at-newline: Readline Init File Syntax.
(line 322)
* search-ignore-case: Readline Init File Syntax.
(line 329)
* SECONDS: Bash Variables. (line 655)
* SHELL: Bash Variables. (line 664)
* SHELLOPTS: Bash Variables. (line 669)
* SHLVL: Bash Variables. (line 678)
* SECONDS: Bash Variables. (line 659)
* SHELL: Bash Variables. (line 668)
* SHELLOPTS: Bash Variables. (line 673)
* SHLVL: Bash Variables. (line 682)
* show-all-if-ambiguous: Readline Init File Syntax.
(line 334)
* show-all-if-unmodified: Readline Init File Syntax.
@@ -12304,15 +12308,15 @@ D.3 Parameter and Variable Index
(line 349)
* skip-completed-text: Readline Init File Syntax.
(line 355)
* SRANDOM: Bash Variables. (line 683)
* SRANDOM: Bash Variables. (line 687)
* TEXTDOMAIN: Creating Internationalized Scripts.
(line 51)
* TEXTDOMAINDIR: Creating Internationalized Scripts.
(line 51)
* TIMEFORMAT: Bash Variables. (line 692)
* TMOUT: Bash Variables. (line 730)
* TMPDIR: Bash Variables. (line 742)
* UID: Bash Variables. (line 746)
* TIMEFORMAT: Bash Variables. (line 696)
* TMOUT: Bash Variables. (line 734)
* TMPDIR: Bash Variables. (line 746)
* UID: Bash Variables. (line 750)
* vi-cmd-mode-string: Readline Init File Syntax.
(line 368)
* vi-ins-mode-string: Readline Init File Syntax.
@@ -12764,77 +12768,77 @@ Node: Special Builtins221031
Node: Shell Variables222010
Node: Bourne Shell Variables222447
Node: Bash Variables224551
Node: Bash Features258467
Node: Invoking Bash259480
Node: Bash Startup Files265493
Node: Interactive Shells270624
Node: What is an Interactive Shell?271035
Node: Is this Shell Interactive?271684
Node: Interactive Shell Behavior272499
Node: Bash Conditional Expressions276128
Node: Shell Arithmetic280770
Node: Aliases283731
Node: Arrays286625
Node: The Directory Stack293188
Node: Directory Stack Builtins293972
Node: Controlling the Prompt298232
Node: The Restricted Shell301197
Node: Bash POSIX Mode303807
Node: Shell Compatibility Mode319600
Node: Job Control327844
Node: Job Control Basics328304
Node: Job Control Builtins333306
Node: Job Control Variables339101
Node: Command Line Editing340257
Node: Introduction and Notation341928
Node: Readline Interaction343551
Node: Readline Bare Essentials344742
Node: Readline Movement Commands346531
Node: Readline Killing Commands347491
Node: Readline Arguments349412
Node: Searching350456
Node: Readline Init File352642
Node: Readline Init File Syntax353903
Node: Conditional Init Constructs377694
Node: Sample Init File381890
Node: Bindable Readline Commands385014
Node: Commands For Moving386218
Node: Commands For History388269
Node: Commands For Text393263
Node: Commands For Killing396912
Node: Numeric Arguments399945
Node: Commands For Completion401084
Node: Keyboard Macros405275
Node: Miscellaneous Commands405963
Node: Readline vi Mode412001
Node: Programmable Completion412908
Node: Programmable Completion Builtins420688
Node: A Programmable Completion Example431676
Node: Using History Interactively436924
Node: Bash History Facilities437608
Node: Bash History Builtins440613
Node: History Interaction445637
Node: Event Designators449257
Node: Word Designators450611
Node: Modifiers452371
Node: Installing Bash454179
Node: Basic Installation455316
Node: Compilers and Options459038
Node: Compiling For Multiple Architectures459779
Node: Installation Names461471
Node: Specifying the System Type463580
Node: Sharing Defaults464297
Node: Operation Controls464970
Node: Optional Features465928
Node: Reporting Bugs477147
Node: Major Differences From The Bourne Shell478481
Node: GNU Free Documentation License495330
Node: Indexes520507
Node: Builtin Index520961
Node: Reserved Word Index527788
Node: Variable Index530236
Node: Function Index547224
Node: Concept Index561008
Node: Bash Features258616
Node: Invoking Bash259629
Node: Bash Startup Files265642
Node: Interactive Shells270773
Node: What is an Interactive Shell?271184
Node: Is this Shell Interactive?271833
Node: Interactive Shell Behavior272648
Node: Bash Conditional Expressions276277
Node: Shell Arithmetic280919
Node: Aliases283880
Node: Arrays286774
Node: The Directory Stack293337
Node: Directory Stack Builtins294121
Node: Controlling the Prompt298381
Node: The Restricted Shell301346
Node: Bash POSIX Mode303956
Node: Shell Compatibility Mode319749
Node: Job Control327993
Node: Job Control Basics328453
Node: Job Control Builtins333455
Node: Job Control Variables339250
Node: Command Line Editing340406
Node: Introduction and Notation342077
Node: Readline Interaction343700
Node: Readline Bare Essentials344891
Node: Readline Movement Commands346680
Node: Readline Killing Commands347640
Node: Readline Arguments349561
Node: Searching350605
Node: Readline Init File352791
Node: Readline Init File Syntax354052
Node: Conditional Init Constructs377843
Node: Sample Init File382039
Node: Bindable Readline Commands385163
Node: Commands For Moving386367
Node: Commands For History388418
Node: Commands For Text393412
Node: Commands For Killing397061
Node: Numeric Arguments400094
Node: Commands For Completion401233
Node: Keyboard Macros405424
Node: Miscellaneous Commands406112
Node: Readline vi Mode412150
Node: Programmable Completion413057
Node: Programmable Completion Builtins420837
Node: A Programmable Completion Example431825
Node: Using History Interactively437073
Node: Bash History Facilities437757
Node: Bash History Builtins440762
Node: History Interaction445786
Node: Event Designators449406
Node: Word Designators450760
Node: Modifiers452520
Node: Installing Bash454328
Node: Basic Installation455465
Node: Compilers and Options459187
Node: Compiling For Multiple Architectures459928
Node: Installation Names461620
Node: Specifying the System Type463729
Node: Sharing Defaults464446
Node: Operation Controls465119
Node: Optional Features466077
Node: Reporting Bugs477296
Node: Major Differences From The Bourne Shell478630
Node: GNU Free Documentation License495479
Node: Indexes520656
Node: Builtin Index521110
Node: Reserved Word Index527937
Node: Variable Index530385
Node: Function Index547373
Node: Concept Index561157

End Tag Table
+4
View File
@@ -153,7 +153,10 @@ reader_loop (void)
if (interactive && ps0_prompt)
{
char *ps0_string;
int old_eof;
old_eof = EOF_Reached;
EOF_Reached = 0;
ps0_string = decode_prompt_string (ps0_prompt);
if (ps0_string && *ps0_string)
{
@@ -161,6 +164,7 @@ reader_loop (void)
fflush (stderr);
}
free (ps0_string);
EOF_Reached = old_eof;
}
current_command_number++;
+25 -10
View File
@@ -4893,8 +4893,9 @@ execute_builtin (sh_builtin_func_t *builtin, WORD_LIST *words, int flags, int su
if (evalnest_max > 0 && evalnest >= evalnest_max)
{
internal_error (_("eval: maximum eval nesting level exceeded (%d)"), evalnest);
run_unwind_protects (); /* XXX */
evalnest = 0;
jump_to_top_level (DISCARD);
jump_to_top_level (DISCARD); /* XXX - cleanup? */
}
unwind_protect_int (evalnest);
/* The test for subshell == 0 above doesn't make a difference */
@@ -4905,8 +4906,9 @@ execute_builtin (sh_builtin_func_t *builtin, WORD_LIST *words, int flags, int su
if (sourcenest_max > 0 && sourcenest >= sourcenest_max)
{
internal_error (_("%s: maximum source nesting level exceeded (%d)"), this_command_name, sourcenest);
run_unwind_protects (); /* XXX */
sourcenest = 0;
jump_to_top_level (DISCARD);
jump_to_top_level (DISCARD); /* XXX - cleanup? */
}
unwind_protect_int (sourcenest);
/* The test for subshell == 0 above doesn't make a difference */
@@ -4992,6 +4994,24 @@ uw_restore_funcarray_state (void *fa)
}
#endif
static void
function_misc_cleanup (void)
{
if (variable_context == 0 || this_shell_function == 0)
{
make_funcname_visible (0);
#if defined (PROCESS_SUBSTITUTION)
unlink_fifo_list ();
#endif
}
}
static void
uw_function_misc_cleanup (void *ignore)
{
function_misc_cleanup ();
}
static int
execute_function (SHELL_VAR *var, WORD_LIST *words, int flags, struct fd_bitmap *fds_to_close, int async, int subshell)
{
@@ -5050,6 +5070,8 @@ execute_function (SHELL_VAR *var, WORD_LIST *words, int flags, struct fd_bitmap
local variables may cause the restore of a local declaration of
OPTIND to force a getopts state reset. */
add_unwind_protect (uw_maybe_restore_getopt_state, gs);
/* This also, because pop_context has to decrement variable_context */
add_unwind_protect (uw_function_misc_cleanup, NULL);
add_unwind_protect (pop_context, NULL);
unwind_protect_int (line_number);
unwind_protect_int (line_number_for_err_trap);
@@ -5235,14 +5257,7 @@ execute_function (SHELL_VAR *var, WORD_LIST *words, int flags, struct fd_bitmap
}
#endif
if (variable_context == 0 || this_shell_function == 0)
{
make_funcname_visible (0);
#if defined (PROCESS_SUBSTITUTION)
unlink_fifo_list ();
#endif
}
function_misc_cleanup ();
return (result);
}
+1 -1
View File
@@ -359,7 +359,7 @@ duplicate_buffered_stream (int fd1, int fd2)
buffers[fd2]->b_flag |= B_WASBASHINPUT;
}
if (fd_is_bash_input (fd1) || (buffers[fd1] && (buffers[fd1]->b_flag & B_SHAREDBUF)))
if (buffers[fd2] && (fd_is_bash_input (fd1) || (buffers[fd1] && (buffers[fd1]->b_flag & B_SHAREDBUF))))
buffers[fd2]->b_flag |= B_SHAREDBUF;
return (fd2);
+18 -3
View File
@@ -3900,7 +3900,13 @@ itrace("waitchld: waitpid returns %d block = %d children_exited = %d", pid, bloc
else if (running_trap)
queue_sigchld_trap (children_exited);
else if (this_shell_builtin == wait_builtin)
run_sigchld_trap (children_exited); /* XXX */
{
int o;
o = jobs_list_frozen;
jobs_list_frozen = 1;
run_sigchld_trap (children_exited); /* XXX */
jobs_list_frozen = o;
}
else
queue_sigchld_trap (children_exited);
}
@@ -4158,7 +4164,6 @@ run_sigchld_trap (int nchild)
running_trap = SIGCHLD + 1;
set_impossible_sigchld_trap ();
jobs_list_frozen = 1;
for (i = 0; i < nchild; i++)
{
parse_and_execute (savestring (trap_command), "trap", SEVAL_NOHIST|SEVAL_RESETLINE|SEVAL_NOOPTIMIZE);
@@ -4869,10 +4874,14 @@ freeze_jobs_list (void)
return o;
}
void
int
unfreeze_jobs_list (void)
{
int o;
o = jobs_list_frozen;
jobs_list_frozen = 0;
return 0;
}
void
@@ -4881,6 +4890,12 @@ set_jobs_list_frozen (int s)
jobs_list_frozen = s;
}
int
jobs_list_frozen_status (void)
{
return jobs_list_frozen;
}
/* Allow or disallow job control to take place. Returns the old value
of job_control. */
int
+2 -1
View File
@@ -297,8 +297,9 @@ extern int give_terminal_to (pid_t, int);
extern void run_sigchld_trap (int);
extern int freeze_jobs_list (void);
extern void unfreeze_jobs_list (void);
extern int unfreeze_jobs_list (void);
extern void set_jobs_list_frozen (int);
extern int jobs_list_frozen_status (void);
extern int set_job_control (int);
extern void without_job_control (void);
extern void end_job_control (void);
+47 -13
View File
@@ -85,7 +85,8 @@ int _rl_optimize_typeahead = 1; /* rl_insert tries to read typeahead */
int
rl_insert_text (const char *string)
{
register int i, l;
register int i;
size_t l;
l = (string && *string) ? strlen (string) : 0;
if (l == 0)
@@ -704,7 +705,11 @@ static mbstate_t ps = {0};
/* Insert the character C at the current location, moving point forward.
If C introduces a multibyte sequence, we read the whole sequence and
then insert the multibyte char into the line buffer. */
then insert the multibyte char into the line buffer.
If C == 0, we immediately insert any pending partial multibyte character,
assuming that we have read a character that doesn't map to self-insert.
This doesn't completely handle characters that are part of a multibyte
character but map to editing functions. */
int
_rl_insert_char (int count, int c)
{
@@ -718,11 +723,28 @@ _rl_insert_char (int count, int c)
static int stored_count = 0;
#endif
#if !defined (HANDLE_MULTIBYTE)
if (count <= 0)
return 0;
#else
if (count < 0)
return 0;
if (count == 0)
{
if (pending_bytes_length == 0)
return 0;
if (stored_count <= 0)
stored_count = count;
else
count = stored_count;
#if defined (HANDLE_MULTIBYTE)
if (MB_CUR_MAX == 1 || rl_byte_oriented)
memcpy (incoming, pending_bytes, pending_bytes_length);
incoming[pending_bytes_length] = '\0';
incoming_length = pending_bytes_length;
pending_bytes_length = 0;
memset (&ps, 0, sizeof (mbstate_t));
}
else if (MB_CUR_MAX == 1 || rl_byte_oriented)
{
incoming[0] = c;
incoming[1] = '\0';
@@ -730,6 +752,9 @@ _rl_insert_char (int count, int c)
}
else if (_rl_utf8locale && (c & 0x80) == 0)
{
if (pending_bytes_length)
_rl_insert_char (0, 0);
incoming[0] = c;
incoming[1] = '\0';
incoming_length = 1;
@@ -764,7 +789,8 @@ _rl_insert_char (int count, int c)
incoming[1] = '\0';
incoming_length = 1;
pending_bytes_length--;
memmove (pending_bytes, pending_bytes + 1, pending_bytes_length);
if (pending_bytes_length)
memmove (pending_bytes, pending_bytes + 1, pending_bytes_length);
/* Clear the state of the byte sequence, because in this case the
effect of mbstate is undefined. */
memset (&ps, 0, sizeof (mbstate_t));
@@ -827,7 +853,7 @@ _rl_insert_char (int count, int c)
rl_insert_text (string);
xfree (string);
return 0;
return (pending_bytes_length != 0);
}
if (count > TEXT_COUNT_MAX)
@@ -860,6 +886,8 @@ _rl_insert_char (int count, int c)
xfree (string);
incoming_length = 0;
stored_count = 0;
return (pending_bytes_length != 0);
#else /* !HANDLE_MULTIBYTE */
char str[TEXT_COUNT_MAX+1];
@@ -873,9 +901,9 @@ _rl_insert_char (int count, int c)
rl_insert_text (str);
count -= decreaser;
}
#endif /* !HANDLE_MULTIBYTE */
return 0;
#endif /* !HANDLE_MULTIBYTE */
}
if (MB_CUR_MAX == 1 || rl_byte_oriented)
@@ -903,9 +931,11 @@ _rl_insert_char (int count, int c)
rl_insert_text (incoming);
stored_count = 0;
}
#endif
return (pending_bytes_length != 0);
#else
return 0;
#endif
}
/* Overwrite the character at point (or next COUNT characters) with C.
@@ -985,6 +1015,8 @@ rl_insert (int count, int c)
/* If we didn't insert n and there are pending bytes, we need to insert
them if _rl_insert_char didn't do that on its own. */
if (r == 1 && rl_insert_mode == RL_IM_INSERT)
r = _rl_insert_char (0, 0); /* flush partial multibyte char */
if (n != (unsigned short)-2) /* -2 = sentinel value for having inserted N */
{
@@ -1056,6 +1088,8 @@ _rl_insert_next_callback (_rl_callback_generic_arg *data)
int
rl_quoted_insert (int count, int key)
{
int r;
/* Let's see...should the callback interface futz with signal handling? */
#if defined (HANDLE_SIGNALS)
if (RL_ISSTATE (RL_STATE_CALLBACK) == 0)
@@ -1074,15 +1108,15 @@ rl_quoted_insert (int count, int key)
/* A negative count means to quote the next -COUNT characters. */
if (count < 0)
{
int r;
do
r = _rl_insert_next (1);
while (r == 0 && ++count < 0);
return r;
}
return _rl_insert_next (count);
if (r == 1)
_rl_insert_char (0, 0); /* insert partial multibyte character */
return r;
}
/* Insert a tab character. */
+3
View File
@@ -20,6 +20,9 @@
#include <config.h>
#if defined (HAVE_UNISTD_H)
# include <unistd.h>
#endif
#include <bashansi.h>
ssize_t
+8 -1
View File
@@ -1016,9 +1016,10 @@ freeze_jobs_list (void)
return 0;
}
void
int
unfreeze_jobs_list (void)
{
return 0;
}
void
@@ -1026,6 +1027,12 @@ set_jobs_list_frozen (int s)
{
}
int
jobs_list_frozen_status (void)
{
return 0;
}
int
count_all_jobs (void)
{
+12 -3
View File
@@ -6683,10 +6683,15 @@ parse_string_to_word_list (char *s, int flags, const char *whom)
if (wl == &parse_string_error)
{
set_exit_status (EXECUTION_FAILURE);
current_token = '\n'; /* XXX */
if (interactive_shell == 0 && posixly_correct)
jump_to_top_level (FORCE_EOF);
else
jump_to_top_level (DISCARD);
{
if (executing && parse_and_execute_level == 0)
top_level_cleanup ();
jump_to_top_level (DISCARD);
}
}
return (REVERSE_LIST (wl, WORD_LIST *));
@@ -6749,11 +6754,15 @@ parse_compound_assignment (size_t *retlenp)
if (wl == &parse_string_error)
{
set_exit_status (EXECUTION_FAILURE);
last_read_token = '\n'; /* XXX */
last_read_token = current_token = '\n'; /* XXX */
if (interactive_shell == 0 && posixly_correct)
jump_to_top_level (FORCE_EOF);
else
jump_to_top_level (DISCARD);
{
if (executing && parse_and_execute_level == 0)
top_level_cleanup ();
jump_to_top_level (DISCARD);
}
}
if (wl)
BIN
View File
Binary file not shown.
+15 -15
View File
@@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: bash-5.2-rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-11 14:50-0500\n"
"PO-Revision-Date: 2023-04-12 12:19-0700\n"
"PO-Revision-Date: 2023-05-01 16:11-0700\n"
"Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n"
"Language-Team: Croatian <lokalizacija@linux.hr>\n"
"Language: hr\n"
@@ -1731,12 +1731,12 @@ msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
"\t%s [GNU long option] [option] script-file ...\n"
msgstr ""
"Uporaba: %s [GNU dugačka opcija] [opcija]...\n"
" %s [GNU dugačka opcija] [opcija] skripta...\n"
"Uporaba: %s [GNU duga opcija] [opcija]...\n"
" %s [GNU duga opcija] [opcija] skripta...\n"
#: shell.c:2064
msgid "GNU long options:\n"
msgstr "GNU dugačke opcije:\n"
msgstr "GNU duge opcije:\n"
#: shell.c:2068
msgid "Shell options:\n"
@@ -2810,10 +2810,10 @@ msgstr ""
" naziv, „cd“ prijeđe u direktorij s tim nazivom.\n"
"\n"
" Opcije:\n"
" -L slijedi simboličke veze; simboličke veze u DIREKTORIJU razriješi\n"
" -L slijedi simboličke poveznice; simboličke poveznice u DIREKTORIJU razriješi\n"
" nakon obrade instance „..“\n"
" -P rabi fizičku strukturu direktorija umjesto da slijedi simboličke\n"
" veze; simboličke veze u DIREKTORIJU razriješi prije obrade\n"
" poveznice; simboličke poveznice u DIREKTORIJU razriješi prije obrade\n"
" instance „..“\n"
" -e ako je dana s opcijom „-P“, i trenutni radni direktorij nije\n"
" moguće uspješno odrediti nakon uspješne promjene direktorija,\n"
@@ -2849,7 +2849,7 @@ msgstr ""
"\n"
" Opcije:\n"
" -L ispiše vrijednost od $PWD ako sadrži trenutni radni direktorij\n"
" -P ispiše stvarnu fizičku stazu do direktorija bez simboličkih veza\n"
" -P ispiše stvarnu fizičku stazu do direktorija bez simboličkih poveznica\n"
"\n"
" Bez opcija, „pwd“ se ponaša kao da je navedena opcija „-L“\n"
"\n"
@@ -3947,8 +3947,8 @@ msgstr ""
" (a ne samo one argumente koji prethode imenu naredbe)\n"
" -m upravljanje poslovima je omogućeno (zadano)\n"
" -n pročita, ali ne izvrši naredbe\n"
" -o IME_OPCIJE omogući tu opciju (v. niže dugačke nazive za IME_OPCIJE)\n"
" -P ne razriješi simboličke veze pri izvršavanju naredbi poput „cd“\n"
" -o IME_OPCIJE omogući tu opciju (v. niže duge nazive za IME_OPCIJE)\n"
" -P ne razriješi simboličke poveznice pri izvršavanju naredbi poput „cd“\n"
" koje promjene trenutni direktorij\n"
" -p uključi privilegirani način: datoteke BASH_ENV i ENV se zanemare,\n"
" funkcije ljuske se ne uvoze iz okoline, a zanemari se i\n"
@@ -3966,11 +3966,11 @@ msgstr ""
" parametri (ali ako ih nema, postojeći pozicijski argumenti\n"
" se ne brišu)\n"
"\n"
" Opcije se također mogu koristiti pri pokretanju ljuske. Trenutno stanje\n"
" Opcije se mogu koristiti i pri pokretanju ljuske. Trenutno stanje\n"
" svojstva može se naći u $-. Podrazumijeva se da su svi dodatni argumenti\n"
" pozicijski i dodijeljeni su u $1, $2, .. $N.\n"
"\n"
" Dugački nazivi za IME_OPCIJE koji se koriste s opcijom -o (ili +o)\n"
" Dugi nazivi za IME_OPCIJE koji se koriste s opcijom -o (ili +o)\n"
" allexport == -a\n"
" braceexpand == -B (zamjena vitičastih zagrada)\n"
" emacs za uređivanje redaka koristi sučelje u „emacs“ stilu\n"
@@ -4272,9 +4272,9 @@ msgstr ""
" -f DATOTEKA istina ako je datoteka regularna datoteka\n"
" -G DATOTEKA istina ako je datoteka efektivno vlasništvo vaše skupine\n"
" -g DATOTEKA istina ako je datoteka SETGUID\n"
" -h DATOTEKA istina ako je datoteka simbolička veza\n"
" -h DATOTEKA istina ako je datoteka simbolička poveznica\n"
" -k DATOTEKA istina ako datoteka ima postavljeni \"sticky\" bit\n"
" -L DATOTEKA istina ako je datoteka simbolička veza\n"
" -L DATOTEKA istina ako je datoteka simbolička poveznica\n"
" -N DATOTEKA istina ako se datoteka promijenila od zadnjeg čitanja\n"
" -O DATOTEKA istina ako je datoteka efektivno vaše vlasništvo\n"
" -p DATOTEKA istina ako je datoteka imenovana cijev\n"
@@ -4290,7 +4290,7 @@ msgstr ""
" kasnije od druge\n"
" DTEKA1 -ot DTEKA2 istina ako je prva datoteka promijenjena\n"
" ranije od druge\n"
" DTEKA1 -ef DTEKA2 istina ako je prva datoteka čvrsta veza na drugu\n"
" DTEKA1 -ef DTEKA2 istina ako je prva datoteka čvrsta poveznica na drugu\n"
"\n"
" Operatori za stringove:\n"
" -z STRING istina ako je string prazni\n"
@@ -5270,7 +5270,7 @@ msgstr ""
" -u onemogući (isključi) sve navedene IME_OPCIJE\n"
"\n"
" Bez opcija (ili samo s opcijom „-q“) završi s uspjehom ako je IME_OPCIJE\n"
" omogućeno, a s 1 ako je onemogućeno. Završi također s 1 ako je dano\n"
" omogućeno, a s 1 ako je onemogućeno. Završi s 1 i ako je dano\n"
" nevaljano IME_OPCIJE, a završi s 2 ako je dana nevaljana opcija."
#: builtins.c:1938
+2
View File
@@ -398,6 +398,7 @@ top_level_cleanup (void)
loop_level = continuing = breaking = funcnest = 0;
interrupt_execution = retain_fifos = 0;
comsub_ignore_return = return_catch_flag = wait_intr_flag = 0;
variable_context = 0; /* XXX */
}
/* What to do when we've been interrupted, and it is safe to handle it. */
@@ -465,6 +466,7 @@ throw_to_top_level (void)
loop_level = continuing = breaking = funcnest = 0;
interrupt_execution = retain_fifos = 0;
comsub_ignore_return = return_catch_flag = wait_intr_flag = 0;
variable_context = 0;
if (interactive && print_newline)
{