51969: read -d and -s should not reset terminal state when stdin is redirected

This commit is contained in:
Bart Schaefer 2023-07-26 19:54:30 -07:00
parent 301412c0e8
commit aa85564319
2 changed files with 6 additions and 3 deletions

View file

@ -1,5 +1,8 @@
2023-07-26 Bart Schaefer <schaefer@zsh.org>
* 51969: Src/builtin.c: read -d and -s should not reset terminal
state when stdin is redirected
* 51949 (tweak per 51950): Src/Zle/zle_main.c: correct Thingy
refcount in raw_getbyte()

View file

@ -6483,7 +6483,7 @@ bin_read(char *name, char **args, Options ops, UNUSED(int func))
} else
readfd = izle = 0;
if (OPT_ISSET(ops,'s') && SHTTY != -1) {
if (OPT_ISSET(ops,'s') && SHTTY == readfd) {
struct ttyinfo ti;
gettyinfo(&ti);
saveti = ti;
@ -6531,7 +6531,7 @@ bin_read(char *name, char **args, Options ops, UNUSED(int func))
delim = (unsigned char) ((delimstr[0] == Meta) ?
delimstr[1] ^ 32 : delimstr[0]);
#endif
if (SHTTY != -1) {
if (SHTTY == readfd) {
struct ttyinfo ti;
gettyinfo(&ti);
if (! resettty) {
@ -6691,7 +6691,7 @@ bin_read(char *name, char **args, Options ops, UNUSED(int func))
/* dispose of result appropriately, etc. */
if (isem)
while (val > 0 && read(SHTTY, &d, 1) == 1 && d != '\n');
else {
else if (resettty) {
settyinfo(&shttyinfo);
resettty = 0;
}