clean up when finished.
diff --git a/INSTALL b/INSTALL
index 787920b..5becb93 100755
--- a/INSTALL
+++ b/INSTALL
@@ -7,6 +7,7 @@
 make
 mk clean
 mk install
+mk clean
 
 echo "Set PLAN9=$PLAN9 in your profile environment."
 echo 'Add $PLAN9/bin to your PATH.'
diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c
index 6979d3c..7a75343 100644
--- a/src/cmd/9term/9term.c
+++ b/src/cmd/9term/9term.c
@@ -11,6 +11,8 @@
 #include <complete.h>
 #include "term.h"
 
+int noecho = 0;
+
 typedef struct Text	Text;
 typedef struct Readbuf	Readbuf;
 
diff --git a/src/cmd/9term/FreeBSD.c b/src/cmd/9term/FreeBSD.c
index 6dba6dd..eec79c2 100644
--- a/src/cmd/9term/FreeBSD.c
+++ b/src/cmd/9term/FreeBSD.c
@@ -1,58 +1 @@
-#include <u.h>
-#include <sys/types.h>
-#include <termios.h>
-#include <sys/termios.h>
-#include <libutil.h>
-#include <libc.h>
-#include "term.h"
-
-int
-getpts(int fd[], char *slave)
-{
-	return openpty(&fd[1], &fd[0], slave, 0, 0);
-}
-
-int
-childpty(int fd[], char *slave)
-{
-	int sfd;
-
-	close(fd[1]);
-	setsid();
-	sfd = open(slave, ORDWR);
-	if(sfd < 0)
-		sysfatal("open %s: %r\n", slave);
-	if(ioctl(sfd, TIOCSCTTY, 0) < 0)
-		fprint(2, "ioctl TIOCSCTTY: %r\n");
-	return sfd;
-}
-
-struct winsize ows;
-
-void
-updatewinsize(int row, int col, int dx, int dy)
-{
-	struct winsize ws;
-
-	ws.ws_row = row;
-	ws.ws_col = col;
-	ws.ws_xpixel = dx;
-	ws.ws_ypixel = dy;
-	if(ws.ws_row != ows.ws_row || ws.ws_col != ows.ws_col)
-	if(ioctl(rcfd[0], TIOCSWINSZ, &ws) < 0)
-		fprint(2, "ioctl: %r\n");
-	ows = ws;
-}
-
-int
-israw(int fd)
-{
-	return 0;
-}
-
-int
-setecho(int fd, int on)
-{
-	return 0;
-}
-
+#include "bsdpty.c"
diff --git a/src/cmd/9term/bsdpty.c b/src/cmd/9term/bsdpty.c
index ebcf2ef..8c0bf2c 100644
--- a/src/cmd/9term/bsdpty.c
+++ b/src/cmd/9term/bsdpty.c
@@ -1,9 +1,13 @@
 #include <u.h>
+#include <sys/types.h>
+#include <sys/stat.h>
 #include <errno.h>
 #include <grp.h>
 #include <termios.h>
 #include <sys/termios.h>
+#ifdef __linux__
 #include <pty.h>
+#endif
 #include <fcntl.h>
 #include <libc.h>
 #include "term.h"
