Placate the Sun monster.
diff --git a/src/cmd/9660/dump9660.c b/src/cmd/9660/dump9660.c
index 320e56d..95bba37 100644
--- a/src/cmd/9660/dump9660.c
+++ b/src/cmd/9660/dump9660.c
@@ -201,7 +201,7 @@
 		checknames(&iroot, isbadiso9660);
 		convertnames(&iroot, struprcpy);
 	} else
-		convertnames(&iroot, (void *) strcpy);
+		convertnames(&iroot, (char* (*)(char*, char*))strcpy);
 
 //	isoabstract = findconform(&iroot, abstract);
 //	isobiblio = findconform(&iroot, biblio);
@@ -215,7 +215,7 @@
 	//	jnotice = findconform(&jroot, notice);
 
 		checknames(&jroot, isbadjoliet);
-		convertnames(&jroot, (void *) strcpy);
+		convertnames(&jroot, (char* (*)(char*, char*))strcpy);
 		dsort(&jroot, jolietcmp);
 	}
 
@@ -301,14 +301,14 @@
 		 * Write dump tree at end.  We assume the name characters
 		 * are all conforming, so everything is already sorted properly.
 		 */
-		convertnames(&idumproot, (info.flags & CDconform) ? (void *) struprcpy : (void *) strcpy);
+		convertnames(&idumproot, (info.flags & CDconform) ? struprcpy : (char* (*)(char*, char*)) strcpy);
 		if(cd->nulldump) {
 			r = walkdirec(&idumproot, dumpname);
 			assert(r != nil);
 			copybutname(r, &iroot);
 		}
 		if(cd->flags & CDjoliet) {
-			convertnames(&jdumproot, (void *) strcpy);
+			convertnames(&jdumproot, (char* (*)(char*, char*))strcpy);
 			if(cd->nulldump) {
 				r = walkdirec(&jdumproot, dumpname);
 				assert(r != nil);
diff --git a/src/cmd/9660/unix.c b/src/cmd/9660/unix.c
index 99332af..f060c10 100644
--- a/src/cmd/9660/unix.c
+++ b/src/cmd/9660/unix.c
@@ -41,7 +41,7 @@
 		//xd->symlink = atom(d->symlink);
 		xd->symlink = atom("symlink");		// XXX: rsc
 	}
-};
+}
 
 void
 fdtruncate(int fd, ulong size)
diff --git a/src/cmd/9term/SunOS.c b/src/cmd/9term/SunOS.c
index 12f64b8..4c85918 100644
--- a/src/cmd/9term/SunOS.c
+++ b/src/cmd/9term/SunOS.c
@@ -67,7 +67,7 @@
 	if(debug) fprint(2, "israw %c%c\n",
 		ttmode.c_lflag&ICANON ? 'c' : '-',
 		ttmode.c_lflag&ECHO ? 'e' : '-');
-	return (ttmode.c_lflag&(ICANON|ECHO));
+	return (ttmode.c_lflag&ICANON && ttmode.c_lflags&ECHO);
 }
 
 int
diff --git a/src/libip/eipfmt.c b/src/libip/eipfmt.c
index 8333225..b3fc44c 100644
--- a/src/libip/eipfmt.c
+++ b/src/libip/eipfmt.c
@@ -7,6 +7,9 @@
 	Isprefix= 16,
 };
 
+// XXX: manually initialize once to placate the Sun monster
+uchar prefixvals[256];
+#ifdef NOTDEF
 uchar prefixvals[256] =
 {
 [0x00] 0 | Isprefix,
@@ -19,6 +22,7 @@
 [0xFE] 7 | Isprefix,
 [0xFF] 8 | Isprefix,
 };
+#endif
 
 int
 eipfmt(Fmt *f)
@@ -31,6 +35,22 @@
 	ushort s;
 	int i, j, n, eln, eli;
 
+	static int once = 0;	// XXX: placate the Sun monster
+
+	if(!once){
+		once = 1;
+		memset(prefixvals, 0, sizeof(prefixvals));
+		prefixvals[0x00] = 0 | Isprefix;
+		prefixvals[0x80] = 1 | Isprefix;
+		prefixvals[0xC0] = 2 | Isprefix;
+		prefixvals[0xE0] = 3 | Isprefix;
+		prefixvals[0xF0] = 4 | Isprefix;
+		prefixvals[0xF8] = 5 | Isprefix;
+		prefixvals[0xFC] = 6 | Isprefix;
+		prefixvals[0xFE] = 7 | Isprefix;
+		prefixvals[0xFF] = 8 | Isprefix;
+	}
+
 	switch(f->r) {
 	case 'E':		/* Ethernet address */
 		p = va_arg(f->args, uchar*);