diff -U 3 -H -d -r -N -- bash-4.3/arrayfunc.c bash-4.3.mod/arrayfunc.c
|
old
|
new
|
|
| 597 | 597 | if (assoc_p (var)) |
| 598 | 598 | { |
| 599 | 599 | val = expand_assignment_string_to_string (val, 0); |
| | 600 | if (val == 0) |
| | 601 | { |
| | 602 | val = (char *)xmalloc (1); |
| | 603 | val[0] = '\0'; /* like do_assignment_internal */ |
| | 604 | } |
| 600 | 605 | free_val = 1; |
| 601 | 606 | } |
| 602 | 607 | |
diff -U 3 -H -d -r -N -- bash-4.3/jobs.c bash-4.3.mod/jobs.c
|
old
|
new
|
|
| 4374 | 4374 | void |
| 4375 | 4375 | end_job_control () |
| 4376 | 4376 | { |
| 4377 | | if (interactive_shell) /* XXX - should it be interactive? */ |
| | 4377 | if (interactive_shell || job_control) /* XXX - should it be just job_control? */ |
| 4378 | 4378 | { |
| 4379 | 4379 | terminate_stopped_jobs (); |
| 4380 | 4380 | |
diff -U 3 -H -d -r -N -- bash-4.3/lib/glob/glob.c bash-4.3.mod/lib/glob/glob.c
|
old
|
new
|
|
| 179 | 179 | char *pat, *dname; |
| 180 | 180 | int flags; |
| 181 | 181 | { |
| 182 | | char *pp, *pe, *t; |
| 183 | | int n, r; |
| | 182 | char *pp, *pe, *t, *se; |
| | 183 | int n, r, negate; |
| 184 | 184 | |
| | 185 | negate = *pat == '!'; |
| 185 | 186 | pp = pat + 2; |
| 186 | | pe = pp + strlen (pp) - 1; /*(*/ |
| 187 | | if (*pe != ')') |
| 188 | | return 0; |
| 189 | | if ((t = strchr (pp, '|')) == 0) /* easy case first */ |
| | 187 | se = pp + strlen (pp) - 1; /* end of string */ |
| | 188 | pe = glob_patscan (pp, se, 0); /* end of extglob pattern (( */ |
| | 189 | /* we should check for invalid extglob pattern here */ |
| | 190 | /* if pe != se we have more of the pattern at the end of the extglob |
| | 191 | pattern. Check the easy case first ( */ |
| | 192 | if (pe == se && *pe == ')' && (t = strchr (pp, '|')) == 0) |
| 190 | 193 | { |
| 191 | 194 | *pe = '\0'; |
| | 195 | #if defined (HANDLE_MULTIBYTE) |
| | 196 | r = mbskipname (pp, dname, flags); |
| | 197 | #else |
| 192 | 198 | r = skipname (pp, dname, flags); /*(*/ |
| | 199 | #endif |
| 193 | 200 | *pe = ')'; |
| 194 | 201 | return r; |
| 195 | 202 | } |
| | 203 | |
| | 204 | /* check every subpattern */ |
| 196 | 205 | while (t = glob_patscan (pp, pe, '|')) |
| 197 | 206 | { |
| 198 | 207 | n = t[-1]; |
| 199 | 208 | t[-1] = '\0'; |
| | 209 | #if defined (HANDLE_MULTIBYTE) |
| | 210 | r = mbskipname (pp, dname, flags); |
| | 211 | #else |
| 200 | 212 | r = skipname (pp, dname, flags); |
| | 213 | #endif |
| 201 | 214 | t[-1] = n; |
| 202 | 215 | if (r == 0) /* if any pattern says not skip, we don't skip */ |
| 203 | 216 | return r; |
| 204 | 217 | pp = t; |
| 205 | 218 | } /*(*/ |
| 206 | 219 | |
| 207 | | if (pp == pe) /* glob_patscan might find end of pattern */ |
| | 220 | /* glob_patscan might find end of pattern */ |
| | 221 | if (pp == se) |
| 208 | 222 | return r; |
| 209 | 223 | |
| 210 | | *pe = '\0'; |
| 211 | | # if defined (HANDLE_MULTIBYTE) |
| 212 | | r = mbskipname (pp, dname, flags); /*(*/ |
| 213 | | # else |
| 214 | | r = skipname (pp, dname, flags); /*(*/ |
| 215 | | # endif |
| 216 | | *pe = ')'; |
| 217 | | return r; |
| | 224 | /* but if it doesn't then we didn't match a leading dot */ |
| | 225 | return 0; |
| 218 | 226 | } |
| 219 | 227 | #endif |
| 220 | 228 | |
| … |
… |
|
| 277 | 285 | int flags; |
| 278 | 286 | { |
| 279 | 287 | #if EXTENDED_GLOB |
| 280 | | wchar_t *pp, *pe, *t, n; |
| 281 | | int r; |
| | 288 | wchar_t *pp, *pe, *t, n, *se; |
| | 289 | int r, negate; |
| 282 | 290 | |
| | 291 | negate = *pat == L'!'; |
| 283 | 292 | pp = pat + 2; |
| 284 | | pe = pp + wcslen (pp) - 1; /*(*/ |
| 285 | | if (*pe != L')') |
| 286 | | return 0; |
| 287 | | if ((t = wcschr (pp, L'|')) == 0) |
| | 293 | se = pp + wcslen (pp) - 1; /*(*/ |
| | 294 | pe = glob_patscan_wc (pp, se, 0); |
| | 295 | |
| | 296 | if (pe == se && *pe == ')' && (t = wcschr (pp, L'|')) == 0) |
| 288 | 297 | { |
| 289 | 298 | *pe = L'\0'; |
| 290 | 299 | r = wchkname (pp, dname); /*(*/ |
| 291 | 300 | *pe = L')'; |
| 292 | 301 | return r; |
| 293 | 302 | } |
| | 303 | |
| | 304 | /* check every subpattern */ |
| 294 | 305 | while (t = glob_patscan_wc (pp, pe, '|')) |
| 295 | 306 | { |
| 296 | 307 | n = t[-1]; |
| … |
… |
|
| 305 | 316 | if (pp == pe) /* glob_patscan_wc might find end of pattern */ |
| 306 | 317 | return r; |
| 307 | 318 | |
| 308 | | *pe = L'\0'; |
| 309 | | r = wchkname (pp, dname); /*(*/ |
| 310 | | *pe = L')'; |
| 311 | | return r; |
| | 319 | /* but if it doesn't then we didn't match a leading dot */ |
| | 320 | return 0; |
| 312 | 321 | #else |
| 313 | 322 | return (wchkname (pat, dname)); |
| 314 | 323 | #endif |
diff -U 3 -H -d -r -N -- bash-4.3/lib/glob/gmisc.c bash-4.3.mod/lib/glob/gmisc.c
|
old
|
new
|
|
| 210 | 210 | case '+': |
| 211 | 211 | case '!': |
| 212 | 212 | case '@': |
| | 213 | case '?': |
| 213 | 214 | return (pat[1] == LPAREN); |
| 214 | 215 | default: |
| 215 | 216 | return 0; |
diff -U 3 -H -d -r -N -- bash-4.3/lib/readline/readline.c bash-4.3.mod/lib/readline/readline.c
|
old
|
new
|
|
| 744 | 744 | r = _rl_subseq_result (r, cxt->oldmap, cxt->okey, (cxt->flags & KSEQ_SUBSEQ)); |
| 745 | 745 | |
| 746 | 746 | RL_CHECK_SIGNALS (); |
| 747 | | if (r == 0) /* success! */ |
| | 747 | /* We only treat values < 0 specially to simulate recursion. */ |
| | 748 | if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 0)) /* success! or failure! */ |
| 748 | 749 | { |
| 749 | 750 | _rl_keyseq_chain_dispose (); |
| 750 | 751 | RL_UNSETSTATE (RL_STATE_MULTIKEY); |
| … |
… |
|
| 964 | 965 | #if defined (VI_MODE) |
| 965 | 966 | if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap && |
| 966 | 967 | key != ANYOTHERKEY && |
| 967 | | rl_key_sequence_length == 1 && /* XXX */ |
| | 968 | _rl_dispatching_keymap == vi_movement_keymap && |
| 968 | 969 | _rl_vi_textmod_command (key)) |
| 969 | 970 | _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); |
| 970 | 971 | #endif |
diff -U 3 -H -d -r -N -- bash-4.3/parse.y bash-4.3.mod/parse.y
|
old
|
new
|
|
| 3398 | 3398 | within a double-quoted ${...} construct "an even number of |
| 3399 | 3399 | unescaped double-quotes or single-quotes, if any, shall occur." */ |
| 3400 | 3400 | /* This was changed in Austin Group Interp 221 */ |
| 3401 | | if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'') |
| | 3401 | if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'') |
| 3402 | 3402 | continue; |
| 3403 | 3403 | |
| 3404 | 3404 | /* Could also check open == '`' if we want to parse grouping constructs |
diff -U 3 -H -d -r -N -- bash-4.3/patchlevel.h bash-4.3.mod/patchlevel.h
|
old
|
new
|
|
| 25 | 25 | regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh |
| 26 | 26 | looks for to find the patch level (for the sccs version string). */ |
| 27 | 27 | |
| 28 | | #define PATCHLEVEL 0 |
| | 28 | #define PATCHLEVEL 8 |
| 29 | 29 | |
| 30 | 30 | #endif /* _PATCHLEVEL_H_ */ |
diff -U 3 -H -d -r -N -- bash-4.3/test.c bash-4.3.mod/test.c
|
old
|
new
|
|
| 646 | 646 | return (v && invisible_p (v) == 0 && var_isset (v) ? TRUE : FALSE); |
| 647 | 647 | |
| 648 | 648 | case 'R': |
| 649 | | v = find_variable (arg); |
| 650 | | return (v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v) ? TRUE : FALSE); |
| | 649 | v = find_variable_noref (arg); |
| | 650 | return ((v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v)) ? TRUE : FALSE); |
| 651 | 651 | } |
| 652 | 652 | |
| 653 | 653 | /* We can't actually get here, but this shuts up gcc. */ |
| … |
… |
|
| 723 | 723 | case 'o': case 'p': case 'r': case 's': case 't': |
| 724 | 724 | case 'u': case 'v': case 'w': case 'x': case 'z': |
| 725 | 725 | case 'G': case 'L': case 'O': case 'S': case 'N': |
| | 726 | case 'R': |
| 726 | 727 | return (1); |
| 727 | 728 | } |
| 728 | 729 | |
diff -U 3 -H -d -r -N -- bash-4.3/trap.c bash-4.3.mod/trap.c
|
old
|
new
|
|
| 920 | 920 | subst_assign_varlist = 0; |
| 921 | 921 | |
| 922 | 922 | #if defined (JOB_CONTROL) |
| 923 | | save_pipeline (1); /* XXX only provides one save level */ |
| | 923 | if (sig != DEBUG_TRAP) /* run_debug_trap does this */ |
| | 924 | save_pipeline (1); /* XXX only provides one save level */ |
| 924 | 925 | #endif |
| 925 | 926 | |
| 926 | 927 | /* If we're in a function, make sure return longjmps come here, too. */ |
| … |
… |
|
| 940 | 941 | trap_exit_value = last_command_exit_value; |
| 941 | 942 | |
| 942 | 943 | #if defined (JOB_CONTROL) |
| 943 | | restore_pipeline (1); |
| | 944 | if (sig != DEBUG_TRAP) /* run_debug_trap does this */ |
| | 945 | restore_pipeline (1); |
| 944 | 946 | #endif |
| 945 | 947 | |
| 946 | 948 | subst_assign_varlist = save_subst_varlist; |
diff -U 3 -H -d -r -N -- bash-4.3/y.tab.c bash-4.3.mod/y.tab.c
|
old
|
new
|
|
| 5710 | 5710 | within a double-quoted ${...} construct "an even number of |
| 5711 | 5711 | unescaped double-quotes or single-quotes, if any, shall occur." */ |
| 5712 | 5712 | /* This was changed in Austin Group Interp 221 */ |
| 5713 | | if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'') |
| | 5713 | if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'') |
| 5714 | 5714 | continue; |
| 5715 | 5715 | |
| 5716 | 5716 | /* Could also check open == '`' if we want to parse grouping constructs |