works on Linux 2.6
diff --git a/src/cmd/grap/mkfile b/src/cmd/grap/mkfile
index 03633f3..12006fd 100644
--- a/src/cmd/grap/mkfile
+++ b/src/cmd/grap/mkfile
@@ -18,18 +18,16 @@
 HFILES=grap.h\
 	y.tab.h\
 
-YFILES=grap.y\
-
-LFILES=grapl.lx\
+YFILES=grap.y
+LFILES=grapl.lx
 
 <$PLAN9/src/mkone
-YFLAGS = -d -S
-LEX=9lex
+YFLAGS=-d -S
 
 grap.c:	y.tab.c
 	mv $prereq $target
 
-grapl.c:	$LFILES
+grapl.c:D: $LFILES
 	$LEX -t $prereq > $target
 
 clean:V:
diff --git a/src/cmd/mkfile b/src/cmd/mkfile
index c50d4e1..21070f0 100644
--- a/src/cmd/mkfile
+++ b/src/cmd/mkfile
@@ -25,5 +25,13 @@
 $PLAN9/bin/lex: $PLAN9/bin/yacc
 	cd lex; mk install
 
+# This should not be necessary.
+$PLAN9/bin/yacc: $O.yacc
+	install -c $O.yacc $PLAN9/bin/yacc
+$O.yacc: yacc.$O
+	$LD -o $target $prereq
+yacc.$O: yacc.c
+	$CC $CFLAGS yacc.c
+
 CLEANFILES=$CLEANFILES bc.tab.[ch] units.tab.[ch] delatex.c
 
diff --git a/src/cmd/pic/mkfile b/src/cmd/pic/mkfile
index 10199f8..8619220 100644
--- a/src/cmd/pic/mkfile
+++ b/src/cmd/pic/mkfile
@@ -25,12 +25,11 @@
 
 <$PLAN9/src/mkone
 YFLAGS=-S -d
-LEX=9lex
 
 picy.c:	y.tab.c
 	mv $prereq $target
 
-picl.c:	picl.lx
+picl.c:D: picl.lx
 	$LEX -t $prereq > $target
 
 clean:V:
diff --git a/src/cmd/plot/libplot/subr.c b/src/cmd/plot/libplot/subr.c
index eb0b513..2b41990 100644
--- a/src/cmd/plot/libplot/subr.c
+++ b/src/cmd/plot/libplot/subr.c
@@ -13,7 +13,6 @@
 struct penvir *e0 = E, *e1 = &E[1], *esave;
 int
 bcolor(char *s){
-	int c;
 	while (*s != 0) {
 		switch (*s) {
 		case '0': case '1': case '2': case '3': case '4':
diff --git a/src/cmd/postscript/common/bbox.c b/src/cmd/postscript/common/bbox.c
index 66a114c..67dabf3 100644
--- a/src/cmd/postscript/common/bbox.c
+++ b/src/cmd/postscript/common/bbox.c
@@ -11,6 +11,7 @@
  */
 
 #include <stdio.h>
+#include <string.h>
 #include <ctype.h>
 #include <sys/types.h>
 #include <fcntl.h>
diff --git a/src/cmd/postscript/common/getopt.c b/src/cmd/postscript/common/getopt.c
index e348cb2..018885f 100644
--- a/src/cmd/postscript/common/getopt.c
+++ b/src/cmd/postscript/common/getopt.c
@@ -1,18 +1,13 @@
-#ifndef _POSIX_SOURCE
-#include <u.h>
-#include <libc.h>
-#endif
 #include	<stdio.h>
+#include <string.h>
 #define ERR(str, chr)       if(opterr){fprintf(stderr, "%s%s%c\n", argv[0], str, chr);}
 int     opterr = 1;
 int     optind = 1;
 int	optopt;
 char    *optarg;
-char    *strchr();
 
 int
-getopt (argc, argv, opts)
-char **argv, *opts;
+getopt (int argc, char **argv, char *opts)
 {
 	static int sp = 1;
 	register int c;
@@ -22,7 +17,7 @@
 		if (optind >= argc ||
 		   argv[optind][0] != '-' || argv[optind][1] == '\0')
 			return EOF;
-		else if (strcmp(argv[optind], "--") == NULL) {
+		else if (strcmp(argv[optind], "--") == 0) {
 			optind++;
 			return EOF;
 		}
diff --git a/src/cmd/postscript/common/misc.c b/src/cmd/postscript/common/misc.c
index e965a6e..dd34c6d 100644
--- a/src/cmd/postscript/common/misc.c
+++ b/src/cmd/postscript/common/misc.c
@@ -5,6 +5,7 @@
  */
 
 #include <stdio.h>
+#include <stdlib.h>
 #include <ctype.h>
 #include <sys/types.h>
 #include <fcntl.h>
diff --git a/src/cmd/postscript/common/mkfile b/src/cmd/postscript/common/mkfile
index 121b739..6e270bc 100644
--- a/src/cmd/postscript/common/mkfile
+++ b/src/cmd/postscript/common/mkfile
@@ -20,4 +20,4 @@
 
 <$PLAN9/src/mklib
 
-CFLAGS=-c -D$SYSTEM -D_POSIX_SOURCE
+CFLAGS=-c -D$SYSTEM 
diff --git a/src/cmd/vac/vac.c b/src/cmd/vac/vac.c
index 39a7d73..53a66be 100644
--- a/src/cmd/vac/vac.c
+++ b/src/cmd/vac/vac.c
@@ -115,7 +115,6 @@
 	char *host = nil;
 	int statsflag = 0;
 
-	threadlinklibrary();
 	atexit(cleanup);
 
 	ARGBEGIN{