diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Src/builtin.c | 13 |
2 files changed, 16 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog index c07897b39..751ea5369 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-04-25 Peter Stephenson <pws@csr.com> + + * users/8752: stripping IFS characters after reading a line + in the read builtin wasn't sensitive to metafied characters. + 2005-04-24 Bart Schaefer <schaefer@zsh.org> * unposted: Src/parse.c: get rid of unused third argument of diff --git a/Src/builtin.c b/Src/builtin.c index 724a6baec..09034c514 100644 --- a/Src/builtin.c +++ b/Src/builtin.c @@ -4747,8 +4747,17 @@ bin_read(char *name, char **args, Options ops, UNUSED(int func)) } signal_setmask(s); } - while (bptr > buf && iwsep(bptr[-1])) - bptr--; + while (bptr > buf) { + if (bptr > buf + 1 && bptr[-2] == Meta) { + if (iwsep(bptr[-1] ^ 32)) + bptr -= 2; + else + break; + } else if (iwsep(bptr[-1])) + bptr--; + else + break; + } *bptr = '\0'; if (resettty && SHTTY != -1) settyinfo(&saveti); |