Commit Diff


commit - 4e3a2cc1f96f4479f951958f9ca1860f57a0771b
commit + be22ae2d0729f68672e3202c91cfe13c9e74cccc
blob - 54a566ac0e20202f8d9f840767eb4f2634520741
blob + 4b579346bf1e70a9e035ca3c8c7b27b79071992c
--- include/draw.h
+++ include/draw.h
@@ -21,39 +21,35 @@ typedef struct	Subfont Subfont;
 extern	int	Rfmt(Fmt*);
 extern	int	Pfmt(Fmt*);
 
-enum
-{
-	DOpaque		= 0xFFFFFFFF,
-	DTransparent	= 0x00000000,		/* only useful for allocimage, memfillcolor */
-	DBlack		= 0x000000FF,
-	DWhite		= 0xFFFFFFFF,
-	DRed		= 0xFF0000FF,
-	DGreen		= 0x00FF00FF,
-	DBlue		= 0x0000FFFF,
-	DCyan		= 0x00FFFFFF,
-	DMagenta		= 0xFF00FFFF,
-	DYellow		= 0xFFFF00FF,
-	DPaleyellow	= 0xFFFFAAFF,
-	DDarkyellow	= 0xEEEE9EFF,
-	DDarkgreen	= 0x448844FF,
-	DPalegreen	= 0xAAFFAAFF,
-	DMedgreen	= 0x88CC88FF,
-	DDarkblue	= 0x000055FF,
-	DPalebluegreen= 0xAAFFFFFF,
-	DPaleblue		= 0x0000BBFF,
-	DBluegreen	= 0x008888FF,
-	DGreygreen	= 0x55AAAAFF,
-	DPalegreygreen	= 0x9EEEEEFF,
-	DYellowgreen	= 0x99994CFF,
-	DMedblue		= 0x000099FF,
-	DGreyblue	= 0x005DBBFF,
-	DPalegreyblue	= 0x4993DDFF,
-	DPurpleblue	= 0x8888CCFF,
+#define 	DOpaque		0xFFFFFFFF
+#define 	DTransparent	0x00000000		/* only useful for allocimage memfillcolor */
+#define 	DBlack		0x000000FF
+#define 	DWhite		0xFFFFFFFF
+#define 	DRed		0xFF0000FF
+#define 	DGreen		0x00FF00FF
+#define 	DBlue		0x0000FFFF
+#define 	DCyan		0x00FFFFFF
+#define 	DMagenta		0xFF00FFFF
+#define 	DYellow		0xFFFF00FF
+#define 	DPaleyellow	0xFFFFAAFF
+#define 	DDarkyellow	0xEEEE9EFF
+#define 	DDarkgreen	0x448844FF
+#define 	DPalegreen	0xAAFFAAFF
+#define 	DMedgreen	0x88CC88FF
+#define 	DDarkblue	0x000055FF
+#define 	DPalebluegreen 0xAAFFFFFF
+#define 	DPaleblue		0x0000BBFF
+#define 	DBluegreen	0x008888FF
+#define 	DGreygreen	0x55AAAAFF
+#define 	DPalegreygreen	0x9EEEEEFF
+#define 	DYellowgreen	0x99994CFF
+#define 	DMedblue		0x000099FF
+#define 	DGreyblue	0x005DBBFF
+#define 	DPalegreyblue	0x4993DDFF
+#define 	DPurpleblue	0x8888CCFF
 
-	DNotacolor	= 0xFFFFFF00,
-	DNofill		= DNotacolor,
-	
-};
+#define 	DNotacolor	0xFFFFFF00
+#define 	DNofill		DNotacolor
 
 enum
 {
blob - 16fa2027da3761df7a4ab8f3290c518646a9ac98
blob + e6646b7d76042f13c84f1539c4c12f45f3cd5f32
--- src/cmd/9p.c
+++ src/cmd/9p.c
@@ -239,7 +239,7 @@ xstat(int argc, char **argv)
 		usage();
 
 	fid = xwalk(argv[0]);
-	if((d = fsdirfstat(fid)) < 0)
+	if((d = fsdirfstat(fid)) == 0)
 		sysfatal("dirfstat: %r");
 	fmtinstall('D', dirfmt);
 	fmtinstall('M', dirmodefmt);
blob - 50c0cfc92833845183ed261eadd826ddf665eb4b
blob + f84ead2508367a15a7ca854f9a5457688a586d2a
--- src/cmd/9term/9term.c
+++ src/cmd/9term/9term.c
@@ -214,7 +214,7 @@ threadmain(int argc, char *argv[])
 	if(maxtab <= 0)
 		maxtab = 8;
 
-	initdraw(nil, nil, "9term");
+	initdraw(0, nil, "9term");
 	notify(hangupnote);
 
 	mc = initmouse(nil, screen);
@@ -299,14 +299,28 @@ loop(void)
 {
 	Rune r;
 	int i;
-	Alt a[] = {
-		{mc->c, &mc->m, CHANRCV},
-		{kc->c, &r, CHANRCV},
-		{hostc, &i, CHANRCV},
-		{mc->resizec, nil, CHANRCV},
-		{nil, nil, CHANEND},
-	};
+	Alt a[5];
+
+	a[0].c = mc->c;
+	a[0].v = &mc->m;
+	a[0].op = CHANRCV;
+
+	a[1].c = kc->c;
+	a[1].v = &r;
+	a[1].op = CHANRCV;
 
+	a[2].c = hostc;
+	a[2].v = &i;
+	a[2].op = CHANRCV;
+
+	a[3].c = mc->resizec;
+	a[3].v = nil;
+	a[3].op = CHANRCV;
+
+	a[4].c = nil;
+	a[4].v = nil;
+	a[4].op = CHANEND;
+
 	for(;;) {
 		tcheck();
 
@@ -326,7 +340,7 @@ loop(void)
 			key(r);
 			break;
 		case 2:
-			conswrite(rcbuf[i].data, rcbuf[i].n);
+			conswrite((char*)rcbuf[i].data, rcbuf[i].n);
 			break;
 		case 3:
 			doreshape();
blob - d7db9fc5de818620c1d86962c3a4befd6154d506
blob + d9104ed7da820fdcb17ec63b518e6dd7ec15abff
--- src/cmd/9term/SunOS.c
+++ src/cmd/9term/SunOS.c
@@ -1,6 +1,8 @@
-#include "9term.h"
+#include <u.h>
 #include <termios.h>
 #include <sys/termios.h>
+#include <libc.h>
+#include "term.h"
 
 int
 getpts(int fd[], char *slave)
@@ -14,6 +16,19 @@ getpts(int fd[], char *slave)
 	return 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);
+	return sfd;
+}
+
 struct winsize ows;
 
 void
@@ -26,7 +41,7 @@ updatewinsize(int row, int col, int dx, int dy)
 	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)
