summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjilles <jilles@FreeBSD.org>2013-09-05 19:02:03 +0000
committerjilles <jilles@FreeBSD.org>2013-09-05 19:02:03 +0000
commit4b58ef1a3ff9c3b82934962811f08ae233842ce0 (patch)
tree49a07c34d2cfbcc961afa019aae31aa260fa2b23
parent04932445481c2cb89ff69a83b961bdef3d64757e (diff)
downloadFreeBSD-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
-rw-r--r--usr.sbin/watch/watch.c3
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");
OpenPOWER on IntegriCloud