diff --git a/src/cpp.c b/src/cpp.c
index 108c52f89aac5a5cab3060db3007c0600208a5ad..639798556d8b9df8b5c79f23f3bfec268d2fa75e 100644
--- a/src/cpp.c
+++ b/src/cpp.c
@@ -261,13 +261,14 @@ static void simple_add_define(struct cpp *this,
   } while(0)
 
 #define SKIPWHITE() do {					\
-    if(!isspace(data[pos])) break;				\
+    if(!isspace(((unsigned char *)data)[pos])) break;				\
     if(data[pos]=='\n') { PUTNL(); this->current_line++; }	\
     pos++;							\
   } while(0)
 
 #define SKIPSPACE() \
-  do { while(isspace(data[pos]) && data[pos]!='\n') pos++; }while (0)
+  do { while(isspace(((unsigned char *)data)[pos]) && data[pos]!='\n') pos++; \
+  } while (0)
 
 #define SKIPCOMMENT()	do{				\
   	pos++;						\
diff --git a/src/lex.c b/src/lex.c
index 5fb4368e3896aa655864a696eedf458c4c1e40a8..9f75ab5257da8f46ee63f486d850b5ed87e8eaa3 100644
--- a/src/lex.c
+++ b/src/lex.c
@@ -4,7 +4,7 @@
 ||| See the files COPYING and DISCLAIMER for more information.
 \*/
 #include "global.h"
-RCSID("$Id: lex.c,v 1.37 1998/01/13 22:56:45 hubbe Exp $");
+RCSID("$Id: lex.c,v 1.38 1998/01/16 22:33:04 grubba Exp $");
 #include "language.h"
 #include "array.h"
 #include "lex.h"
@@ -296,7 +296,7 @@ char *get_token_name(int n)
 
 struct lex lex;
 
-#define LOOK() (*(lex.pos))
+#define LOOK() (*((unsigned char *)lex.pos))
 #define GETC() (*(lex.pos++))
 #define GOBBLE(c) (LOOK()==c?(lex.pos++,1):0)
 #define SKIPSPACE() do { while(ISSPACE(LOOK()) && LOOK()!='\n') lex.pos++; }while(0)
diff --git a/src/main.c b/src/main.c
index 4433abbd1aa1790a89519d0433cdf882d6a3cc59..d4660242d34b19abbfa326dee53d819e97014d15 100644
--- a/src/main.c
+++ b/src/main.c
@@ -4,7 +4,7 @@
 ||| See the files COPYING and DISCLAIMER for more information.
 \*/
 #include "global.h"
-RCSID("$Id: main.c,v 1.33 1998/01/15 05:59:42 hubbe Exp $");
+RCSID("$Id: main.c,v 1.34 1998/01/16 22:33:06 grubba Exp $");
 #include "fdlib.h"
 #include "backend.h"
 #include "module.h"
@@ -58,7 +58,7 @@ struct callback *add_post_master_callback(callback_func call,
 }
 
 
-void main(int argc, char **argv)
+int main(int argc, char **argv)
 {
   JMP_BUF back;
   int e, num;
@@ -287,6 +287,9 @@ void main(int argc, char **argv)
 
   push_int(0);
   f_exit(1);
+
+  /* NOT REACHED */
+  return(-1);	/* To avoid warnings. */
 }
 
 