+	if(ioctl(rcfd, TIOCSWINSZ, &ws) < 0)
 		fprint(2, "ioctl: %r\n");
 	ows = ws;
 }
blob - df187827ec3a16fe1dd11077eb2511fdc9f2a1bf
blob + a6a72fe64ecf33f808e384e9101a84494e690077
--- src/cmd/9term/rcstart.c
+++ src/cmd/9term/rcstart.c
@@ -35,7 +35,12 @@ rcstart(int argc, char **argv, int *pfd)
 		dup(sfd, 0);
 		dup(sfd, 1);
 		dup(sfd, 2);
-		system("stty tabs -onlcr -echo erase ^h intr ^?");
+//		system("stty tabs -onlcr -echo erase '^h' intr '^?'");
+		system("echo tabs; stty tabs");
+		system("echo onlcr; stty -onlcr");
+		system("echo echo; stty -echo");
+		system("echo erase; stty erase '^h'");
+		system("echo intr; stty intr '^?'");
 		execvp(argv[0], argv);
 		fprint(2, "exec %s failed: %r\n", argv[0]);
 		_exits("oops");
blob - 95d84a32fa8fb64afae6a062f45c08f989dffdb5
blob + d1fc5e1cc2fc57acb364b15eaa2104cc174e38e0
--- src/cmd/9term/win.c
+++ src/cmd/9term/win.c
@@ -133,10 +133,10 @@ threadmain(int argc, char **argv)
 		name = "gnot";
 
 	threadnotify(nopipes, 1);
-	if((fs = nsmount("acme", "")) < 0)
+	if((fs = nsmount("acme", "")) == 0)
 		sysfatal("nsmount acme: %r");
 	ctlfd = fsopen(fs, "new/ctl", ORDWR|OCEXEC);
-	if(ctlfd < 0 || fsread(ctlfd, buf, 12) != 12)
+	if(ctlfd == 0 || fsread(ctlfd, buf, 12) != 12)
 		sysfatal("ctl: %r");
 	id = atoi(buf);
 	sprint(buf, "%d/tag", id);
blob - d64db61b6d24c6afa9590104461a271c48942b95
blob + 2a3447425ae922a13ab668783f87b869e6af212c
--- src/cmd/acme/addr.c
+++ src/cmd/acme/addr.c
@@ -64,7 +64,7 @@ number(Mntdir *md, Text *t, Range r, int line, int dir
 		if(line<0 || line>t->file->b.nc)
 			goto Rescue;
 		*evalp = TRUE;
-		return (Range){line, line};
+		return range(line, line);
 	}
 	q0 = r.q0;
 	q1 = r.q1;
@@ -104,7 +104,7 @@ number(Mntdir *md, Text *t, Range r, int line, int dir
 			--q0;
 	}
 	*evalp = TRUE;
-	return (Range){q0, q1};
+	return range(q0, q1);
 
     Rescue:
 	if(md != nil)
@@ -197,7 +197,7 @@ address(Mntdir *md, Text *t, Range lim, Range ar, void
 				if(c == '.')
 					r = ar;
 				else
-					r = (Range){t->file->b.nc, t->file->b.nc};
+					r = range(t->file->b.nc, t->file->b.nc);
 			if(q < q1)
 				dir = Fore;
 			else
blob - 0e3389d627b1d0cb7c27b4b0b33caa8dfdaabee2
blob + 3c1aad20c0ac9462d453542bea427228d10d028d
--- src/cmd/acme/exec.c
+++ src/cmd/acme/exec.c
@@ -106,7 +106,7 @@ Exectab exectab[] = {
 	{ LTab,		tab,		FALSE,	XXX,		XXX		},
 	{ LUndo,		undo,	FALSE,	TRUE,	XXX		},
 	{ LZerox,	zeroxx,	FALSE,	XXX,		XXX		},
-	{ nil, 			nil,		0,		0,		0		},
+	{ nil, 			0,		0,		0,		0		},
 };
 
 Exectab*
blob - c164bb3b50755773e3c3e2c6b38168a8d0611d81
blob + 3cabc6680c4bbf08abb3ad9c3ca729b283af8853
--- src/cmd/acme/fns.h
+++ src/cmd/acme/fns.h
@@ -91,6 +91,7 @@ void		flushwarnings(void);
 void		startplumbing(void);
 
 Runestr	runestr(Rune*, uint);
+Range range(int, int);
 
 #define	runemalloc(a)		(Rune*)emalloc((a)*sizeof(Rune))
 #define	runerealloc(a, b)	(Rune*)erealloc((a), (b)*sizeof(Rune))
blob - af4255c8af359c8647a591be9f3f7cdc1a05acb8
blob + fb4ae5c4e931ca72d8df0186622634c9524a1580
--- src/cmd/acme/fsys.c
+++ src/cmd/acme/fsys.c
@@ -310,7 +310,7 @@ Xfid*
 fsysflush(Xfid *x, Fid *f)
 {
 	USED(f);
-	sendp(x->c, xfidflush);
+	sendp(x->c, (void*)xfidflush);
 	return nil;
 }
 
@@ -526,7 +526,7 @@ fsysopen(Xfid *x, Fid *f)
 	if(((f->dir->perm&~(DMDIR|DMAPPEND))&m) != m)
 		goto Deny;
 
-	sendp(x->c, xfidopen);
+	sendp(x->c, (void*)xfidopen);
 	return nil;
 
     Deny:
@@ -624,7 +624,7 @@ fsysread(Xfid *x, Fid *f)
 		free(b);
 		return x;
 	}