@@ -30,7 +34,6 @@
 		pty[8] = *a;
 		pty[9] = *z;
 		if((fd[1] = open(pty, ORDWR)) < 0){
-fprint(2, "try %s: %r\n", pty);
 			if(errno == ENOENT)
 				break;
 		}else{
diff --git a/src/cmd/9term/mkfile b/src/cmd/9term/mkfile
index 8b06911..acfd0b3 100644
--- a/src/cmd/9term/mkfile
+++ b/src/cmd/9term/mkfile
@@ -1,4 +1,3 @@
-PLAN9=../../..
 <$PLAN9/src/mkhdr
 
 TARG=9term win
@@ -13,5 +12,5 @@
 
 LDFLAGS=-L$X11/lib -lX11
 
-Linux.$O: bsdpty.c
+Linux.$O FreeBSD.$O: bsdpty.c
 
diff --git a/src/cmd/9term/rcstart.c b/src/cmd/9term/rcstart.c
index 4b32483..7ee4935 100644
--- a/src/cmd/9term/rcstart.c
+++ b/src/cmd/9term/rcstart.c
@@ -1,9 +1,6 @@
 #include <u.h>
-#include <libc.h>
-#if 0
-#include <sys/wait.h>
-#endif
 #include <signal.h>
+#include <libc.h>
 #include "term.h"
 
 int
@@ -37,6 +34,8 @@
 		dup(sfd, 1);
 		dup(sfd, 2);
 		system("stty tabs -onlcr onocr icanon echo erase '^h' intr '^?'");
+		if(noecho)
+			system("stty -echo");
 		for(i=3; i<100; i++)
 			close(i);
 		execvp(argv[0], argv);
diff --git a/src/cmd/9term/term.h b/src/cmd/9term/term.h
index 4b5339c..62ef0e6 100644
--- a/src/cmd/9term/term.h
+++ b/src/cmd/9term/term.h
@@ -5,3 +5,4 @@
 extern int rcstart(int, char*[], int*, int*);
 extern int isecho(int);
 extern int setecho(int, int);
+extern int noecho;
diff --git a/src/cmd/9term/win.c b/src/cmd/9term/win.c
index 0e1fd8a..fd42abe 100644
--- a/src/cmd/9term/win.c
+++ b/src/cmd/9term/win.c
@@ -5,6 +5,8 @@
 #include <fs.h>
 #include "term.h"
 
+int noecho = 1;
+
 #define	EVENTSIZE	256
 #define	STACK	32768
 
diff --git a/src/cmd/acid/main.c b/src/cmd/acid/main.c
index 559839f..5e68e46 100644
--- a/src/cmd/acid/main.c
+++ b/src/cmd/acid/main.c
@@ -112,10 +112,12 @@
 
 	l = look("acidmap");
 	if(l && l->proc) {
-		n = an(ONAME, ZN, ZN);
-		n->sym = l;
-		n = an(OCALL, n, ZN);
-		execute(n);
+		if(setjmp(err) == 0){
+			n = an(ONAME, ZN, ZN);
+			n->sym = l;
+			n = an(OCALL, n, ZN);
+			execute(n);
+		}
 	}
 
 	interactive = 1;
@@ -146,12 +148,14 @@
 static int
 attachfiles(int argc, char **argv)
 {
+	int pid;
 	char *s;
 	int i, omode;
 	Fhdr *hdr;
 	Lsym *l;
 	Value *v;
 
+	pid = 0;
 	interactive = 0;
 	if(setjmp(err))
 		return -1;
diff --git a/src/cmd/acid/mkfile b/src/cmd/acid/mkfile
index e372fd8..35c938c 100644
--- a/src/cmd/acid/mkfile
+++ b/src/cmd/acid/mkfile
@@ -18,7 +18,6 @@
 YFILES=dbg.y
 HFILES=acid.h
 
-BIN=/home/rsc/bin
 
 SHORTLIB=mach regexp9 bio 9
 
diff --git a/src/cmd/acid/proc.c b/src/cmd/acid/proc.c
index 3b862aa..2c286e1 100644
--- a/src/cmd/acid/proc.c
+++ b/src/cmd/acid/proc.c
@@ -51,8 +51,7 @@
 int
 nproc(char **argv)
 {
-	char buf[128];
-	int pid, i, fd;
+	int pid, i;
 
 	pid = fork();
 	switch(pid) {
diff --git a/src/cmd/acidtypes/mkfile b/src/cmd/acidtypes/mkfile
index e9e830e..2bea332 100644
--- a/src/cmd/acidtypes/mkfile
+++ b/src/cmd/acidtypes/mkfile
@@ -11,7 +11,7 @@
 
 HFILES=\
 	dat.h\
-	../../libmach/mach.h\
+	$PLAN9/include/mach.h\
 	../../libmach/elf.h\
 	../../libmach/dwarf.h\
 	../../libmach/stabs.h\
diff --git a/src/cmd/acme/fns.h b/src/cmd/acme/fns.h
index 3cabc66..2257d68 100644
--- a/src/cmd/acme/fns.h
+++ b/src/cmd/acme/fns.h
@@ -55,6 +55,8 @@
 void	put(Text*, Text*, Text*, int, int, Rune*, int);
 void	putfile(File*, int, int, Rune*, int);
 void	fontx(Text*, Text*, Text*, int, int, Rune*, int);
+#undef isalnum
+#define isalnum acmeisalnum
 int	isalnum(Rune);
 void	execute(Text*, uint, uint, int, Text*);
 int	search(Text*, Rune*, uint);
diff --git a/src/cmd/acme/mkfile b/src/cmd/acme/mkfile
index d4738be..fbb34d1 100644
--- a/src/cmd/acme/mkfile
+++ b/src/cmd/acme/mkfile
@@ -1,6 +1,5 @@
 # Acme is up-to-date w.r.t. sources as of 29 February 2004
 
-PLAN9=../../..
 <$PLAN9/src/mkhdr
 
 TARG=acme
diff --git a/src/cmd/bzip2/lib/mkfile b/src/cmd/bzip2/lib/mkfile
index 40810d1..f75d6ab 100644
--- a/src/cmd/bzip2/lib/mkfile
+++ b/src/cmd/bzip2/lib/mkfile
@@ -1,4 +1,3 @@
-PLAN9=../../../..
 <$PLAN9/src/mkhdr
 
 OFILES=\
diff --git a/src/cmd/bzip2/mkfile b/src/cmd/bzip2/mkfile
index a1781fc..e544d4d 100644
--- a/src/cmd/bzip2/mkfile
+++ b/src/cmd/bzip2/mkfile
@@ -1,4 +1,3 @@
-PLAN9=../../..
 <$PLAN9/src/mkhdr
 
 OFILES=
diff --git a/src/cmd/idiff.c b/src/cmd/idiff.c
index c3168a2..e551915 100644
--- a/src/cmd/idiff.c
+++ b/src/cmd/idiff.c
@@ -104,7 +104,7 @@
 	Waitmsg *w;
 
 	narg = 0;
-	arg[narg++] = "/bin/diff";
+	arg[narg++] = "diff";
 	arg[narg++] = "-n";
 	if(diffbflag)
 		arg[narg++] = "-b";
@@ -121,7 +121,7 @@
 	case 0:
 		dup(outfd, 1);
 		close(0);
-		exec("/bin/diff", arg);
+		exec("diff", arg);
 		sysfatal("exec: %r");
 
 	default:
@@ -143,7 +143,7 @@
 	int narg, pid, wpid;
 
 	narg = 0;
-	arg[narg++] = "/bin/rc";
+	arg[narg++] = "rc";
 	arg[narg++] = "-c";
 	arg[narg++] = cmd;
 	arg[narg] = nil;
@@ -153,7 +153,7 @@
 		sysfatal("fork: %r");
 
 	case 0:
-		exec("/bin/rc", arg);
+		exec("rc", arg);
 		sysfatal("exec: %r");
 
 	default:
diff --git a/src/cmd/look.c b/src/cmd/look.c
index 5b30086..b1d098b 100644
--- a/src/cmd/look.c
+++ b/src/cmd/look.c
@@ -3,6 +3,13 @@
 #include <bio.h>
 	/* Macros for Rune support of ctype.h-like functions */
 
+#undef isupper
+#undef islower
+#undef isalpha
+#undef isdigit
+#undef isalnum
+#undef isspace
+#undef tolower
 #define	isupper(r)	(L'A' <= (r) && (r) <= L'Z')
 #define	islower(r)	(L'a' <= (r) && (r) <= L'z')
 #define	isalpha(r)	(isupper(r) || islower(r))
diff --git a/src/cmd/mkfile b/src/cmd/mkfile
index 25a334d..9731209 100644
--- a/src/cmd/mkfile
+++ b/src/cmd/mkfile
@@ -1,4 +1,3 @@
-PLAN9=../..
 <$PLAN9/src/mkhdr
 
 TARG=`ls *.c | sed 's/\.c//'`
@@ -7,7 +6,7 @@
 
 <$PLAN9/src/mkmany
 
-BUGGERED='CVS|faces|factotum|htmlfmt|mk|upas|vac|venti'
+BUGGERED='CVS|faces|factotum|mk|upas|vac|venti'
 DIRS=`ls -l |sed -n 's/^d.* //p' |egrep -v "^($BUGGERED)$"`
 
 <$PLAN9/src/mkdirs
diff --git a/src/cmd/strings.c b/src/cmd/strings.c
index dbf57ff..19ed8b7 100644
--- a/src/cmd/strings.c
+++ b/src/cmd/strings.c
@@ -10,6 +10,8 @@
 #define BUFSIZE		70
 
 void stringit(char *);
+#undef isprint
+#define isprint risprint
 int isprint(Rune);
 
 void
diff --git a/src/mkfile b/src/mkfile
index a81246c..7f0503c 100644
--- a/src/mkfile
+++ b/src/mkfile
@@ -1,6 +1,6 @@
 <mkhdr
 
-BUGGERED='9p|fmt|html|httpd|ip|utf|venti'
+BUGGERED='9p|fmt|httpd|ip|utf|venti'
 LIBDIRS=`ls -ld lib* | sed -n 's/^d.* //p' |egrep -v "^lib($BUGGERED)$"`
 
 DIRS=\