diff options
author | jilles <jilles@FreeBSD.org> | 2013-09-05 19:02:03 +0000 |
---|---|---|
committer | jilles <jilles@FreeBSD.org> | 2013-09-05 19:02:03 +0000 |
commit | 4b58ef1a3ff9c3b82934962811f08ae233842ce0 (patch) | |
tree | 49a07c34d2cfbcc961afa019aae31aa260fa2b23 /usr.sbin | |
parent | 04932445481c2cb89ff69a83b961bdef3d64757e (diff) | |
download | FreeBSD-src-4b58ef1a3ff9c3b82934962811f08ae233842ce0.zip FreeBSD-src-4b58ef1a3ff9c3b82934962811f08ae233842ce0.tar.gz |
watch: Do not mess up the tty modes on early error.
Record the initial state earlier, so it is always safe to restore it.
One way this happens is if watch(8) is started by a user that does not have
access to /dev/snp. The result is "staircase effect" during later commands.
PR: bin/153052
MFC after: 1 week
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/watch/watch.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/usr.sbin/watch/watch.c b/usr.sbin/watch/watch.c index e69534d..eecf0d3 100644 --- a/usr.sbin/watch/watch.c +++ b/usr.sbin/watch/watch.c @@ -110,7 +110,6 @@ set_tty(void) { struct termios ntty; - tcgetattr(std_in, &otty); ntty = otty; ntty.c_lflag &= ~ICANON; /* disable canonical operation */ ntty.c_lflag &= ~ECHO; @@ -324,6 +323,8 @@ main(int ac, char *av[]) usage(); } + tcgetattr(std_in, &otty); + if (modfind("snp") == -1) if (kldload("snp") == -1 || modfind("snp") == -1) warn("snp module not available"); |