-	sendp(x->c, xfidread);
+	sendp(x->c, (void*)xfidread);
 	return nil;
 }
 
@@ -633,7 +633,7 @@ Xfid*
 fsyswrite(Xfid *x, Fid *f)
 {
 	USED(f);
-	sendp(x->c, xfidwrite);
+	sendp(x->c, (void*)xfidwrite);
 	return nil;
 }
 
@@ -642,7 +642,7 @@ Xfid*
 fsysclunk(Xfid *x, Fid *f)
 {
 	fsysdelid(f->mntdir);
-	sendp(x->c, xfidclose);
+	sendp(x->c, (void*)xfidclose);
 	return nil;
 }
 
blob - 7023382677f9f931f0a5025fcfb1e13de16c3983
blob + f892640a27e28e1daceefd8555e14051fbafa9aa
--- src/cmd/acme/look.c
+++ src/cmd/acme/look.c
@@ -591,7 +591,7 @@ expandfile(Text *t, uint q0, uint q1, Expand *e)
 	e->u.at = t;
 	e->a0 = amin+1;
 	eval = FALSE;
-	address(nil, nil, (Range){-1,-1}, (Range){0, 0}, t, e->a0, amax, tgetc, &eval, (uint*)&e->a1);
+	address(nil, nil, range(-1,-1), range(0,0), t, e->a0, amax, tgetc, &eval, (uint*)&e->a1);
 	return TRUE;
 
    Isntfile:
@@ -723,7 +723,7 @@ openfile(Text *t, Expand *e)
 		eval = FALSE;
 	else{
 		eval = TRUE;
-		r = address(nil, t, (Range){-1, -1}, (Range){t->q0, t->q1}, e->u.at, e->a0, e->a1, e->agetc, &eval, &dummy);
+		r = address(nil, t, range(-1,-1), range(t->q0, t->q1), e->u.at, e->a0, e->a1, e->agetc, &eval, &dummy);
 		if(eval == FALSE)
 			e->jump = FALSE;	/* don't jump if invalid address */
 	}
blob - c0cd7ec150e41361dff3593adeadd1f6b27528d7
blob + 6c1243cfb5584861fb377bf90ed197bf98e5a0ba
--- src/cmd/acme/text.c
+++ src/cmd/acme/text.c
@@ -894,7 +894,7 @@ textselect(Text *t)
 		/* horrible botch: while asleep, may have lost selection altogether */
 		if(selectq > t->file->b.nc)
 			selectq = t->org + t->fr.p0;
-		t->fr.scroll = nil;
+		t->fr.scroll = 0;
 		if(selectq < t->org)
 			q0 = selectq;
 		else
blob - a7307e0665ecd8b8f81d4216042ccba7fc4950ca
blob + f72a5bf90244e53039f21c9c7b9768c79aadea00
--- src/cmd/acme/util.c
+++ src/cmd/acme/util.c
@@ -13,6 +13,16 @@
 
 static	Point		prevmouse;
 static	Window	*mousew;
+
+Range
+range(int q0, int q1)
+{
+	Range r;
+
+	r.q0 = q0;
+	r.q1 = q1;
+	return r;
+}
 
 Runestr
 runestr(Rune *r, uint n)
blob - 839308eee1f3a485087ebb2a4b961be738fea8e8
blob + 5fc4c5a5d24ba932dfef98cdf26fd08373973bb1
--- src/cmd/acme/xfid.c
+++ src/cmd/acme/xfid.c
@@ -47,7 +47,7 @@ xfidctl(void *arg)
 	threadsetname("xfidctlthread");
 	x = arg;
 	for(;;){
-		f = recvp(x->c);
+		f = (void(*)(Xfid*))recvp(x->c);
 		(*f)(x);
 		flushimage(display, 1);
 		sendp(cxfidfree, x);
@@ -104,8 +104,8 @@ xfidopen(Xfid *x)
 		switch(q){
 		case QWaddr:
 			if(w->nopen[q]++ == 0){
-				w->addr = (Range){0,0};
-				w->limit = (Range){-1,-1};
+				w->addr = range(0,0);
+				w->limit = range(-1,-1);
 			}
 			break;
 		case QWdata:
@@ -164,7 +164,7 @@ xfidopen(Xfid *x)
 			seq++;
 			filemark(t->file);
 			cut(t, t, nil, FALSE, TRUE, nil, 0);
-			w->wrselrange = (Range){t->q1, t->q1};
+			w->wrselrange = range(t->q1, t->q1);
 			w->nomark = TRUE;
 			break;
 		case QWeditout:
@@ -173,7 +173,7 @@ xfidopen(Xfid *x)
 				respond(x, &fc, Eperm);
 				return;
 			}
-			w->wrselrange = (Range){t->q1, t->q1};
+			w->wrselrange = range(t->q1, t->q1);
 			break;
 		}
 		winunlock(w);
