aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/watch
diff options
context:
space:
mode:
authorOlivier Houchard <cognet@FreeBSD.org>2005-09-21 14:30:14 +0000
committerOlivier Houchard <cognet@FreeBSD.org>2005-09-21 14:30:14 +0000
commitcb74d4b2b4e5aaab784fc177f48b092a40329fbb (patch)
tree09c4384fd7df256304c9c960e88cb94ce6389b4a /usr.sbin/watch
parenteb9323503c52c2d468b3e2a667b0763b6c1322ed (diff)
downloadsrc-cb74d4b2b4e5aaab784fc177f48b092a40329fbb.tar.gz
src-cb74d4b2b4e5aaab784fc177f48b092a40329fbb.zip
Close the tty file descriptor once we're done with it.
Use O_NONBLOCK when opening the tty device. Suggested by: bde Submitted by: ru
Notes
Notes: svn path=/head/; revision=150417
Diffstat (limited to 'usr.sbin/watch')
-rw-r--r--usr.sbin/watch/watch.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/usr.sbin/watch/watch.c b/usr.sbin/watch/watch.c
index 11a80af0416a..732db3d27e54 100644
--- a/usr.sbin/watch/watch.c
+++ b/usr.sbin/watch/watch.c
@@ -75,7 +75,6 @@ const char *opt_snpdev;
char dev_name[DEV_NAME_LEN];
int snp_io;
-int snp_tty = 0;
int std_in = 0, std_out = 1;
@@ -187,8 +186,6 @@ cleanup(int signo __unused)
if (opt_timestamp)
timestamp("Logging Exited.");
close(snp_io);
- if (snp_tty != 0)
- close(snp_tty);
unset_tty();
exit(EX_OK);
}
@@ -227,8 +224,14 @@ detach_snp(void)
static void
attach_snp(void)
{
+ int snp_tty;
+
+ snp_tty = open(dev_name, O_RDONLY | O_NONBLOCK);
+ if (snp_tty < 0)
+ fatal(EX_DATAERR, "can't open device");
if (ioctl(snp_io, SNPSTTY, &snp_tty) != 0)
fatal(EX_UNAVAILABLE, "cannot attach to tty");
+ close(snp_tty);
if (opt_timestamp)
timestamp("Logging Started.");
}
@@ -255,11 +258,8 @@ set_dev(const char *name)
if ((sb.st_mode & S_IFMT) != S_IFCHR)
fatal(EX_DATAERR, "must be a character device");
- if (snp_tty != 0)
- close(snp_tty);
- snp_tty = open(buf, O_RDONLY);
- if (snp_tty < 0)
- fatal(EX_DATAERR, "can't open device");
+ strncpy(dev_name, buf, DEV_NAME_LEN);
+
attach_snp();
}