The unified diff between revisions [9cb69bf6..] and [1d4ae400..] is displayed below. It can also be downloaded as a raw diff.

#
# old_revision [9cb69bf681632171c5140ab3801212de4c31e6b2]
# new_revision [1d4ae4008aec662f233d25ffbefdd8ebe233e48e]
#
# patch "src/lsi/dmx.c"
#  from [d291829ae082bb1bea5c8eb16cffc5f0ab62e22b]
#    to [4a4db0cf9441f248b420da5ea0cb72f0ff099e31]
#
============================================================
--- src/lsi/dmx.c	d291829ae082bb1bea5c8eb16cffc5f0ab62e22b
+++ src/lsi/dmx.c	4a4db0cf9441f248b420da5ea0cb72f0ff099e31
@@ -17,14 +17,15 @@ char *dmxuniverse;
 char dmxpacket[DMX_UNIVERSESIZE + DMX_PACKETSIZE];
 char *dmxuniverse;
 
-void dmx_open(void)
+int dmx_open(void)
 {
 	struct termios t;
 	int flags;
 
 	dmxfd = open(PORT, O_NONBLOCK | O_RDWR, 0);
 	if (dmxfd == -1) {
-		err(1, "failed to open DMX port");
+		warn("failed to open DMX port");
+		return 0;
 	}
 
 	flags = fcntl(dmxfd, F_GETFL);
@@ -34,6 +35,8 @@ void dmx_open(void)
 	cfmakeraw(&t);
 	t.c_cflag = CLOCAL | CREAD | CS8;
 	tcsetattr(dmxfd, TCSANOW, &t);
+
+	return 1;
 }
 
 
@@ -94,7 +97,10 @@ int dmx_init(void)
 
 int dmx_init(void)
 {
-	dmx_open();
+	int rv;
+
+	rv = dmx_open();
+
 	dmxpacket[0] = 0x7e;
 	dmxpacket[1] = 6;
 	dmxpacket[2] = (DMX_UNIVERSESIZE+1) & 0xff;
@@ -104,7 +110,7 @@ int dmx_init(void)
 	dmxpacket[DMX_UNIVERSESIZE+5] = 0xe7;
 	dmxuniverse = dmxpacket+5;
 //	dmx_dumpparams();
-	return 1;
+	return rv;
 }
 
 void dmx_setchannel(int channel, int value)
@@ -118,6 +124,10 @@ void dmx_output(void)
 	int off = 0;
 //	char *buf = dmxpacket;
 //	printf("%x %x %x %x %x %x %x %x %x %x %x %x\n", buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7], buf[8], buf[9], buf[10], buf[11]);
+
+	if (dmxfd == -1)
+		return;
+
 	while (off < DMX_PACKETSIZE) {
 		int r;
 		r = write(dmxfd, dmxpacket + off, DMX_PACKETSIZE - off);