blob - 18a56d006e31939027bf16e4ab0bf64cdb759036
blob + 7f18ad9235f5a3a2fd079f570530f1940f804c1c
--- src/cmd/dict/ahd.c
+++ src/cmd/dict/ahd.c
@@ -7,16 +7,20 @@
  * American Heritage Dictionary (encrypted)
  */
 
-static Rune intab[256] = {
-	[0x82] 0xe9,
-	[0x85] 0xe0,
-	[0x89] 0xeb,
-	[0x8a] 0xe8,
-	[0xa4] 0xf1,
-	[0xf8] 0xb0,
-	[0xf9] 0xb7,
-};
+static Rune intab[256];
 
+static void
+initintab(void)
+{
+	intab[0x82] =  0xe9;
+	intab[0x85] =  0xe0;
+	intab[0x89] =  0xeb;
+	intab[0x8a] =  0xe8;
+	intab[0xa4] =  0xf1;
+	intab[0xf8] =  0xb0;
+	intab[0xf9] =  0xb7;
+}
+
 static char	tag[64];
 
 enum{
@@ -33,6 +37,7 @@ ahdprintentry(Entry e, int cmd)
 	int c, state = Run;
 
 	if(!inited){
+		initintab();
 		for(c=0; c<256; c++)
 			if(intab[c] == 0)
 				intab[c] = c;
blob - b191e140a728650054aeb52de96497c945bf2e4b
blob + 7e42b93dcdcc20cdead0cd08e8603584af6c176d
--- src/cmd/dict/movie.c
+++ src/cmd/dict/movie.c
@@ -67,7 +67,7 @@ inittagtab(void)
 	tagtab[TI]=	"TI";
 	tagtab[TX]=	"TX";
 	tagtab[VD]=	"VD";
-};
+}
 
 static char	*mget(int, char *, char *, char **);
 #if 0
blob - 868eb486af3add25c4e15624d778f723b97c2e64
blob + 1e1c0c5c9f656267640fa541bb6b279be4df9275
--- src/cmd/dict/oed.c
+++ src/cmd/dict/oed.c
@@ -992,7 +992,7 @@ static int	naux;
 static char	auxname[Maxaux][Buflen];
 static char	auxval[Maxaux][Buflen];
 static char	spec[Buflen];
-static uchar	*auxstate[Naux];	/* vals for most recent tag */
+static char	*auxstate[Naux];	/* vals for most recent tag */
 static Entry	curentry;
 #define cursize (curentry.end-curentry.start)
 
@@ -1154,7 +1154,7 @@ oedprintentry(Entry e, int cmd)
 							outchars(auxstate[Num]);
 							outchars(") ");
 						} else if(t == Sgk) {
-							i = grtab[auxstate[Num][0]];
+							i = grtab[(uchar)auxstate[Num][0]];
 							if(i != NONE)
 								outrune(i);
 							outchars(".  ");
blob - 60d838281614d5e24ce031b0dfdb17c73e7d84bc
blob + fdde6839c33ebe5e7dddd7e3e7232aa4c194df24
--- src/cmd/grep/grep.y
+++ src/cmd/grep/grep.y
@@ -124,7 +124,7 @@ yyerror(char *e, ...)
 	exits("syntax");
 }
 
-long
+int
 yylex(void)
 {
 	char *q, *eq;
blob - 33a4458e04b0f86655b4106c7c84c40eb26fa856
blob + 0f5bcc898b67dfe9a437257770448036a329ed1c
--- src/cmd/plumb/fsys.c
+++ src/cmd/plumb/fsys.c
@@ -122,22 +122,25 @@ static Fcall* fsysremove(Fcall*, uchar*, Fid*);
 static Fcall* fsysstat(Fcall*, uchar*, Fid*);
 static Fcall* fsyswstat(Fcall*, uchar*, Fid*);
 
-Fcall* 	(*fcall[Tmax])(Fcall*, uchar*, Fid*) =
+Fcall* 	(*fcall[Tmax])(Fcall*, uchar*, Fid*);
+
+static void
+initfcall(void)
 {
-	[Tflush]	= fsysflush,
-	[Tversion]	= fsysversion,
-	[Tauth]	= fsysauth,
-	[Tattach]	= fsysattach,
-	[Twalk]	= fsyswalk,
-	[Topen]	= fsysopen,
-	[Tcreate]	= fsyscreate,
-	[Tread]	= fsysread,
-	[Twrite]	= fsyswrite,
-	[Tclunk]	= fsysclunk,
-	[Tremove]= fsysremove,
-	[Tstat]	= fsysstat,
-	[Twstat]	= fsyswstat,
-};
+	fcall[Tflush]	= fsysflush;
+	fcall[Tversion]	= fsysversion;
+	fcall[Tauth]	= fsysauth;
+	fcall[Tattach]	= fsysattach;
+	fcall[Twalk]	= fsyswalk;
+	fcall[Topen]	= fsysopen;
+	fcall[Tcreate]	= fsyscreate;
+	fcall[Tread]	= fsysread;
+	fcall[Twrite]	= fsyswrite;
+	fcall[Tclunk]	= fsysclunk;
+	fcall[Tremove]= fsysremove;
+	fcall[Tstat]	= fsysstat;
+	fcall[Twstat]	= fsyswstat;
+}
 
 char	Ebadfcall[] =	"bad fcall type";
 char	Eperm[] = 	"permission denied";
