]>
Commit | Line | Data |
---|---|---|
1b0dc639 AM |
1 | BASH PATCH REPORT |
2 | ================= | |
3 | ||
4 | Bash-Release: 3.2 | |
5 | Patch-ID: bash32-022 | |
6 | ||
7 | Bug-Reported-by: Chet Ramey <chet.ramey@cwru.edu> | |
8 | Bug-Reference-ID: | |
9 | Bug-Reference-URL: | |
10 | ||
11 | Bug-Description: | |
12 | ||
13 | POSIX specifies that the `read' builtin invoked from an interative shell | |
14 | must prompt with $PS2 when a line is continued using a backslash while | |
15 | reading from a terminal. | |
16 | ||
17 | Patch: | |
18 | ||
19 | *** ../bash-3.2-patched/builtins/read.def Tue Sep 19 08:45:48 2006 | |
20 | --- builtins/read.def Thu May 24 16:03:30 2007 | |
21 | *************** | |
22 | *** 128,133 **** | |
23 | { | |
24 | register char *varname; | |
25 | ! int size, i, nr, pass_next, saw_escape, eof, opt, retval, code; | |
26 | ! int input_is_tty, input_is_pipe, unbuffered_read; | |
27 | int raw, edit, nchars, silent, have_timeout, fd; | |
28 | unsigned int tmout; | |
29 | --- 131,136 ---- | |
30 | { | |
31 | register char *varname; | |
32 | ! int size, i, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2; | |
33 | ! int input_is_tty, input_is_pipe, unbuffered_read, skip_ctlesc, skip_ctlnul; | |
34 | int raw, edit, nchars, silent, have_timeout, fd; | |
35 | unsigned int tmout; | |
36 | *************** | |
37 | *** 135,139 **** | |
38 | char c; | |
39 | char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname; | |
40 | ! char *e, *t, *t1; | |
41 | struct stat tsb; | |
42 | SHELL_VAR *var; | |
43 | --- 138,142 ---- | |
44 | char c; | |
45 | char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname; | |
46 | ! char *e, *t, *t1, *ps2; | |
47 | struct stat tsb; | |
48 | SHELL_VAR *var; | |
49 | *************** | |
50 | *** 149,152 **** | |
51 | --- 152,156 ---- | |
52 | USE_VAR(i); | |
53 | USE_VAR(pass_next); | |
54 | + USE_VAR(print_ps2); | |
55 | USE_VAR(saw_escape); | |
56 | USE_VAR(input_is_pipe); | |
57 | *************** | |
58 | *** 164,167 **** | |
59 | --- 168,172 ---- | |
60 | #endif | |
61 | USE_VAR(list); | |
62 | + USE_VAR(ps2); | |
63 | ||
64 | i = 0; /* Index into the string that we are reading. */ | |
65 | *************** | |
66 | *** 387,391 **** | |
67 | #endif | |
68 | ||
69 | ! for (eof = retval = 0;;) | |
70 | { | |
71 | #if defined (READLINE) | |
72 | --- 394,399 ---- | |
73 | #endif | |
74 | ||
75 | ! ps2 = 0; | |
76 | ! for (print_ps2 = eof = retval = 0;;) | |
77 | { | |
78 | #if defined (READLINE) | |
79 | *************** | |
80 | *** 413,416 **** | |
81 | --- 421,433 ---- | |
82 | #endif | |
83 | ||
84 | + if (print_ps2) | |
85 | + { | |
86 | + if (ps2 == 0) | |
87 | + ps2 = get_string_value ("PS2"); | |
88 | + fprintf (stderr, "%s", ps2 ? ps2 : ""); | |
89 | + fflush (stderr); | |
90 | + print_ps2 = 0; | |
91 | + } | |
92 | + | |
93 | if (unbuffered_read) | |
94 | retval = zread (fd, &c, 1); | |
95 | *************** | |
96 | *** 441,445 **** | |
97 | pass_next = 0; | |
98 | if (c == '\n') | |
99 | ! i--; /* back up over the CTLESC */ | |
100 | else | |
101 | goto add_char; | |
102 | --- 458,466 ---- | |
103 | pass_next = 0; | |
104 | if (c == '\n') | |
105 | ! { | |
106 | ! i--; /* back up over the CTLESC */ | |
107 | ! if (interactive && input_is_tty && raw == 0) | |
108 | ! print_ps2 = 1; | |
109 | ! } | |
110 | else | |
111 | goto add_char; | |
112 | *** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 | |
113 | --- patchlevel.h Mon Oct 16 14:22:54 2006 | |
114 | *************** | |
115 | *** 26,30 **** | |
116 | looks for to find the patch level (for the sccs version string). */ | |
117 | ||
118 | ! #define PATCHLEVEL 21 | |
119 | ||
120 | #endif /* _PATCHLEVEL_H_ */ | |
121 | --- 26,30 ---- | |
122 | looks for to find the patch level (for the sccs version string). */ | |
123 | ||
124 | ! #define PATCHLEVEL 22 | |
125 | ||
126 | #endif /* _PATCHLEVEL_H_ */ |