diff --git a/src/modules/Image/encodings/gif.c b/src/modules/Image/encodings/gif.c
index ded8eb6cd5ed19a3d0b61940c8d14678bf85e81f..e114270a4fc0f1beb196e223f18eca5be17a7fd0 100644
--- a/src/modules/Image/encodings/gif.c
+++ b/src/modules/Image/encodings/gif.c
@@ -1,9 +1,9 @@
-/* $Id: gif.c,v 1.25 1998/01/16 22:09:16 grubba Exp $ */
+/* $Id: gif.c,v 1.26 1998/01/16 22:33:12 grubba Exp $ */
 
 /*
 **! module Image
 **! note
-**!	$Id: gif.c,v 1.25 1998/01/16 22:09:16 grubba Exp $
+**!	$Id: gif.c,v 1.26 1998/01/16 22:33:12 grubba Exp $
 **! submodule GIF
 **!
 **!	This submodule keep the GIF encode/decode capabilities
@@ -31,7 +31,7 @@
 
 #include "stralloc.h"
 #include "global.h"
-RCSID("$Id: gif.c,v 1.25 1998/01/16 22:09:16 grubba Exp $");
+RCSID("$Id: gif.c,v 1.26 1998/01/16 22:33:12 grubba Exp $");
 #include "pike_macros.h"
 #include "object.h"
 #include "constants.h"
@@ -1059,7 +1059,7 @@ void _image_gif_encode(INT32 args,int fs)
 	   get_storage(alphaobj=sp[arg-args].u.object,image_program)))
       {
 	 alphaobj->refs++;
-	 if (args-arg>1)
+	 if (args-arg>1) {
 	    if (args-arg<4 ||
 		sp[1+arg-args].type!=T_INT ||
 		sp[2+arg-args].type!=T_INT ||
@@ -1072,6 +1072,7 @@ void _image_gif_encode(INT32 args,int fs)
 	       ac.b=sp[3+arg-args].u.integer;
 	       alphaentry=1;
 	    }
+	 }
 	 trans=1;
 	 if (!nct) tridx=255;
 	 else tridx=image_colortable_size(nct);
diff --git a/src/modules/Regexp/pike_regexp.c b/src/modules/Regexp/pike_regexp.c
index 466d3a0c296046da726d9e9dda671142fbae1086..c048a20b8ee8cd8b23cffccfa6b5fa8e802a2e74 100644
--- a/src/modules/Regexp/pike_regexp.c
+++ b/src/modules/Regexp/pike_regexp.c
@@ -915,14 +915,16 @@ char           *prog;
 	    if (reginput == regbol)
 		break;
 	    if (*reginput == '\0' ||
-	       ISWORDPART( *(reginput-1) ) || !ISWORDPART( *reginput ) )
+		ISWORDPART( *((unsigned char *)reginput-1) ) ||
+		!ISWORDPART( *((unsigned char *)reginput) ) )
 		return (0);
 	    break;
 	case WORDEND:
 	    if (*reginput == '\0')
 		break;
 	    if ( reginput == regbol ||
-	       !ISWORDPART( *(reginput-1) ) || ISWORDPART( *reginput ) )
+		 !ISWORDPART( *((unsigned char *)reginput-1) ) ||
+		 ISWORDPART( *((unsigned char *)reginput) ) )
 		return (0);
 	    break;
 	case EXACTLY:{
diff --git a/src/modules/spider/spider.c b/src/modules/spider/spider.c
index 5dfae9930acc41faf5b3a115a0bc710a8ced6bc8..0f37b6684435b4b5beaa011e09d938f8a7dca0c6 100644
--- a/src/modules/spider/spider.c
+++ b/src/modules/spider/spider.c
@@ -40,7 +40,7 @@
 #include "threads.h"
 #include "operators.h"
 
-RCSID("$Id: spider.c,v 1.49 1997/12/11 14:30:03 per Exp $");
+RCSID("$Id: spider.c,v 1.50 1998/01/16 22:33:15 grubba Exp $");
 
 #ifdef HAVE_PWD_H
 #include <pwd.h>
@@ -435,7 +435,7 @@ void f_set_start_quote(INT32 args)
        j=i;\
      } }while(0)
 
-#define SKIP_SPACE()  while (i<len && ISSPACE(s[i])) i++
+#define SKIP_SPACE()  while (i<len && ISSPACE(((unsigned char *)s)[i])) i++
 #define STARTQUOTE(C) do{PUSH();j=i+1;inquote = 1;endquote=(C);}while(0)
 #define ENDQUOTE() do{PUSH();j++;inquote=0;endquote=0;}while(0)       
 
@@ -480,11 +480,12 @@ int extract_word(char *s, int i, int len)
 	  STARTQUOTE(end_quote_character);
       }
       else if(endquote == end_quote_character) {
-	if(s[i] == endquote)
+	if(s[i] == endquote) {
 	  if(!--inquote)
 	    ENDQUOTE();
 	  else if(s[i] == start_quote_character) 
 	    inquote++;
+	}
       }
       break;
     }
@@ -623,12 +624,12 @@ void do_html_parse(struct pike_string *ss,
       int n;
       /* skip all spaces */
       i++;
