From: Chet Ramey Date: Mon, 24 Apr 2023 19:25:45 +0000 (-0400) Subject: allow FIGNORE suffixes to match entire pathnames; allow SIGINT received while a funct... X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ec02facd13d9c03ec47fa02ad8da7ce826b34f8f;p=thirdparty%2Fbash.git allow FIGNORE suffixes to match entire pathnames; allow SIGINT received while a function is executing in a loop to break the loop --- diff --git a/COMPAT b/COMPAT index 9fda7fb8f..3c05bee08 100644 --- a/COMPAT +++ b/COMPAT @@ -315,119 +315,113 @@ above. string if there is not enough input. Previous versions discarded the characters read. -41. Beginning with bash-4.0, when one of the commands in a pipeline is killed - by a SIGINT while executing a command list, the shell acts as if it - received the interrupt. This can be disabled by setting the compat31 or - compat32 shell options. - -42. Bash-4.0 changes the handling of the set -e option so that the shell exits +41. Bash-4.0 changes the handling of the set -e option so that the shell exits if a pipeline fails (and not just if the last command in the failing pipeline is a simple command). This is not as Posix specifies. There is work underway to update this portion of the standard; the bash-4.0 behavior attempts to capture the consensus at the time of release. -43. Bash-4.0 fixes a Posix mode bug that caused the . (source) builtin to +42. Bash-4.0 fixes a Posix mode bug that caused the . (source) builtin to search the current directory for its filename argument, even if "." is not in $PATH. Posix says that the shell shouldn't look in $PWD in this case. -44. Bash-4.1 uses the current locale when comparing strings using the < and +43. Bash-4.1 uses the current locale when comparing strings using the < and > operators to the `[[' command. This can be reverted to the previous behavior (ASCII collating and strcmp(3)) by setting one of the `compatNN' shopt options, where NN is less than 41. -45. Bash-4.1 conforms to the current Posix specification for `set -u': +44. Bash-4.1 conforms to the current Posix specification for `set -u': expansions of $@ and $* when there are no positional parameters do not cause the shell to exit. -46. Bash-4.1 implements the current Posix specification for `set -e' and +45. Bash-4.1 implements the current Posix specification for `set -e' and exits when any command fails, not just a simple command or pipeline. -47. Command substitutions now remove the caller's trap strings when trap is +46. Command substitutions now remove the caller's trap strings when trap is run to set a new trap in the subshell. Previous to bash-4.2, the old trap strings persisted even though the actual signal handlers were reset. -48. When in Posix mode, a single quote is not treated specially in a +47. When in Posix mode, a single quote is not treated specially in a double-quoted ${...} expansion, unless the expansion operator is # or % or the new `//', `^', or `,' expansions. In particular, it does not define a new quoting context. This is from Posix interpretation 221. -49. Posix mode shells no longer exit if a variable assignment error occurs +48. Posix mode shells no longer exit if a variable assignment error occurs with an assignment preceding a command that is not a special builtin. -50. Bash-4.2 attempts to preserve what the user typed when performing word +49. Bash-4.2 attempts to preserve what the user typed when performing word completion, instead of, for instance, expanding shell variable references to their value. -51. When in Posix mode, bash-4.2 exits if the filename supplied as an argument +50. When in Posix mode, bash-4.2 exits if the filename supplied as an argument to `.' is not found and the shell is not interactive. -52. When compiled for strict Posix compatibility, bash-4.3 does not enable +51. When compiled for strict Posix compatibility, bash-4.3 does not enable history expansion by default in interactive shells, since it results in a non-conforming environment. -53. Bash-4.3 runs the replacement string in the pattern substitution word +52. Bash-4.3 runs the replacement string in the pattern substitution word expansion through quote removal. The code already treats quote characters in the replacement string as special; if it treats them as special, then quote removal should remove them. -54. Bash-4.4 no longer considers a reference to ${a[@]} or ${a[*]}, where `a' +53. Bash-4.4 no longer considers a reference to ${a[@]} or ${a[*]}, where `a' is an array without any elements set, to be a reference to an unset variable. This means that such a reference will not cause the shell to exit when the `-u' option is enabled. -55. Bash-4.4 allows double quotes to quote the history expansion character (!) +54. Bash-4.4 allows double quotes to quote the history expansion character (!) when in Posix mode, since Posix specifies the effects of double quotes. -56. Bash-4.4 does not inherit $PS4 from the environment if running as root. +55. Bash-4.4 does not inherit $PS4 from the environment if running as root. -57. Bash-4.4 doesn't allow a `break' or `continue' in a function to affect +56. Bash-4.4 doesn't allow a `break' or `continue' in a function to affect loop execution in the calling context. -58. Bash-4.4 no longer expands tildes in $PATH elements when in Posix mode. +57. Bash-4.4 no longer expands tildes in $PATH elements when in Posix mode. -59. Bash-4.4 does not attempt to perform a compound array assignment if an +58. Bash-4.4 does not attempt to perform a compound array assignment if an argument to `declare' or a similar builtin expands to a word that looks like a compound array assignment (e.g. declare w=$x where x='(foo)'). -60. Bash-5.0 only sets up BASH_ARGV and BASH_ARGC at startup if extended +59. Bash-5.0 only sets up BASH_ARGV and BASH_ARGC at startup if extended debugging mode is active. The old behavior of unconditionally setting BASH_ARGC and BASH_ARGV is available at compatibility levels less than or equal to 44. -61. Bash-5.0 doesn't allow a `break' or `continue' in a subshell to attempt +60. Bash-5.0 doesn't allow a `break' or `continue' in a subshell to attempt to break or continue loop execution inherited from the calling context. -62. Bash-5.0 doesn't allow variable assignments preceding builtins like +61. Bash-5.0 doesn't allow variable assignments preceding builtins like export and readonly to modify variables with the same name in preceding contexts (including the global context) unless the shell is in posix mode, since export and readonly are special builtins. -63. Bash-5.1 changes the way posix-mode shells handle assignment statements +62. Bash-5.1 changes the way posix-mode shells handle assignment statements preceding shell function calls. Previous versions of POSIX specified that such assignments would persist after the function returned; subsequent versions of the standard removed that requirement (interpretation #654). Bash-5.1 posix mode assignment statements preceding shell function calls do not persist after the function returns. -64. Bash-5.1 reverts to the bash-4.4 treatment of pathname expansion of words +63. Bash-5.1 reverts to the bash-4.4 treatment of pathname expansion of words containing backslashes but no other special globbing characters. This comes after a protracted discussion and a POSIX interpretation (#1234). -65. In bash-5.1, disabling posix mode attempts to restore the state of several +64. In bash-5.1, disabling posix mode attempts to restore the state of several options that posix mode modifies to the state they had before enabling posix mode. Previous versions restored these options to default values. -66. Bash-5.2 attempts to prevent double-expansion of array subscripts under +65. Bash-5.2 attempts to prevent double-expansion of array subscripts under certain circumstances, especially arithmetic evaluation, by acting as if the `assoc_expand_once' shell option were set. -67. The `unset' builtin in bash-5.2 treats array subscripts `@' and `*' +66. The `unset' builtin in bash-5.2 treats array subscripts `@' and `*' differently than previous versions, and differently depending on whether the array is indexed or associative. - Shell Compatibility Level ========================= @@ -485,10 +479,6 @@ compat31 compat32 - the < and > operators to the [[ command do not consider the current locale when comparing strings; they use ASCII ordering - - interrupting a command list such as "a ; b ; c" causes the execution - of the next command in the list (in bash-4.0 and later versions, - the shell acts as if it received the interrupt, so interrupting - one command in a list aborts the execution of the entire list) compat40 - the < and > operators to the [[ command do not consider the current diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog index 4fb61ceb5..f051ce31a 100644 --- a/CWRU/CWRU.chlog +++ b/CWRU/CWRU.chlog @@ -6087,3 +6087,19 @@ lib/readline/text.c unlikely event that a character in a non-multibyte locale is displayed using an octal representation. From a report by Grisha Levit + +execute_cmd.c,execute_cmd.h,builtins/evalstring.c + - interrupt_execution: replaces `executing_list' + - interrupt_execution: set while executing while, for, until, select, + and arithmetic for loops + +jobs.c + - wait_for: if a process dies due to a SIGINT while the shell is + executing a loop or a list, act as if the shell got SIGINT. This + is no longer dependent on the compatibility level + From a report by Grisha Levit + +bashline.c + - name_is_acceptable: allow FIGNORE suffixes to match the entire + pathname like tcsh does instead of requiring a non-empty prefix. + From Emanuele Torre diff --git a/bashline.c b/bashline.c index a17f7a15f..d0d5bd487 100644 --- a/bashline.c +++ b/bashline.c @@ -3074,7 +3074,7 @@ name_is_acceptable (const char *name) for (nlen = strlen (name), p = fignore.ignores; p->val; p++) { - if (nlen > p->len && p->len > 0 && STREQ (p->val, &name[nlen - p->len])) + if (nlen >= p->len && p->len > 0 && STREQ (p->val, &name[nlen - p->len])) return (0); } diff --git a/builtins/evalstring.c b/builtins/evalstring.c index b78b53e95..d5c13a51a 100644 --- a/builtins/evalstring.c +++ b/builtins/evalstring.c @@ -238,7 +238,7 @@ parse_prologue (char *string, int flags, char *tag) unwind_protect_int (line_number); unwind_protect_int (line_number_for_err_trap); unwind_protect_int (loop_level); - unwind_protect_int (executing_list); + unwind_protect_int (interrupt_execution); unwind_protect_int (comsub_ignore_return); unwind_protect_int (builtin_ignoring_errexit); if (flags & (SEVAL_NONINT|SEVAL_INTERACT)) diff --git a/doc/bash.info b/doc/bash.info index 32f6846df..0893ebbb2 100644 --- a/doc/bash.info +++ b/doc/bash.info @@ -1,9 +1,9 @@ This is bash.info, produced by makeinfo version 6.8 from bashref.texi. This text is a brief description of the features that are present in the -Bash shell (version 5.2, 17 April 2023). +Bash shell (version 5.2, 20 April 2023). - This is Edition 5.2, last updated 17 April 2023, of 'The GNU Bash + This is Edition 5.2, last updated 20 April 2023, of 'The GNU Bash Reference Manual', for 'Bash', Version 5.2. Copyright (C) 1988-2023 Free Software Foundation, Inc. @@ -26,10 +26,10 @@ Bash Features ************* This text is a brief description of the features that are present in the -Bash shell (version 5.2, 17 April 2023). The Bash home page is +Bash shell (version 5.2, 20 April 2023). The Bash home page is . - This is Edition 5.2, last updated 17 April 2023, of 'The GNU Bash + This is Edition 5.2, last updated 20 April 2023, of 'The GNU Bash Reference Manual', for 'Bash', Version 5.2. Bash contains features that appear in other popular shells, and some @@ -7493,13 +7493,6 @@ required for bash-5.1 and later versions. * quoting the rhs of the '[[' command's regexp matching operator (=~) has no special effect -'compat32' - * interrupting a command list such as "a ; b ; c" causes the - execution of the next command in the list (in bash-4.0 and - later versions, the shell acts as if it received the - interrupt, so interrupting one command in a list aborts the - execution of the entire list) - 'compat40' * the '<' and '>' operators to the '[[' command do not consider the current locale when comparing strings; they use ASCII @@ -12787,60 +12780,60 @@ Node: Controlling the Prompt298007 Node: The Restricted Shell300969 Node: Bash POSIX Mode303576 Node: Shell Compatibility Mode319366 -Node: Job Control327930 -Node: Job Control Basics328387 -Node: Job Control Builtins333386 -Node: Job Control Variables339178 -Node: Command Line Editing340331 -Node: Introduction and Notation341999 -Node: Readline Interaction343619 -Node: Readline Bare Essentials344807 -Node: Readline Movement Commands346593 -Node: Readline Killing Commands347550 -Node: Readline Arguments349468 -Node: Searching350509 -Node: Readline Init File352692 -Node: Readline Init File Syntax353950 -Node: Conditional Init Constructs377738 -Node: Sample Init File381931 -Node: Bindable Readline Commands385052 -Node: Commands For Moving386253 -Node: Commands For History388301 -Node: Commands For Text393292 -Node: Commands For Killing396938 -Node: Numeric Arguments399968 -Node: Commands For Completion401104 -Node: Keyboard Macros405292 -Node: Miscellaneous Commands405977 -Node: Readline vi Mode412012 -Node: Programmable Completion412916 -Node: Programmable Completion Builtins420693 -Node: A Programmable Completion Example431678 -Node: Using History Interactively436923 -Node: Bash History Facilities437604 -Node: Bash History Builtins440606 -Node: History Interaction445627 -Node: Event Designators449244 -Node: Word Designators450595 -Node: Modifiers452352 -Node: Installing Bash454157 -Node: Basic Installation455291 -Node: Compilers and Options459010 -Node: Compiling For Multiple Architectures459748 -Node: Installation Names461437 -Node: Specifying the System Type463543 -Node: Sharing Defaults464257 -Node: Operation Controls464927 -Node: Optional Features465882 -Node: Reporting Bugs477098 -Node: Major Differences From The Bourne Shell478429 -Node: GNU Free Documentation License495275 -Node: Indexes520449 -Node: Builtin Index520900 -Node: Reserved Word Index527724 -Node: Variable Index530169 -Node: Function Index547154 -Node: Concept Index560935 +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  End Tag Table diff --git a/doc/bashref.info b/doc/bashref.info index 01300f2f9..eb05765fe 100644 --- a/doc/bashref.info +++ b/doc/bashref.info @@ -2,9 +2,9 @@ This is bashref.info, produced by makeinfo version 6.8 from bashref.texi. This text is a brief description of the features that are present in the -Bash shell (version 5.2, 17 April 2023). +Bash shell (version 5.2, 20 April 2023). - This is Edition 5.2, last updated 17 April 2023, of 'The GNU Bash + This is Edition 5.2, last updated 20 April 2023, of 'The GNU Bash Reference Manual', for 'Bash', Version 5.2. Copyright (C) 1988-2023 Free Software Foundation, Inc. @@ -27,10 +27,10 @@ Bash Features ************* This text is a brief description of the features that are present in the -Bash shell (version 5.2, 17 April 2023). The Bash home page is +Bash shell (version 5.2, 20 April 2023). The Bash home page is . - This is Edition 5.2, last updated 17 April 2023, of 'The GNU Bash + This is Edition 5.2, last updated 20 April 2023, of 'The GNU Bash Reference Manual', for 'Bash', Version 5.2. Bash contains features that appear in other popular shells, and some @@ -7494,13 +7494,6 @@ required for bash-5.1 and later versions. * quoting the rhs of the '[[' command's regexp matching operator (=~) has no special effect -'compat32' - * interrupting a command list such as "a ; b ; c" causes the - execution of the next command in the list (in bash-4.0 and - later versions, the shell acts as if it received the - interrupt, so interrupting one command in a list aborts the - execution of the entire list) - 'compat40' * the '<' and '>' operators to the '[[' command do not consider the current locale when comparing strings; they use ASCII @@ -12788,60 +12781,60 @@ Node: Controlling the Prompt298232 Node: The Restricted Shell301197 Node: Bash POSIX Mode303807 Node: Shell Compatibility Mode319600 -Node: Job Control328167 -Node: Job Control Basics328627 -Node: Job Control Builtins333629 -Node: Job Control Variables339424 -Node: Command Line Editing340580 -Node: Introduction and Notation342251 -Node: Readline Interaction343874 -Node: Readline Bare Essentials345065 -Node: Readline Movement Commands346854 -Node: Readline Killing Commands347814 -Node: Readline Arguments349735 -Node: Searching350779 -Node: Readline Init File352965 -Node: Readline Init File Syntax354226 -Node: Conditional Init Constructs378017 -Node: Sample Init File382213 -Node: Bindable Readline Commands385337 -Node: Commands For Moving386541 -Node: Commands For History388592 -Node: Commands For Text393586 -Node: Commands For Killing397235 -Node: Numeric Arguments400268 -Node: Commands For Completion401407 -Node: Keyboard Macros405598 -Node: Miscellaneous Commands406286 -Node: Readline vi Mode412324 -Node: Programmable Completion413231 -Node: Programmable Completion Builtins421011 -Node: A Programmable Completion Example431999 -Node: Using History Interactively437247 -Node: Bash History Facilities437931 -Node: Bash History Builtins440936 -Node: History Interaction445960 -Node: Event Designators449580 -Node: Word Designators450934 -Node: Modifiers452694 -Node: Installing Bash454502 -Node: Basic Installation455639 -Node: Compilers and Options459361 -Node: Compiling For Multiple Architectures460102 -Node: Installation Names461794 -Node: Specifying the System Type463903 -Node: Sharing Defaults464620 -Node: Operation Controls465293 -Node: Optional Features466251 -Node: Reporting Bugs477470 -Node: Major Differences From The Bourne Shell478804 -Node: GNU Free Documentation License495653 -Node: Indexes520830 -Node: Builtin Index521284 -Node: Reserved Word Index528111 -Node: Variable Index530559 -Node: Function Index547547 -Node: Concept Index561331 +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  End Tag Table diff --git a/doc/bashref.log b/doc/bashref.log index d22ffebc7..0b860317c 100644 --- a/doc/bashref.log +++ b/doc/bashref.log @@ -1,11 +1,12 @@ -This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022/MacPorts 2022.62882_0) (preloaded format=etex 2022.5.4) 18 APR 2023 10:26 +This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2021/MacPorts 2021.58693_0) (preloaded format=pdfetex 2021.8.30) 20 APR 2023 15:09 entering extended mode restricted \write18 enabled. file:line:error style messages enabled. %&-line parsing enabled. -**\nonstopmode \input /usr/local/src/chet/src/bash/src/doc/bashref.texi -(/usr/local/src/chet/src/bash/src/doc/bashref.texi -(/usr/local/src/chet/src/bash/src/doc/texinfo.tex +**\input /usr/local/src/bash/bash-20230420/doc/bashref.texi \input /usr/local/s +rc/bash/bash-20230420/doc/bashref.texi +(/usr/local/src/bash/bash-20230420/doc/bashref.texi +(/usr/local/src/bash/bash-20230420/doc/texinfo.tex Loading texinfo [version 2015-11-22.14]: \outerhsize=\dimen16 \outervsize=\dimen17 @@ -161,20 +162,23 @@ This is `epsf.tex' v2.7.4 <14 February 2011> texinfo.tex: doing @include of version.texi -(/usr/local/src/chet/src/bash/src/doc/version.texi) [1] [2] -(/usr/local/src/chet/src/bash/src/doc/bashref.toc [-1] [-2] [-3]) [-4] -Chapter 1 +(/usr/local/src/bash/bash-20230420/doc/version.texi) [1{/opt/local/var/db/texmf +/fonts/map/pdftex/updmap/pdftex.map}] [2] +(/usr/local/build/bash/bash-20230420/doc/bashref.toc [-1] [-2] [-3]) [-4] +(/usr/local/build/bash/bash-20230420/doc/bashref.toc) +(/usr/local/build/bash/bash-20230420/doc/bashref.toc) Chapter 1 \openout0 = `bashref.toc'. - (/usr/local/src/chet/src/bash/src/doc/bashref.aux) + +(/usr/local/build/bash/bash-20230420/doc/bashref.aux) \openout1 = `bashref.aux'. - Chapter 2 [1] -[2] + Chapter 2 [1] [2] @cpindfile=@write2 \openout2 = `bashref.cp'. - [3] Chapter 3 [4] [5] [6] [7] + +[3] Chapter 3 [4] [5] [6] [7] @vrindfile=@write3 \openout3 = `bashref.vr'. @@ -257,8 +261,9 @@ Overfull \hbox (38.26585pt too wide) in paragraph at lines 5280--5280 [118] texinfo.tex: doing @include of rluser.texi - (/usr/local/src/chet/src/bash/src/lib/readline/doc/rluser.texi Chapter 8 -[119] [120] [121] [122] [123] [124] [125] [126] [127] [128] [129] [130] + (/usr/local/src/bash/bash-20230420/lib/readline/doc/rluser.texi +Chapter 8 [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] [129] +[130] Underfull \hbox (badness 7540) in paragraph at lines 874--880 []@textrm In the ex-am-ple above, @textttsl C-u[] @textrm is bound to the func -tion @@ -306,10 +311,10 @@ gnored[] texinfo.tex: doing @include of hsuser.texi -(/usr/local/src/chet/src/bash/src/lib/readline/doc/hsuser.texi Chapter 9 +(/usr/local/src/bash/bash-20230420/lib/readline/doc/hsuser.texi Chapter 9 [154] [155] [156] [157] [158] [159]) Chapter 10 [160] [161] [162] [163] [164] -Underfull \hbox (badness 10000) in paragraph at lines 9566--9575 +Underfull \hbox (badness 10000) in paragraph at lines 9556--9565 []@textrm All of the fol-low-ing op-tions ex-cept for `@texttt alt-array-implem entation[]@textrm '[], @@ -322,7 +327,7 @@ entation[]@textrm '[], .etc. -Underfull \hbox (badness 10000) in paragraph at lines 9566--9575 +Underfull \hbox (badness 10000) in paragraph at lines 9556--9565 @textrm `@texttt disabled-builtins[]@textrm '[], `@texttt direxpand-default[]@t extrm '[], `@texttt strict-posix-default[]@textrm '[], and @@ -338,16 +343,38 @@ extrm '[], `@texttt strict-posix-default[]@textrm '[], and [174] [175] Appendix C [176] texinfo.tex: doing @include of fdl.texi - (/usr/local/src/chet/src/bash/src/doc/fdl.texi + (/usr/local/src/bash/bash-20230420/doc/fdl.texi [177] [178] [179] [180] [181] [182] [183]) Appendix D [184] [185] [186] [187] [188] [189] [190] [191] [192] [193] ) Here is how much of TeX's memory you used: - 3530 strings out of 497084 - 40207 string characters out of 6206695 - 87715 words of memory out of 5000000 - 4703 multiletter control sequences out of 15000+600000 + 4100 strings out of 497086 + 47602 string characters out of 6206517 + 142025 words of memory out of 5000000 + 4869 multiletter control sequences out of 15000+600000 34315 words of font info for 116 fonts, out of 8000000 for 9000 51 hyphenation exceptions out of 8191 - 16i,6n,16p,343b,942s stack positions out of 10000i,1000n,20000p,200000b,200000s + 16i,6n,16p,389b,983s stack positions out of 5000i,500n,10000p,200000b,80000s +{/opt/local/share/texmf-texlive/font +s/enc/dvips/cm-super/cm-super-t1.enc}< +/opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmsl10.pfb> +Output written on bashref.pdf (199 pages, 804832 bytes). +PDF statistics: + 2794 PDF objects out of 2984 (max. 8388607) + 2548 compressed objects within 26 object streams + 327 named destinations out of 1000 (max. 500000) + 1157 words of extra memory for PDF output out of 10000 (max. 10000000) -Output written on bashref.dvi (199 pages, 836976 bytes). diff --git a/doc/bashref.pdf b/doc/bashref.pdf index 36631b963..378f4ff3e 100644 Binary files a/doc/bashref.pdf and b/doc/bashref.pdf differ diff --git a/doc/bashref.texi b/doc/bashref.texi index 7ed8ec86e..d56eb55a4 100644 --- a/doc/bashref.texi +++ b/doc/bashref.texi @@ -8697,16 +8697,6 @@ quoting the rhs of the @code{[[} command's regexp matching operator (=~) has no special effect @end itemize -@item compat32 -@itemize @bullet -@item -interrupting a command list such as "a ; b ; c" causes the execution -of the next command in the list (in bash-4.0 and later versions, -the shell acts as if it received the interrupt, so -interrupting one command in a list aborts the execution of the -entire list) -@end itemize - @item compat40 @itemize @bullet @item diff --git a/doc/version.texi b/doc/version.texi index a252d9b4e..33383910c 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -2,10 +2,10 @@ Copyright (C) 1988-2023 Free Software Foundation, Inc. @end ignore -@set LASTCHANGE Mon Apr 17 10:35:15 EDT 2023 +@set LASTCHANGE Thu Apr 20 15:08:33 EDT 2023 @set EDITION 5.2 @set VERSION 5.2 -@set UPDATED 17 April 2023 +@set UPDATED 20 April 2023 @set UPDATED-MONTH April 2023 diff --git a/execute_cmd.c b/execute_cmd.c index 2a81a037c..210b976c3 100644 --- a/execute_cmd.c +++ b/execute_cmd.c @@ -236,10 +236,9 @@ REDIRECT *exec_redirection_undo_list = (REDIRECT *)NULL; currently executing (e.g. `eval echo a' would have it set to 2). */ int executing_builtin = 0; -/* Non-zero if we are executing a command list (a;b;c, etc.) */ -int executing_list = 0; - -int executing_loop = 0; +/* Non-zero if we are executing a command list (a;b;c, etc.) or a loop and we + should break out of it on a SIGINT. */ +int interrupt_execution = 0; /* Non-zero if we should defer closing process substitution FDs. */ int retain_fifos = 0; @@ -2740,7 +2739,7 @@ execute_connection (COMMAND *command, int asynchronous, int pipe_in, int pipe_ou if (command->value.Connection->second) command->value.Connection->second->flags |= CMD_IGNORE_RETURN; } - executing_list++; retain_fifos++; + interrupt_execution++; retain_fifos++; QUIT; #if 1 @@ -2756,7 +2755,7 @@ execute_connection (COMMAND *command, int asynchronous, int pipe_in, int pipe_ou exec_result = execute_command_internal (command->value.Connection->second, asynchronous, pipe_in, pipe_out, fds_to_close); - executing_list--; retain_fifos--; + interrupt_execution--; retain_fifos--; break; case '|': @@ -2810,7 +2809,7 @@ execute_connection (COMMAND *command, int asynchronous, int pipe_in, int pipe_ou and the connector is OR_OR, then execute the second command, otherwise return. */ - executing_list++; retain_fifos++; + interrupt_execution++; retain_fifos++; if (command->value.Connection->first) command->value.Connection->first->flags |= CMD_IGNORE_RETURN; @@ -2833,7 +2832,7 @@ execute_connection (COMMAND *command, int asynchronous, int pipe_in, int pipe_ou exec_result = execute_command (second); } - executing_list--; retain_fifos--; + interrupt_execution--; retain_fifos--; break; default: @@ -2880,7 +2879,7 @@ execute_for_command (FOR_COM *for_command) return (EXECUTION_FAILURE); } - loop_level++; retain_fifos++; + loop_level++; interrupt_execution++; retain_fifos++; identifier = for_command->name->word; line_number = for_command->line; /* for expansion error messages */ @@ -2960,7 +2959,7 @@ execute_for_command (FOR_COM *for_command) { dispose_words (releaser); discard_unwind_frame ("for"); - loop_level--; retain_fifos--; + loop_level--; interrupt_execution--; retain_fifos--; return (EXECUTION_FAILURE); } } @@ -2988,7 +2987,7 @@ execute_for_command (FOR_COM *for_command) } } - loop_level--; retain_fifos--; + loop_level--; interrupt_execution--; retain_fifos--; line_number = save_line_number; #if 0 @@ -3092,7 +3091,7 @@ execute_arith_for_command (ARITH_FOR_COM *arith_for_command) int expok, body_status, arith_lineno, save_lineno; body_status = EXECUTION_SUCCESS; - loop_level++; + loop_level++; interrupt_execution++; save_lineno = line_number; if (arith_for_command->flags & CMD_IGNORE_RETURN) @@ -3167,7 +3166,7 @@ execute_arith_for_command (ARITH_FOR_COM *arith_for_command) } } - loop_level--; + loop_level--; interrupt_execution--; line_number = save_lineno; return (body_status); @@ -3405,7 +3404,7 @@ execute_select_command (SELECT_COM *select_command) this_command_name = (char *)0; - loop_level++; + loop_level++; interrupt_execution++; identifier = select_command->name->word; /* command and arithmetic substitution, parameter and variable expansion, @@ -3459,7 +3458,7 @@ execute_select_command (SELECT_COM *select_command) { dispose_words (releaser); discard_unwind_frame ("select"); - loop_level--; + loop_level--; interrupt_execution--; line_number = save_line_number; return (EXECUTION_FAILURE); } @@ -3493,7 +3492,7 @@ execute_select_command (SELECT_COM *select_command) #endif } - loop_level--; + loop_level--; interrupt_execution--; line_number = save_line_number; dispose_words (releaser); @@ -3663,7 +3662,7 @@ execute_while_or_until (WHILE_COM *while_command, int type) int return_value, body_status; body_status = EXECUTION_SUCCESS; - loop_level++; + loop_level++; interrupt_execution++; while_command->test->flags |= CMD_IGNORE_RETURN; if (while_command->flags & CMD_IGNORE_RETURN) @@ -3714,7 +3713,7 @@ execute_while_or_until (WHILE_COM *while_command, int type) break; } } - loop_level--; + loop_level--; interrupt_execution--; return (body_status); } @@ -5871,7 +5870,7 @@ initialize_subshell (void) /* We're no longer inside a shell function. */ variable_context = return_catch_flag = funcnest = evalnest = sourcenest = 0; - executing_list = retain_fifos = 0; /* XXX */ + interrupt_execution = retain_fifos = 0; /* XXX */ /* If we're not interactive, close the file descriptor from which we're reading the current shell script. */ diff --git a/execute_cmd.h b/execute_cmd.h index 3bd3af445..518222a3b 100644 --- a/execute_cmd.h +++ b/execute_cmd.h @@ -50,7 +50,7 @@ extern volatile int last_command_exit_value; extern int last_command_exit_signal; extern int builtin_ignoring_errexit; extern int executing_builtin; -extern int executing_list; +extern int interrupt_execution; extern int retain_fifos; extern int comsub_ignore_return; extern int subshell_level; diff --git a/jobs.c b/jobs.c index 1e8955bd0..a34fe2dda 100644 --- a/jobs.c +++ b/jobs.c @@ -3089,10 +3089,11 @@ if (job == NO_JOB) WIFSIGNALED (s) && WTERMSIG (s) == SIGINT) { /* If SIGINT is not trapped and the shell is in a for, while, - or until loop, act as if the shell received SIGINT as - well, so the loop can be broken. This doesn't call the - SIGINT signal handler; maybe it should. */ - if (signal_is_trapped (SIGINT) == 0 && (loop_level || (shell_compatibility_level > 32 && executing_list))) + until, or arithmetic for loop, or is executing a compound list, + act as if the shell received SIGINT as well, so the loop or + list can be broken. This doesn't call the SIGINT signal + handler; maybe it should. */ + if (signal_is_trapped (SIGINT) == 0 && interrupt_execution) ADDINTERRUPT; /* Call any SIGINT trap handler if the shell is running a loop, so the loop can be broken. This seems more useful and matches the diff --git a/po/cs.gmo b/po/cs.gmo index 39e0b6c70..ff6a876a7 100644 Binary files a/po/cs.gmo and b/po/cs.gmo differ diff --git a/po/cs.po b/po/cs.po index d2df43b12..81e87a6ba 100644 --- a/po/cs.po +++ b/po/cs.po @@ -2,7 +2,7 @@ # Copyright (C) 2008 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Petr Pisar , 2008, 2009, 2010, 2011, 2012, 2013, 2014. -# Petr Pisar , 2015, 2016, 2018, 2019, 2020, 2022. +# Petr Pisar , 2015, 2016, 2018, 2019, 2020, 2022, 2023. # # alias → alias # subscript → podskript @@ -15,7 +15,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: 2022-06-21 20:10+02:00\n" +"PO-Revision-Date: 2023-04-20 19:31+02:00\n" "Last-Translator: Petr Pisar \n" "Language-Team: Czech \n" "Language: cs\n" @@ -38,7 +38,7 @@ msgstr "%s: odstraňuje se atribut odkazu na název" #: arrayfunc.c:496 builtins/declare.def:868 #, c-format msgid "%s: cannot convert indexed to associative array" -msgstr "%s: číslované pole nezle převést na pole asociativní" +msgstr "%s: číslované pole nelze převést na pole asociativní" #: arrayfunc.c:777 #, c-format @@ -365,7 +365,7 @@ msgstr "může být použito jen ve funkci" #: builtins/declare.def:437 msgid "cannot use `-f' to make functions" -msgstr "„-f“ nezle použít na výrobu funkce" +msgstr "„-f“ nelze použít na výrobu funkce" #: builtins/declare.def:464 execute_cmd.c:6132 #, c-format @@ -2233,7 +2233,7 @@ msgstr "%s: nelze alokovat %'lu bajtů (alokováno %'lu bajtů)" #: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" -msgstr "%s: nezle alokovat %'lu bajtů" +msgstr "%s: nelze alokovat %'lu bajtů" #: xmalloc.c:165 #, c-format diff --git a/sig.c b/sig.c index fc0ae878f..31b95adb7 100644 --- a/sig.c +++ b/sig.c @@ -396,7 +396,7 @@ top_level_cleanup (void) run_unwind_protects (); loop_level = continuing = breaking = funcnest = 0; - executing_list = retain_fifos = 0; + interrupt_execution = retain_fifos = 0; comsub_ignore_return = return_catch_flag = wait_intr_flag = 0; } @@ -463,7 +463,7 @@ throw_to_top_level (void) run_unwind_protects (); loop_level = continuing = breaking = funcnest = 0; - executing_list = retain_fifos = 0; + interrupt_execution = retain_fifos = 0; comsub_ignore_return = return_catch_flag = wait_intr_flag = 0; if (interactive && print_newline) @@ -630,7 +630,7 @@ termsig_handler (int sig) /* Reset execution context */ loop_level = continuing = breaking = funcnest = 0; - executing_list = retain_fifos = 0; + interrupt_execution = retain_fifos = 0; comsub_ignore_return = return_catch_flag = wait_intr_flag = 0; run_exit_trap (); /* XXX - run exit trap possibly in signal context? */