ctype sign fixes (Tom Miller)
diff --git a/src/cmd/eqn/input.c b/src/cmd/eqn/input.c
index 85a5736..a7432f3 100644
--- a/src/cmd/eqn/input.c
+++ b/src/cmd/eqn/input.c
@@ -189,9 +189,9 @@
 				ERROR "argfp underflow" FATAL;
 			popsrc();
 			goto loop;
-		} else if (c == '$' && isdigit(*srcp->sp)) {
+		} else if (c == '$' && isdigit((uchar)*srcp->sp)) {
 			int n = 0;
-			while (isdigit(*srcp->sp))
+			while (isdigit((uchar)*srcp->sp))
 				n = 10 * n + *srcp->sp++ - '0';
 			if (n > 0 && n <= MAXARGS)
 				pushsrc(String, argfp->argstk[n-1]);
diff --git a/src/cmd/eqn/size.c b/src/cmd/eqn/size.c
index 59bf3f2..67d3dae 100644
--- a/src/cmd/eqn/size.c
+++ b/src/cmd/eqn/size.c
@@ -13,7 +13,7 @@
 		ps -= atoi(p+1);
 		if (szstack[nszstack-1] != 0)
 			szstack[nszstack] = ps;
-	} else if (isdigit(*p)) {
+	} else if (isdigit((uchar)*p)) {
 		if (szstack[nszstack-1] == 0)
 			printf(".nr %d \\n(.s\n", 99-nszstack);
 		else
@@ -52,7 +52,7 @@
 		gsize -= atoi(temp+1);
 		if (szstack[0] != 0)
 			szstack[0] = gsize;
-	} else  if (isdigit(temp[0])) {
+	} else  if (isdigit((uchar)temp[0])) {
 		gsize = atoi(temp);
 		szstack[0] = gsize;
 		printf(".nr 99 \\n(.s\n");
diff --git a/src/cmd/grap/input.c b/src/cmd/grap/input.c
index 1e90cb9..509fb01 100644
--- a/src/cmd/grap/input.c
+++ b/src/cmd/grap/input.c
@@ -277,9 +277,9 @@
 				ERROR "argfp underflow" FATAL;
 			popsrc();
 			goto loop;
-		} else if (c == '$' && isdigit(*srcp->sp)) {	/* $3 */
+		} else if (c == '$' && isdigit((uchar)*srcp->sp)) {	/* $3 */
 			int n = 0;
-			while (isdigit(*srcp->sp))
+			while (isdigit((uchar)*srcp->sp))
 				n = 10 * n + *srcp->sp++ - '0';
 			if (n > 0 && n <= MAXARGS)
 				pushsrc(String, argfp->argstk[n-1]);
@@ -456,11 +456,11 @@
 	for (q=ep-1; q>=p && *q!=' ' && *q!='\t' && *q!='\n'; q--)
 		;
 	for (; p < q; p++)
-		if (isprint(*p))
+		if (isprint((uchar)*p))
 			putc(*p, stderr);
 	fprintf(stderr, " >>> ");
 	for (; p < q; p++)
-		if (isprint(*p))
+		if (isprint((uchar)*p))
 			putc(*p, stderr);
 	fprintf(stderr, " <<< ");
 	while (pb >= pbuf)
diff --git a/src/cmd/grap/print.c b/src/cmd/grap/print.c
index 1ce3211..5a2e4e7 100644
--- a/src/cmd/grap/print.c
+++ b/src/cmd/grap/print.c
@@ -147,7 +147,7 @@
 			s++;
 		if (c == '\0')
 			ERROR "no name on graph statement" WARNING;
-		if (!isupper(s[0]))
+		if (!isupper((uchar)s[0]))
 			ERROR "graph name %s must be capitalized", s WARNING;
 		for (p=graphname; (c = *s) != ' ' && c != '\t' && c != '\0'; )
 			*p++ = *s++;
diff --git a/src/cmd/mk/archive.c b/src/cmd/mk/archive.c
index 07aa565..9955b3f 100644
--- a/src/cmd/mk/archive.c
+++ b/src/cmd/mk/archive.c
@@ -171,7 +171,7 @@
 				continue;
 			}
 			goto skip;
