Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 28 Jan 2012 20:45:48 +0000 (UTC)
From:      Poul-Henning Kamp <phk@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r230654 - head/usr.bin/tip/tip
Message-ID:  <201201282045.q0SKjmSZ097914@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: phk
Date: Sat Jan 28 20:45:47 2012
New Revision: 230654
URL: http://svn.freebsd.org/changeset/base/230654

Log:
  Make tip exit if the device disappears, for instance when unplugging
  or resetting USB serial devices.
  
  Somebody[tm] should rewrite tip(1) to use two thread instead of two
  processes or maybe even use that new-fangled "select(2)" or positively
  futuristic "poll(2)" system call.

Modified:
  head/usr.bin/tip/tip/tip.c
  head/usr.bin/tip/tip/tipout.c

Modified: head/usr.bin/tip/tip/tip.c
==============================================================================
--- head/usr.bin/tip/tip/tip.c	Sat Jan 28 19:48:44 2012	(r230653)
+++ head/usr.bin/tip/tip/tip.c	Sat Jan 28 20:45:47 2012	(r230654)
@@ -584,7 +584,7 @@ parwrite(int fd, char *buf, size_t n)
 			bp++;
 		}
 	if (write(fd, buf, n) < 0) {
-		if (errno == EIO)
+		if (errno == EIO || errno == ENXIO)
 			tipabort("Lost carrier.");
 		/* this is questionable */
 		perror("write");

Modified: head/usr.bin/tip/tip/tipout.c
==============================================================================
--- head/usr.bin/tip/tip/tipout.c	Sat Jan 28 19:48:44 2012	(r230653)
+++ head/usr.bin/tip/tip/tipout.c	Sat Jan 28 20:45:47 2012	(r230654)
@@ -148,11 +148,12 @@ tipout(void)
 		scnt = read(FD, buf, BUFSIZ);
 		if (scnt <= 0) {
 			/* lost carrier */
-			if (scnt == 0 || (scnt < 0 && errno == EIO)) {
+			if (scnt == 0 ||
+			    (scnt < 0 && (errno == EIO || errno == ENXIO))) {
 				sigemptyset(&mask);
 				sigaddset(&mask, SIGTERM);
 				sigprocmask(SIG_BLOCK, &mask, NULL);
-				intTERM(0);
+				intTERM(SIGHUP);
 				/*NOTREACHED*/
 			}
 			continue;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201201282045.q0SKjmSZ097914>