-      for (n=i;n<len && ISSPACE(s[n]); n++);
+      for (n=i;n<len && ISSPACE(((unsigned char *)s)[n]); n++);
       /* Find tag name
        *
        * Ought to handle the <"tag"> and <'tag'> cases too.
        */
-      for (j=n; j<len && s[j]!='>' && !ISSPACE(s[j]); j++);
+      for (j=n; j<len && s[j]!='>' && !ISSPACE(((unsigned char *)s)[j]); j++);
 
       if (j==len) break; /* end of string */
 
@@ -837,7 +838,7 @@ void do_html_parse_lines(struct pike_string *ss,
     {
       /* skip all spaces */
       i++;
-      for (j=i; j<len && s[j]!='>' && !isspace(s[j]); j++);
+      for (j=i; j<len && s[j]!='>' && !isspace(((unsigned char *)s)[j]); j++);
 
       if (j==len) break; /* end of string */
 
diff --git a/src/pike_types.c b/src/pike_types.c
index 005eccad0e5e65d6e1999aae53a882f16f9798bd..ffc041098081be6acd1701744e6344d20989442c 100644
--- a/src/pike_types.c
+++ b/src/pike_types.c
@@ -4,7 +4,7 @@
 ||| See the files COPYING and DISCLAIMER for more information.
 \*/
 #include "global.h"
-RCSID("$Id: pike_types.c,v 1.27 1998/01/13 22:56:48 hubbe Exp $");
+RCSID("$Id: pike_types.c,v 1.28 1998/01/16 22:33:07 grubba Exp $");
 #include <ctype.h>
 #include "svalue.h"
 #include "pike_types.h"
@@ -378,7 +378,7 @@ static void internal_parse_typeA(char **_s)
 
 static void internal_parse_typeB(char **s)
 {
-  while(ISSPACE(**s)) ++*s;
+  while(ISSPACE(**((unsigned char **)s))) ++*s;
   switch(**s)
   {
   case '!':
@@ -390,7 +390,7 @@ static void internal_parse_typeB(char **s)
   case '(':
     ++*s;
     internal_parse_typeB(s);
-    while(ISSPACE(**s)) ++*s;
+    while(ISSPACE(**((unsigned char **)s))) ++*s;
     if(**s != ')') error("Expecting ')'.\n");
     break;
     
@@ -404,12 +404,12 @@ static void internal_parse_typeCC(char **s)
 {
   internal_parse_typeB(s);
 
-  while(ISSPACE(**s)) ++*s;
+  while(ISSPACE(**((unsigned char **)s))) ++*s;
   
   while(**s == '*')
   {
     ++*s;
-    while(ISSPACE(**s)) ++*s;
+    while(ISSPACE(**((unsigned char **)s))) ++*s;
     push_type(T_ARRAY);
   }
 }
@@ -422,7 +422,7 @@ static void internal_parse_typeC(char **s)
   internal_parse_typeCC(s);
   type_stack_reverse();
 
-  while(ISSPACE(**s)) ++*s;
+  while(ISSPACE(**((unsigned char **)s))) ++*s;
   
   if(**s == '&')
   {
@@ -441,7 +441,7 @@ static void internal_parse_type(char **s)
 {
   internal_parse_typeC(s);
 
-  while(ISSPACE(**s)) ++*s;
+  while(ISSPACE(**((unsigned char **)s))) ++*s;
   
   while(**s == '|')
   {
diff --git a/src/signal_handler.c b/src/signal_handler.c
index 265e5df035a75fd313b8fb568843a4682861bfe0..e5a9d615d974ca0495e0db01ae0b171ac7b53837 100644
--- a/src/signal_handler.c
+++ b/src/signal_handler.c
@@ -259,7 +259,7 @@ static RETSIGTYPE receive_signal(int signum)
 #endif
 #endif
 #endif
-    fprintf(stderr,"pid %d died with code %d\n",pid,status);
+    fprintf(stderr,"pid %d died with code %d\n",(int)pid,status);
 
     if(pid>0)
     {