Changes for THINK C 4.0.
diff --git a/Include/pgenheaders.h b/Include/pgenheaders.h
index 95fdbf2..b53fdf2 100644
--- a/Include/pgenheaders.h
+++ b/Include/pgenheaders.h
@@ -2,13 +2,24 @@
    This is a precompiled header for THINK C. */
 
 #include <stdio.h>
+#include <string.h>
 
 #ifdef THINK_C
+/* #define THINK_C_3_0			/*** TURN THIS ON FOR THINK C 3.0 ****/
 #define label label_
-#include <proto.h>
 #undef label
 #endif
 
+#ifdef THINK_C_3_0
+#include <proto.h>
+#endif
+
+#ifdef THINK_C
+#ifndef THINK_C_3_0
+#include <stdlib.h>
+#endif
+#endif
+
 #include "PROTO.h"
 #include "malloc.h"
 
diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c
index ad6f63a..6bb57ef 100644
--- a/Parser/tokenizer.c
+++ b/Parser/tokenizer.c
@@ -358,8 +358,8 @@
 		   This is also recognized by vi, when it occurs near the
 		   beginning or end of the file.  (Will vi never die...?) */
 		int x;
-		/* XXX The case to (unsigned char *) is needed by THINK C */
-		if (sscanf((unsigned char *)tok->cur,
+		/* XXX The case to (unsigned char *) is needed by THINK C 3.0 */
+		if (sscanf(/*(unsigned char *)*/tok->cur,
 				" vi:set tabsize=%d:", &x) == 1 &&
 						x >= 1 && x <= 40) {
 			fprintf(stderr, "# vi:set tabsize=%d:\n", x);