diff options
author | Olivier Houchard <cognet@FreeBSD.org> | 2005-09-21 14:30:14 +0000 |
---|---|---|
committer | Olivier Houchard <cognet@FreeBSD.org> | 2005-09-21 14:30:14 +0000 |
commit | cb74d4b2b4e5aaab784fc177f48b092a40329fbb (patch) | |
tree | 09c4384fd7df256304c9c960e88cb94ce6389b4a /usr.sbin/watch | |
parent | eb9323503c52c2d468b3e2a667b0763b6c1322ed (diff) | |
download | src-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.c | 16 |
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(); } |