diff options
Diffstat (limited to 'pw')
-rw-r--r-- | pw/pw_group.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/pw/pw_group.c b/pw/pw_group.c index dd65062..a294d4e 100644 --- a/pw/pw_group.c +++ b/pw/pw_group.c @@ -66,13 +66,18 @@ grp_set_passwd(struct group *grp, bool update, int fd, bool precrypted) } if ((istty = isatty(fd))) { - n = t; - /* Disable echo */ - n.c_lflag &= ~(ECHO); - tcsetattr(fd, TCSANOW, &n); - printf("%sassword for group %s:", update ? "New p" : "P", - grp->gr_name); - fflush(stdout); + if (tcgetattr(fd, &t) == -1) + istty = 0; + else { + n = t; + /* Disable echo */ + n.c_lflag &= ~(ECHO); + tcsetattr(fd, TCSANOW, &n); + printf("%sassword for group %s:", + update ? "New p" : "P", + grp->gr_name); + fflush(stdout); + } } b = read(fd, line, sizeof(line) - 1); if (istty) { /* Restore state */ |