# HG changeset patch # User Olaf Wintermann # Date 1628528462 -7200 # Node ID 1c75c0498520f6c89de8dd3abfe48cf77832b5bc # Parent 40be8db6fe4586563169c89f81f41bef2e6357b7 use tcsetattr only if stdin is a tty diff -r 40be8db6fe45 -r 1c75c0498520 libidav/utils.c --- a/libidav/utils.c Mon Aug 09 17:22:21 2021 +0200 +++ b/libidav/utils.c Mon Aug 09 19:01:02 2021 +0200 @@ -1084,13 +1084,16 @@ #ifndef _WIN32 // hide terminal input struct termios oflags, nflags; - tcgetattr(fileno(stdin), &oflags); - nflags = oflags; - nflags.c_lflag &= ~ECHO; - nflags.c_lflag |= ECHONL; - if (tcsetattr(fileno(stdin), TCSANOW, &nflags) != 0) { - perror("tcsetattr"); + if(isatty(fileno(stdin))) { + tcgetattr(fileno(stdin), &oflags); + nflags = oflags; + nflags.c_lflag &= ~ECHO; + nflags.c_lflag |= ECHONL; + if (tcsetattr(fileno(stdin), TCSANOW, &nflags) != 0) { + perror("tcsetattr"); + } } + #endif // read password input @@ -1107,7 +1110,7 @@ #ifndef _WIN32 // restore terminal settings - if (tcsetattr(fileno(stdin), TCSANOW, &oflags) != 0) { + if (isatty(fileno(stdin)) && tcsetattr(fileno(stdin), TCSANOW, &oflags) != 0) { perror("tcsetattr"); } #endif