@@ -208,6 +211,7 @@ fsysproc(void *v)
 	uchar *buf;
 
 	USED(v);
+	initfcall();
 	t = nil;
 	for(;;){
 		buf = malloc(messagesize);	/* avoid memset of emalloc */
blob - 2c1658b01831a69d5a50ec37ce78e0e55ef6c259
blob + e155607a6f1cd1e7e9783534a68ae89985cf4f7a
--- src/cmd/ramfs.c
+++ src/cmd/ramfs.c
@@ -89,22 +89,26 @@ char	*rflush(Fid*), *rversion(Fid*), *rauth(Fid*),
 	*rread(Fid*), *rwrite(Fid*), *rclunk(Fid*),
 	*rremove(Fid*), *rstat(Fid*), *rwstat(Fid*);
 
-char 	*(*fcalls[])(Fid*) = {
-	[Tversion]	rversion,
-	[Tflush]	rflush,
-	[Tauth]	rauth,
-	[Tattach]	rattach,
-	[Twalk]		rwalk,
-	[Topen]		ropen,
-	[Tcreate]	rcreate,
-	[Tread]		rread,
-	[Twrite]	rwrite,
-	[Tclunk]	rclunk,
-	[Tremove]	rremove,
-	[Tstat]		rstat,
-	[Twstat]	rwstat,
-};
+char 	*(*fcalls[Tmax])(Fid*);
 
+static void
+initfcalls(void)
+{
+	fcalls[Tversion]=	rversion;
+	fcalls[Tflush]=	rflush;
+	fcalls[Tauth]=	rauth;
+	fcalls[Tattach]=	rattach;
+	fcalls[Twalk]=		rwalk;
+	fcalls[Topen]=		ropen;
+	fcalls[Tcreate]=	rcreate;
+	fcalls[Tread]=		rread;
+	fcalls[Twrite]=	rwrite;
+	fcalls[Tclunk]=	rclunk;
+	fcalls[Tremove]=	rremove;
+	fcalls[Tstat]=		rstat;
+	fcalls[Twstat]=	rwstat;
+}
+
 char	Eperm[] =	"permission denied";
 char	Enotdir[] =	"not a directory";
 char	Enoauth[] =	"ramfs: authentication not required";
@@ -141,6 +145,7 @@ main(int argc, char *argv[])
 	int stdio = 0;
 	char *service;
 
+	initfcalls();
 	service = "ramfs";
 	defmnt = "/tmp";
 	ARGBEGIN{
blob - 6b32a2277c2a9f9d09e6f9bb5c47e9e2dfed3a23
blob + 30fa896a432b0c70bb92f92a1c4b7bb8297a4ade
--- src/cmd/rc/plan9ish.c
+++ src/cmd/rc/plan9ish.c
@@ -216,10 +216,9 @@ void Updenv(void){
 }
 */
 int
-cmpenv(a, b)
-char **a, **b;
+cmpenv(const void *a, const void *b)
 {
-	return strcmp(*a, *b);
+	return strcmp(*(char**)a, *(char**)b);
 }
 char **mkenv(){
 	register char **env, **ep, *p, *q;
@@ -462,7 +461,7 @@ void Noerror(void){
 	interrupted=0;
 }
 int
-Isatty(fd){
+Isatty(int fd){
 	return isatty(fd);
 }
 void Abort(void){
blob - b8a67b9024ef885d38516e04c370130a801834d2
blob + 162ba74f87daccf884efbe4bf2e70a423a4b1a0d
--- src/cmd/sam/unix.c
+++ src/cmd/sam/unix.c
@@ -1,3 +1,4 @@
+#include <u.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/wait.h>
blob - f8614d3f9a7f6357f28530d95119178efab278f7
blob + feb8957384629e6520326669e71a8be793a5c4ee
--- src/cmd/samterm/plan9.c
+++ src/cmd/samterm/plan9.c
@@ -1,3 +1,4 @@
+#include <u.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <errno.h>
blob - 8f852de294f80d7971852ac8da157906f3c6bce0
blob + 47abaf3650ef1b3b4f999535437724b59e7aaf42
--- src/lib9/date.c
+++ src/lib9/date.c
@@ -43,7 +43,7 @@ tm2Tm(struct tm *tm, Tm *bigtm)
 	if(bigtm->zone[0] == 0){
 		s = getenv("TIMEZONE");
 		if(s){
-			strecpy(bigtm->zone, bigtm->zone+4, tm->tm_zone);
+			strecpy(bigtm->zone, bigtm->zone+4, s);
 			free(s);
 		}
 	}
blob - f4749867140703b0d41a0343a126fc6c1131414a
blob + 49a641b09947abffcb2d6979cc2b95c67a885a98
--- src/libdraw/devdraw.c
+++ src/libdraw/devdraw.c
@@ -834,7 +834,7 @@ _drawmsgwrite(Display *d, void *v, int n)
 					err = "image parameters incompatibile with screen";
 					goto error;
 				}
-				reffn = nil;
+				reffn = 0;
 				switch(refresh){
 				case Refbackup:
 					break;
@@ -985,9 +985,9 @@ _drawmsgwrite(Display *d, void *v, int n)
 			oy = BGLONG(a+41);
 			op = drawclientop(client);
 			/* high bit indicates arc angles are present */
-			if(ox & (1<<31)){
-				if((ox & (1<<30)) == 0)
-					ox &= ~(1<<31);
+			if(ox & ((ulong)1<<31)){
+				if((ox & ((ulong)1<<30)) == 0)
+					ox &= ~((ulong)1<<31);
 				memarc(dst, p, e0, e1, c, src, sp, ox, oy, op);
 			}else
 				memellipse(dst, p, e0, e1, c, src, sp, op);
blob - 7a063f11558290979e3feb9b74acad1b0f5e9906
blob + 33f67c6c7d594f4c44ff7c495d0fa13e7ec3834e
--- src/libdraw/ellipse.c
+++ src/libdraw/ellipse.c
@@ -56,27 +56,27 @@ fillellipseop(Image *dst, Point c, int a, int b, Image
 void
 arc(Image *dst, Point c, int a, int b, int thick, Image *src, Point sp, int alpha, int phi)
 {
-	alpha |= 1<<31;
+	alpha |= ((ulong)1)<<31;
 	doellipse('e', dst, &c, a, b, thick, src, &sp, alpha, phi, SoverD);
 }
 
 void
 arcop(Image *dst, Point c, int a, int b, int thick, Image *src, Point sp, int alpha, int phi, Drawop op)
 {
-	alpha |= 1<<31;
+	alpha |= (ulong)1<<31;
 	doellipse('e', dst, &c, a, b, thick, src, &sp, alpha, phi, op);
 }
 
 void
 fillarc(Image *dst, Point c, int a, int b, Image *src, Point sp, int alpha, int phi)
 {
-	alpha |= 1<<31;
+	alpha |= (ulong)1<<31;
 	doellipse('E', dst, &c, a, b, 0, src, &sp, alpha, phi, SoverD);
 }
 
 void
 fillarcop(Image *dst, Point c, int a, int b, Image *src, Point sp, int alpha, int phi, Drawop op)
 {
-	alpha |= 1<<31;
+	alpha |= (ulong)1<<31;
 	doellipse('E', dst, &c, a, b, 0, src, &sp, alpha, phi, op);
 }
blob - d0f2d4fa1e884d0b85335a704f972fbce2d191b5
blob + c8ad2a6bbff8d3fc63e5555460c04767811f8b81
--- src/libdraw/md-draw.c
+++ src/libdraw/md-draw.c
@@ -1906,7 +1906,7 @@ boolcopyfn(Memimage *img, Memimage *mask)
 	default:
 		assert(0 /* boolcopyfn */);
 	}
-	return nil;
+	return 0;
 }
 
 /*
blob - 44079be2bf1175c6912c480d38aa45011231f8eb
blob + 17d04cb73cc011dc51021b6c7ab8e0d1b0200b2e
--- src/libdraw/ml-lsetrefresh.c
+++ src/libdraw/ml-lsetrefresh.c
@@ -29,7 +29,7 @@ memlsetrefresh(Memimage *i, Refreshfn fn, void *ptr)
 		return 0;
 	/* easiest way is just to update the entire save area */
 	l->refreshfn(i, i->r, l->refreshptr);
-	l->refreshfn = nil;
+	l->refreshfn = 0;
 	l->refreshptr = nil;
 	return 1;
 }
blob - 491bc66c866c2ab163d1d8995f0f68820c48872a
blob + 76bc75d0d618b00e31c3154508f3fd94d9d73de9
--- src/libdraw/unix.c
+++ src/libdraw/unix.c
@@ -1,6 +1,5 @@
-#include <sys/stat.h>
-
 #include <u.h>
+#include <sys/stat.h>
 #include <libc.h>
 #include <draw.h>
 
blob - 9a6585cbc7a745226798e17d0bd4098a433c9300
blob + fa7dddd6f665672244117ad91ec5b09a55211dd5
--- src/libdraw/x11-alloc.c
+++ src/libdraw/x11-alloc.c
@@ -1,6 +1,5 @@
-#include "x11-inc.h"
-
 #include <u.h>
+#include "x11-inc.h"
 #include <libc.h>
 #include <draw.h>
 #include <memdraw.h>
blob - 7a84a98372349917c3102caad717f84270423b52
blob + 33e3170a52527aa897bf1460928201a8ca5eeb98
--- src/libdraw/x11-cload.c
+++ src/libdraw/x11-cload.c
@@ -1,6 +1,5 @@
-#include "x11-inc.h"
-
 #include <u.h>
+#include "x11-inc.h"
 #include <libc.h>
 #include <draw.h>
 #include <memdraw.h>
blob - 6373e4e3a537da13ea99a3ad9e2dc87454b7bfb9
blob + 0a28813d1a8cbdc249af121be0d75b3ed92d2c91
--- src/libdraw/x11-draw.c
+++ src/libdraw/x11-draw.c
@@ -1,6 +1,5 @@
-#include "x11-inc.h"
-
 #include <u.h>
+#include "x11-inc.h"
 #include <libc.h>
 #include <draw.h>
 #include <memdraw.h>
blob - ba9d031b6914ca710cf29fb432a232c260cec238
blob + 0548b62a6cb99865172fa6163a26ed0e2cf29a1c
--- src/libdraw/x11-event.c
+++ src/libdraw/x11-event.c
@@ -1,6 +1,5 @@
-#include "x11-inc.h"
-
 #include <u.h>
+#include "x11-inc.h"
 #include <libc.h>
 #include <draw.h>
 #include <cursor.h>
blob - 33fc6a2ad145cb730ca027728242291c77240174
blob + fc43a684f7c42dcfb4a19643c00377221f5bd5b2
--- src/libdraw/x11-fill.c
+++ src/libdraw/x11-fill.c
@@ -1,6 +1,5 @@
-#include "x11-inc.h"
-
 #include <u.h>
+#include "x11-inc.h"
 #include <libc.h>
 #include <draw.h>
 #include <memdraw.h>
blob - 693b2938deb86e4388dd6611c38a3d49ad831da0
blob + 395f45559c7c5461e0c2fe47c3e2202f50d106d1
--- src/libdraw/x11-get.c
+++ src/libdraw/x11-get.c
@@ -1,6 +1,5 @@
-#include "x11-inc.h"
-
 #include <u.h>
+#include "x11-inc.h"
 #include <libc.h>
 #include <draw.h>
 #include <memdraw.h>
blob - c959eee4c98e8c7766e4758267c21a1fa2833e8c
blob + c6fc881878670dc3d11d96d49794b71019151cc5
--- src/libdraw/x11-init.c
+++ src/libdraw/x11-init.c
@@ -1,8 +1,8 @@
 /*
  * Some of the stuff in this file is not X-dependent and should be elsewhere.
  */
-#include "x11-inc.h"
 #include <u.h>
+#include "x11-inc.h"
 #include <libc.h>
 #include <draw.h>
 #include <memdraw.h>
@@ -69,7 +69,8 @@ _initdisplay(void (*error)(Display*, char*), char *lab
 static Image*
 getimage0(Display *d)
 {
-	char *a, info[12*12+1];
+	char info[12*12+1];
+	uchar *a;
 	int n;
 	Image *image;
 
@@ -323,7 +324,7 @@ xattach(char *label)
 	name.value = (uchar*)label;
 	name.encoding = XA_STRING;
 	name.format = 8;
-	name.nitems = strlen(name.value);
+	name.nitems = strlen((char*)name.value);
 
 	memset(&normalhint, 0, sizeof normalhint);
 	normalhint.flags = USSize|PMaxSize;
@@ -435,7 +436,7 @@ drawsetlabel(Display *d, char *label)
 	name.value = (uchar*)label;
 	name.encoding = XA_STRING;
 	name.format = 8;
-	name.nitems = strlen(name.value);
+	name.nitems = strlen((char*)name.value);
 
 	memset(&classhint, 0, sizeof classhint);
 	classhint.res_name = label;
blob - 509b55cfca5067d01dbae74c4dce6643a9796692
blob + 3a745880ece800e91171572e7766be9afe281055
--- src/libdraw/x11-itrans.c
+++ src/libdraw/x11-itrans.c
@@ -1,8 +1,7 @@
 /* input event and data structure translation */
 
-#include "x11-inc.h"
-
 #include <u.h>
+#include "x11-inc.h"
 #include <libc.h>
 #include <draw.h>
 #include <memdraw.h>
@@ -318,8 +317,8 @@ _xsetcursor(Cursor *c)
 
 	fg = _x.map[0];
 	bg = _x.map[255];
-	xsrc = XCreateBitmapFromData(_x.display, _x.drawable, src, 16, 16);
-	xmask = XCreateBitmapFromData(_x.display, _x.drawable, mask, 16, 16);
+	xsrc = XCreateBitmapFromData(_x.display, _x.drawable, (char*)src, 16, 16);
+	xmask = XCreateBitmapFromData(_x.display, _x.drawable, (char*)mask, 16, 16);
 	xc = XCreatePixmapCursor(_x.display, xsrc, xmask, &fg, &bg, -c->offset.x, -c->offset.y);
 	if(xc != 0) {
 		XDefineCursor(_x.display, _x.drawable, xc);
@@ -412,14 +411,14 @@ _xgetsnarf(XDisplay *xd)
 		data = nil;
 	}else{
 		if(xdata){
-			data = strdup((char*)xdata);
+			data = (uchar*)strdup((char*)xdata);
 			XFree(xdata);
 		}else
 			data = nil;
 	}
 out:
 	qunlock(&clip.lk);
-	return data;
+	return (char*)data;
 }
 
 void
blob - 83bbbfe89f1a55cc983dca0b353394c1cde3ab37
blob + 071d16cfe8644d3ad5f1ea79df7b95f5dd3f7ba4
--- src/libdraw/x11-keyboard.c
+++ src/libdraw/x11-keyboard.c
@@ -1,5 +1,5 @@
-#include "x11-inc.h"
 #include <u.h>
+#include "x11-inc.h"
 #include <libc.h>
 #include <draw.h>
 #include <thread.h>
blob - 5292275a13fb531047f2814faa0092c6f7ef7c2a
blob + a7446f37dda49dee73b4b595e685401fd333f08a
--- src/libdraw/x11-load.c
+++ src/libdraw/x11-load.c
@@ -1,6 +1,5 @@
-#include "x11-inc.h"
-
 #include <u.h>
+#include "x11-inc.h"
 #include <libc.h>
 #include <draw.h>
 #include <memdraw.h>
blob - 6da045bb27424f038ae552abb69c9ba5190f2e3e
blob + 93f7ecf4f4d678158ed3d7e3aea34e0fded092d0
--- src/libdraw/x11-mouse.c
+++ src/libdraw/x11-mouse.c
@@ -1,5 +1,5 @@
-#include "x11-inc.h"
 #include <u.h>
+#include "x11-inc.h"
 #include <libc.h>
 #include <draw.h>
 #include <thread.h>
blob - 22dfc60634848e17d826195a65799e254b16e8f2
blob + 5cbdded84267122b86eac07b0ff296456c1691c1
--- src/libdraw/x11-pixelbits.c
+++ src/libdraw/x11-pixelbits.c
@@ -1,6 +1,5 @@
-#include "x11-inc.h"
-
 #include <u.h>
+#include "x11-inc.h"
 #include <libc.h>
 #include <draw.h>
 #include <memdraw.h>
blob - 471ca880952441f5538d748a35badec54d58b791
blob + d01a232ff99e9d228100ff1724e918f3c2a7f52f
--- src/libdraw/x11-unload.c
+++ src/libdraw/x11-unload.c
@@ -1,6 +1,5 @@
-#include "x11-inc.h"
-
 #include <u.h>
+#include "x11-inc.h"
 #include <libc.h>
 #include <draw.h>
 #include <memdraw.h>
blob - e27202f544b48e934cb16249117bc3a2bd90c138
blob + c996bd31afd225c5c11167bf90f3f96701955777
--- src/libdraw/x11-wsys.c
+++ src/libdraw/x11-wsys.c
@@ -1,5 +1,5 @@
-#include "x11-inc.h"
 #include <u.h>
+#include "x11-inc.h"
 #include <libc.h>
 #include <draw.h>
 #include <memdraw.h>
blob - 90ae0e0fce7250880e3d1e0307e37d71ed3a307f
blob + f1f14ea587f8fc00b39306cf57f383de1f53b575
--- src/libfs/wstat.c
+++ src/libfs/wstat.c
@@ -24,7 +24,7 @@ fsdirwstat(Fsys *fs, char *name, Dir *d)
 int
 fsdirfwstat(Fid *fid, Dir *d)
 {
-	char *a;
+	uchar *a;
 	int n, nn;
 	Fcall tx, rx;
 
blob - 7c834ac811292ad3140f53e369cbcb915c1d9fc1
blob + 50fbf6713f907c90e2f50359c112d34b149cdd24
--- src/libmp/port/dat.h
+++ src/libmp/port/dat.h
@@ -1,4 +1,4 @@
-#define	mpdighi  (mpdigit)(1<<(Dbits-1))
+#define	mpdighi  (mpdigit)((ulong)1<<(Dbits-1))
 #define DIGITS(x) ((Dbits - 1 + (x))/Dbits)
 
 // for converting between int's and mpint's
blob - 7aa0dd7088e212d4328f1d1552a53f562e03f9ef
blob + 838c8b4d74192bd26157c5ee915378231186dbb4
--- src/libsec/port/x509.c
+++ src/libsec/port/x509.c
@@ -1593,7 +1593,7 @@ static Ints *alg_oid_tab[NUMALGS+1] = {
 	(Ints*)&oid_md5,
 	nil
 };
-static DigestFun digestalg[NUMALGS+1] = { md5, md5, md5, md5, sha1, md5, nil };
+static DigestFun digestalg[NUMALGS+1] = { md5, md5, md5, md5, sha1, md5, 0 };
 
 static void
 freecert(CertX509* c)
blob - eb31e99e76c4aaa573b1722395dd610c72d4f1f5
blob + 372923c118504766129d3ed9f1ce93bbf1a3de13
--- src/libthread/exec-unix.c
+++ src/libthread/exec-unix.c
@@ -1,3 +1,4 @@
+#include <u.h>
 #include <fcntl.h>
 #include <unistd.h>
 #include "threadimpl.h"
blob - 4cda307e1b0331afe942bf93735a9f718e78192f
blob + 1f9c26ae6aacc4c9c7ecb872731f10174f184621
--- src/libthread/exit.c
+++ src/libthread/exit.c
@@ -1,3 +1,4 @@
+#include <u.h>
 #include <signal.h>
 #include "threadimpl.h"
 
blob - efca4ca6ab9bf2980bea8b6c488d703172c9bf13
blob + 219e581eaff1f45f156203495bd617065f6699f7
--- src/libthread/ioopen.c
+++ src/libthread/ioopen.c
@@ -1,3 +1,4 @@
+#include <u.h>
 #include <unistd.h>
 #include <fcntl.h>
 #include "threadimpl.h"
blob - 31dc3d51c9a7dba64f32d79d8650fefabc994d42
blob + 648bd66ec01ae94d4f11644755c7e1f6fbf9ae93
--- src/libthread/kill.c
+++ src/libthread/kill.c
@@ -1,3 +1,4 @@
+#include <u.h>
 #include <signal.h>
 #include "threadimpl.h"
 
blob - bcab77c76afa833e411dd0bd509bc9d45f3ec90e
blob + 04e6cd9f5f9fa84b7c82299a2272409d2975fcaa
--- src/libthread/main.c
+++ src/libthread/main.c
@@ -1,3 +1,4 @@
+#include <u.h>
 #include <signal.h>
 #include "threadimpl.h"
 
blob - 1136156cf815eba52db412e65e8c19d39e552bdc
blob + de92d48dc612b050d6f3279beecdc7efa46b3527
--- src/libthread/note.c
+++ src/libthread/note.c
@@ -25,12 +25,12 @@ threadnotify(int (*f)(void*, char*), int in)
 	int (*from)(void*, char*), (*to)(void*, char*);
 
 	if(in){
-		from = nil;
+		from = 0;
 		to = f;
 		topid = _threadgetproc()->pid;
 	}else{
 		from = f;
-		to = nil;
+		to = 0;
 		topid = 0;
 	}
 	lock(&onnotelock);