diff options
author | Chet Ramey <chet.ramey@case.edu> | 2023-05-04 11:19:43 -0400 |
---|---|---|
committer | Chet Ramey <chet.ramey@case.edu> | 2023-05-04 11:19:43 -0400 |
commit | 896df2874a513d41b570852c2de6b2d612a1706a (patch) | |
tree | 8388b4375f742096f17a28e3aa176f7d598530a6 | |
parent | 23935dbe8513437e69ca14d6b0890067dddceba3 (diff) | |
download | bash-896df2874a513d41b570852c2de6b2d612a1706a.tar.gz |
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
-rw-r--r-- | CWRU/CWRU.chlog | 65 | ||||
-rw-r--r-- | doc/bash.0 | 8 | ||||
-rw-r--r-- | doc/bash.info | 254 | ||||
-rw-r--r-- | doc/bashref.info | 254 | ||||
-rw-r--r-- | eval.c | 4 | ||||
-rw-r--r-- | execute_cmd.c | 35 | ||||
-rw-r--r-- | input.c | 2 | ||||
-rw-r--r-- | jobs.c | 21 | ||||
-rw-r--r-- | jobs.h | 3 | ||||
-rw-r--r-- | lib/readline/text.c | 60 | ||||
-rw-r--r-- | lib/sh/strscpy.c | 3 | ||||
-rw-r--r-- | nojobs.c | 9 | ||||
-rw-r--r-- | parse.y | 15 | ||||
-rw-r--r-- | po/hr.gmo | bin | 178337 -> 178348 bytes | |||
-rw-r--r-- | po/hr.po | 30 | ||||
-rw-r--r-- | sig.c | 2 |
16 files changed, 465 insertions, 300 deletions
diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog index 49734eb5..9c287897 100644 --- a/CWRU/CWRU.chlog +++ b/CWRU/CWRU.chlog @@ -6192,3 +6192,68 @@ 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> @@ -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 diff --git a/doc/bash.info b/doc/bash.info index 0893ebbb..67fb0cb6 100644 --- a/doc/bash.info +++ b/doc/bash.info @@ -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 diff --git a/doc/bashref.info b/doc/bashref.info index eb05765f..fe2b2481 100644 --- a/doc/bashref.info +++ b/doc/bashref.info @@ -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 @@ -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++; diff --git a/execute_cmd.c b/execute_cmd.c index 210b976c..77cecb31 100644 --- a/execute_cmd.c +++ b/execute_cmd.c @@ -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); } @@ -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); @@ -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 @@ -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); diff --git a/lib/readline/text.c b/lib/readline/text.c index c7c12646..b07ff470 100644 --- a/lib/readline/text.c +++ b/lib/readline/text.c @@ -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. */ diff --git a/lib/sh/strscpy.c b/lib/sh/strscpy.c index 7a948ebe..534fa79a 100644 --- a/lib/sh/strscpy.c +++ b/lib/sh/strscpy.c @@ -20,6 +20,9 @@ #include <config.h> +#if defined (HAVE_UNISTD_H) +# include <unistd.h> +#endif #include <bashansi.h> ssize_t @@ -1016,9 +1016,10 @@ freeze_jobs_list (void) return 0; } -void +int unfreeze_jobs_list (void) { + return 0; } void @@ -1027,6 +1028,12 @@ set_jobs_list_frozen (int s) } int +jobs_list_frozen_status (void) +{ + return 0; +} + +int count_all_jobs (void) { return 0; @@ -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) Binary files differ@@ -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 @@ -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) { |