Commit Diff


commit - 95e92f180a92afc36d4e32cb9389d46f4831b2b8
commit + f936548b5e1dc6cff6e422867a4265c64ebbcfd1
blob - a5c5bf114078c7439cfd92210b2e3228059fde73
blob + f0b9dc28d5bccfd624caf25ad0bbef9f1f24fd32
--- src/cmd/devdraw/x11-srv.c
+++ src/cmd/devdraw/x11-srv.c
@@ -87,6 +87,7 @@ void matchresized(void);
 int fdnoblock(int);
 
 int chatty;
+int drawsleep;
 
 void
 usage(void)
@@ -96,6 +97,14 @@ usage(void)
 }
 
 void
+bell(void *v, char *msg)
+{
+	if(strcmp(msg, "alarm") == 0)
+		drawsleep = drawsleep ? 0 : 1000;
+	noted(NCONT);
+}
+
+void
 main(int argc, char **argv)
 {
 	int n, top, firstx;
@@ -110,9 +119,12 @@ main(int argc, char **argv)
 	default:
 		usage();
 	}ARGEND
+
+	/*
+	 * Ignore arguments.  They're only for good ps -a listings.
+	 */
 	
-	if(argc != 0)
-		usage();
+	notify(bell);
 
 	fdin.rp = fdin.wp = fdin.buf;
 	fdin.ep = fdin.buf+sizeof fdin.buf;
@@ -155,7 +167,10 @@ main(int argc, char **argv)
 		if(chatty)
 			fprint(2, "select %d...\n", top+1);
 		/* wait for something to happen */
+	    again:
 		if(select(top+1, &rd, &wr, &xx, NULL) < 0){
+			if(errno == EINTR)
+				goto again;
 			if(chatty)
 				fprint(2, "select failure\n");
 			exits(0);