-		}else if(strings && h.name[0]=='/' && isdigit(h.name[1])){
+		}else if(strings && h.name[0]=='/' && isdigit((uchar)h.name[1])){
 			i = strtol(h.name+1, &p, 10);
 			if(*p != ' ' || i >= strlen(strings))
 				goto skip;
diff --git a/src/cmd/mk/rule.c b/src/cmd/mk/rule.c
index d73595d..8613955 100644
--- a/src/cmd/mk/rule.c
+++ b/src/cmd/mk/rule.c
@@ -83,6 +83,7 @@
 			Bprint(&bout, " prog='%s'", r->prog);
 		Bprint(&bout, "\n\ttarget=%s: %s\n", r->target, wtos(r->tail, ' '));
 		Bprint(&bout, "\trecipe@%ld='%s'\n", r->recipe, r->recipe);
+break;
 	}
 }
 
diff --git a/src/cmd/postscript/common/misc.c b/src/cmd/postscript/common/misc.c
index aca58f0..28120ea 100644
--- a/src/cmd/postscript/common/misc.c
+++ b/src/cmd/postscript/common/misc.c
@@ -4,6 +4,7 @@
  *
  */
 
+#include <u.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <ctype.h>
@@ -170,10 +171,10 @@
  *
  */
 
-    if ( ! isdigit(**str) )
+    if ( ! isdigit((uchar)**str) )
 	return(err);
 
-    for ( i = 0; isdigit(**str); *str += 1 )
+    for ( i = 0; isdigit((uchar)**str); *str += 1 )
 	i = 10 * i + **str - '0';
 
     return(i);
diff --git a/src/cmd/troff/dwbinit.c b/src/cmd/troff/dwbinit.c
index 59f74ec..9c1845b 100644
--- a/src/cmd/troff/dwbinit.c
+++ b/src/cmd/troff/dwbinit.c
@@ -73,6 +73,7 @@
  *
  */
 
+#include <u.h>
 #include <stdio.h>
 #include <ctype.h>
 #include <string.h>
@@ -169,10 +170,10 @@
     if ( (fp = fopen(DWBCONFIG, "r")) != NULL ) {
 	len = strlen(DWBENV);
 	while ( fgets(buf, sizeof(buf), fp) != NULL ) {
-	    for ( ptr = buf; isspace(*ptr); ptr++ ) ;
+	    for ( ptr = buf; isspace((uchar)*ptr); ptr++ ) ;
 	    if ( strncmp(ptr, DWBENV, len) == 0 && *(ptr+len) == '=' ) {
 		path = ptr + len + 1;
-		for ( ptr = path; !isspace(*ptr) && *ptr != ';'; ptr++ ) ;
+		for ( ptr = path; !isspace((uchar)*ptr) && *ptr != ';'; ptr++ ) ;
 		*ptr = '\0';
 		if ( home != NULL )
 		    free(home);
diff --git a/src/cmd/troff/n1.c b/src/cmd/troff/n1.c
index 7fe87b6..4c2bec4 100644
--- a/src/cmd/troff/n1.c
+++ b/src/cmd/troff/n1.c
@@ -5,6 +5,7 @@
  *	input routines, escape function calling
  */
 
+#include <u.h>
 #include "tdef.h"
 #include "fns.h"
 #include "ext.h"
@@ -1091,10 +1092,10 @@
 			continue;
 		default:
 			n = 0;
-			if (isdigit(*a)) {
+			if (isdigit((uchar)*a)) {
 				do
 					n = 10 * n + *a++ - '0';
-				while (isdigit(*a));
+				while (isdigit((uchar)*a));
 				a--;
 			} else
 				n = 9999;
diff --git a/src/cmd/troff/n8.c b/src/cmd/troff/n8.c
index ded4543..b2ab175 100644
--- a/src/cmd/troff/n8.c
+++ b/src/cmd/troff/n8.c
@@ -1,3 +1,4 @@
+#include <u.h>
 #include "tdef.h"
 #include "fns.h"
 #include "ext.h"
@@ -495,7 +496,7 @@
 	num[0] = '0';
 	*nextpat++ = ' ';	/* fill in with count later */
 	for (npat = lastpat = 0; *s != '\n' && *s != '\0'; s++) {
-		if (isdigit(*s)) {
+		if (isdigit((uchar)*s)) {
 			num[npat] = *s;
 			lastpat = npat;
 		} else {