diff options
Diffstat (limited to 'package/bash/bash31-010')
-rw-r--r-- | package/bash/bash31-010 | 164 |
1 files changed, 0 insertions, 164 deletions
diff --git a/package/bash/bash31-010 b/package/bash/bash31-010 deleted file mode 100644 index 19277a88f..000000000 --- a/package/bash/bash31-010 +++ /dev/null @@ -1,164 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 3.1 -Patch-ID: bash31-010 - -Bug-Reported-by: vw@vonwolff.de -Bug-Reference-ID: <20060123135234.1AC2F1D596@wst07.vonwolff.de> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-01/msg00090.html - -Bug-Description: - -There is a difference in behavior between bash-3.0 and bash-3.1 involving -parsing of single- and double-quoted strings occurring in old-style -command substitution. The difference has to do with how backslashes are -processed. This patch restores a measure of backwards compatibility while -the question of POSIX conformance and ultimately correct behavior is discussed. - -THIS IS AN UPDATED PATCH. USE THIS COMMAND TO REVERSE THE EFFECTS OF -THE ORIGINAL PATCH. THE CURRENT DIRECTORY MUST BE THE BASH-3.1 SOURCE -DIRECTORY. - -patch -p0 -R < bash31-010.orig - -Then apply this patch as usual. - -Patch: - -*** bash-3.1/parse.y Fri Nov 11 23:14:18 2005 ---- bash-3.1/parse.y Thu Feb 23 08:21:12 2006 -*************** -*** 2716,2721 **** ---- 2723,2729 ---- - #define P_ALLOWESC 0x02 - #define P_DQUOTE 0x04 - #define P_COMMAND 0x08 /* parsing a command, so look for comments */ -+ #define P_BACKQUOTE 0x10 /* parsing a backquoted command substitution */ - - static char matched_pair_error; - static char * -*************** -*** 2725,2736 **** - int *lenp, flags; - { - int count, ch, was_dollar, in_comment, check_comment; -! int pass_next_character, nestlen, ttranslen, start_lineno; - char *ret, *nestret, *ttrans; - int retind, retsize, rflags; - - count = 1; -! pass_next_character = was_dollar = in_comment = 0; - check_comment = (flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0; - - /* RFLAGS is the set of flags we want to pass to recursive calls. */ ---- 2733,2744 ---- - int *lenp, flags; - { - int count, ch, was_dollar, in_comment, check_comment; -! int pass_next_character, backq_backslash, nestlen, ttranslen, start_lineno; - char *ret, *nestret, *ttrans; - int retind, retsize, rflags; - - count = 1; -! pass_next_character = backq_backslash = was_dollar = in_comment = 0; - check_comment = (flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0; - - /* RFLAGS is the set of flags we want to pass to recursive calls. */ -*************** -*** 2742,2752 **** - start_lineno = line_number; - while (count) - { -! #if 0 -! ch = shell_getc ((qc != '\'' || (flags & P_ALLOWESC)) && pass_next_character == 0); -! #else -! ch = shell_getc (qc != '\'' && pass_next_character == 0); -! #endif - if (ch == EOF) - { - free (ret); ---- 2750,2757 ---- - start_lineno = line_number; - while (count) - { -! ch = shell_getc (qc != '\'' && pass_next_character == 0 && backq_backslash == 0); -! - if (ch == EOF) - { - free (ret); -*************** -*** 2771,2779 **** - continue; - } - /* Not exactly right yet */ -! else if (check_comment && in_comment == 0 && ch == '#' && (retind == 0 || ret[retind-1] == '\n' || whitespace (ret[retind -1]))) - in_comment = 1; - - if (pass_next_character) /* last char was backslash */ - { - pass_next_character = 0; ---- 2776,2791 ---- - continue; - } - /* Not exactly right yet */ -! else if MBTEST(check_comment && in_comment == 0 && ch == '#' && (retind == 0 || ret[retind-1] == '\n' || whitespace (ret[retind - 1]))) - in_comment = 1; - -+ /* last char was backslash inside backquoted command substitution */ -+ if (backq_backslash) -+ { -+ backq_backslash = 0; -+ /* Placeholder for adding special characters */ -+ } -+ - if (pass_next_character) /* last char was backslash */ - { - pass_next_character = 0; -*************** -*** 2814,2819 **** ---- 2824,2831 ---- - { - if MBTEST((flags & P_ALLOWESC) && ch == '\\') - pass_next_character++; -+ else if MBTEST((flags & P_BACKQUOTE) && ch == '\\') -+ backq_backslash++; - continue; - } - -*************** -*** 2898,2904 **** - } - else if MBTEST(qc == '`' && (ch == '"' || ch == '\'') && in_comment == 0) - { -! nestret = parse_matched_pair (0, ch, ch, &nestlen, rflags); - goto add_nestret; - } - else if MBTEST(was_dollar && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ ---- 2910,2920 ---- - } - else if MBTEST(qc == '`' && (ch == '"' || ch == '\'') && in_comment == 0) - { -! /* Add P_BACKQUOTE so backslash quotes the next character and -! shell_getc does the right thing with \<newline>. We do this for -! a measure of backwards compatibility -- it's not strictly the -! right POSIX thing. */ -! nestret = parse_matched_pair (0, ch, ch, &nestlen, rflags|P_BACKQUOTE); - goto add_nestret; - } - else if MBTEST(was_dollar && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ -*** bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005 ---- bash-3.1/patchlevel.h Wed Dec 7 13:48:42 2005 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 9 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 10 - - #endif /* _PATCHLEVEL_H_ */ |