diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c
index 25a18a5..2786854 100644
--- a/Modules/_cursesmodule.c
+++ b/Modules/_cursesmodule.c
@@ -168,9 +168,13 @@
 	WINDOW *pad;
 } PyCursesPadObject;
 
+#if 0
 staticforward PyTypeObject PyCursesScreen_Type;
+#endif
 staticforward PyTypeObject PyCursesWindow_Type;
+#if 0
 staticforward PyTypeObject PyCursesPad_Type;
+#endif
 
 #define PyCursesScreen_Check(v)	 ((v)->ob_type == &PyCursesScreen_Type)
 #define PyCursesWindow_Check(v)	 ((v)->ob_type == &PyCursesWindow_Type)
@@ -386,7 +390,7 @@
   int rtn;
   int x, y;
   int ch;
-  int attr, attr_old;
+  int attr, attr_old = 0;
   int use_xy = FALSE, use_attr = FALSE;
 
   switch (ARG_COUNT(arg)) {
@@ -436,7 +440,7 @@
   int rtn;
   int x, y;
   int ch;
-  int attr, attr_old;
+  int attr, attr_old = 0;
   int use_xy = TRUE, use_attr = FALSE;
 
   switch (ARG_COUNT(arg)) {
@@ -542,7 +546,7 @@
   int rtn;
   int x, y;
   char *str;
-  int attr, attr_old;
+  int attr, attr_old = 0;
   int use_xy = FALSE, use_attr = FALSE;
 
   switch (ARG_COUNT(arg)) {
@@ -1116,6 +1120,7 @@
 
 /* -------------------------------------------------------*/
 
+#if 0
 static PyTypeObject PyCursesScreen_Type = {
 	PyObject_HEAD_INIT(&PyType_Type)
 	0,			/*ob_size*/
@@ -1134,6 +1139,7 @@
 	0,			/*tp_as_mapping*/
 	0,			/*tp_hash*/
 };
+#endif
 
 static PyTypeObject PyCursesWindow_Type = {
 	PyObject_HEAD_INIT(&PyType_Type)
@@ -1154,6 +1160,7 @@
 	0,			/*tp_hash*/
 };
 
+#if 0
 static PyTypeObject PyCursesPad_Type = {
 	PyObject_HEAD_INIT(&PyType_Type)
 	0,			/*ob_size*/
@@ -1172,6 +1179,7 @@
 	0,			/*tp_as_mapping*/
 	0,			/*tp_hash*/
 };
+#endif
 
 
 /* -------------------------------------------------------*/
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
index 062d746..10d9f9f 100644
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -1051,7 +1051,7 @@
 {
   TkttObject *v = (TkttObject *) self;
 
-  fprintf(fp, "<tktimertoken at 0x%x%s>", v,
+  fprintf(fp, "<tktimertoken at 0x%lx%s>", (long)v,
     v->func == NULL ? ", handler deleted" : "");
   return 0;
 }
@@ -1139,6 +1139,7 @@
   quitMainLoop = 0;
   while (Tk_GetNumMainWindows() > threshold && !quitMainLoop && !errorInCmd)
     {
+	    /* XXX Ought to check for other signals! */
       if (PyOS_InterruptOccurred ())
 	{
 	  PyErr_SetNone (PyExc_KeyboardInterrupt);
diff --git a/Modules/almodule.c b/Modules/almodule.c
index 52d3bad..6972e82 100644
--- a/Modules/almodule.c
+++ b/Modules/almodule.c
@@ -366,7 +366,6 @@
 	portobject *self;
 	object *args;
 {
-	long count;
 	char *buf;
 	int size, width;
 	ALconfig c;
@@ -623,7 +622,6 @@
 	long *PVbuffer;
 	long PVdummy[2];
 	object *v;
-	object *w;
 
 	if (!getlongarg (args, &device))
 		return NULL;
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index 2657528..19ffe47 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -64,11 +64,15 @@
 
 /* Forward */
 static object *newarrayobject PROTO((int, struct arraydescr *));
+#if 0
 static int getarraysize PROTO((object *));
+#endif
 static object *getarrayitem PROTO((object *, int));
 static int setarrayitem PROTO((object *, int, object *));
+#if 0
 static int insarrayitem PROTO((object *, int, object *));
 static int addarrayitem PROTO((object *, object *));
+#endif
 
 static object *
 c_getitem(ap, i)
@@ -278,6 +282,7 @@
 	return (object *) op;
 }
 
+#if 0
 static int
 getarraysize(op)
 	object *op;
@@ -288,6 +293,7 @@
 	}
 	return ((arrayobject *)op) -> ob_size;
 }
+#endif
 
 static object *
 getarrayitem(op, i)
@@ -338,6 +344,7 @@
 	return (*self->ob_descr->setitem)(self, where, v);
 }
 
+#if 0
 static int
 insarrayitem(op, where, newitem)
 	object *op;
@@ -363,6 +370,7 @@
 	return ins1((arrayobject *)op,
 		(int) ((arrayobject *)op)->ob_size, newitem);
 }
+#endif
 
 /* Methods */
 
diff --git a/Modules/audioop.c b/Modules/audioop.c
index e4c37e6..a1b3e25 100644
--- a/Modules/audioop.c
+++ b/Modules/audioop.c
@@ -175,7 +175,7 @@
     object *args;
 {
     signed char *cp;
-    int len, size, val;
+    int len, size, val = 0;
     int i;
 
     if ( !getargs(args, "(s#ii)", &cp, &len, &size, &i) )
@@ -200,7 +200,7 @@
     object *args;
 {
     signed char *cp;
-    int len, size, val;
+    int len, size, val = 0;
     int i;
     int max = 0;
 
@@ -226,7 +226,7 @@
 	object *args;
 {
 	signed char *cp;
-	int len, size, val;
+	int len, size, val = 0;
 	int i;
 	int min = 0x7fffffff, max = -0x7fffffff;
 
@@ -252,7 +252,7 @@
     object *args;
 {
     signed char *cp;
-    int len, size, val;
+    int len, size, val = 0;
     int i;
     float avg = 0.0;
 
@@ -281,7 +281,7 @@
     object *args;
 {
     signed char *cp;
-    int len, size, val;
+    int len, size, val = 0;
     int i;
     float sum_squares = 0.0;
 
@@ -493,7 +493,7 @@
     object *args;
 {
     signed char *cp;
-    int len, size, val, prevval, prevextremevalid = 0, prevextreme;
+    int len, size, val = 0, prevval = 0, prevextremevalid = 0, prevextreme = 0;
     int i;
     float avg = 0.0;
     int diff, prevdiff, extremediff, nextreme = 0;
@@ -551,7 +551,7 @@
     object *args;
 {
     signed char *cp;
-    int len, size, val, prevval, prevextremevalid = 0, prevextreme;
+    int len, size, val = 0, prevval = 0, prevextremevalid = 0, prevextreme = 0;
     int i;
     int max = 0;
     int diff, prevdiff, extremediff;
@@ -605,7 +605,7 @@
     object *args;
 {
     signed char *cp;
-    int len, size, val;
+    int len, size, val = 0;
     int i;
     int prevval, ncross;
 
@@ -634,7 +634,7 @@
     object *args;
 {
     signed char *cp, *ncp;
-    int len, size, val;
+    int len, size, val = 0;
     double factor, fval, maxval;
     object *rv;
     int i;
@@ -677,7 +677,7 @@
     object *args;
 {
     signed char *cp, *ncp;
-    int len, size, val1, val2;
+    int len, size, val1 = 0, val2 = 0;
     double fac1, fac2, fval, maxval;
     object *rv;
     int i;
@@ -723,7 +723,7 @@
     object *args;
 {
     signed char *cp, *ncp;
-    int len, size, val1, val2, val;
+    int len, size, val1, val2, val = 0;
     double fac1, fac2, fval, maxval;
     object *rv;
     int i;
@@ -777,7 +777,7 @@
     object *args;
 {
     signed char *cp1, *cp2, *ncp;
-    int len1, len2, size, val1, val2;
+    int len1, len2, size, val1 = 0, val2 = 0;
     object *rv;
     int i;
 
@@ -823,7 +823,7 @@
     object *args;
 {
     signed char *cp, *ncp;
-    int len, size, val;
+    int len, size, val = 0;
     object *rv;
     int i;
     int bias;
@@ -862,7 +862,7 @@
 {
     signed char *cp;
     unsigned char *ncp;
-    int len, size, val;
+    int len, size, val = 0;
     object *rv;
     int i, j;
 
@@ -901,7 +901,7 @@
 {
     signed char *cp;
     unsigned char *ncp;
-    int len, size, size2, val;
+    int len, size, size2, val = 0;
     object *rv;
     int i, j;
 
@@ -939,7 +939,7 @@
 {
     signed char *cp;
     unsigned char *ncp;
-    int len, size, val;
+    int len, size, val = 0;
     object *rv;
     int i;
 
@@ -1011,9 +1011,9 @@
 {
     signed char *cp;
     signed char *ncp;
-    int len, size, val, step, valpred, delta, index, sign, vpdiff, diff;
+    int len, size, val = 0, step, valpred, delta, index, sign, vpdiff, diff;
     object *rv, *state, *str;
-    int i, outputbuffer, bufferstep;
+    int i, outputbuffer = 0, bufferstep;
 
     if ( !getargs(args, "(s#iO)",
 		  &cp, &len, &size, &state) )
@@ -1123,7 +1123,7 @@
     signed char *ncp;
     int len, size, valpred, step, delta, index, sign, vpdiff;
     object *rv, *str, *state;
-    int i, inputbuffer, bufferstep;
+    int i, inputbuffer = 0, bufferstep;
 
     if ( !getargs(args, "(s#iO)",
 		  &cp, &len, &size, &state) )
diff --git a/Modules/cdmodule.c b/Modules/cdmodule.c
index 63c90b8..a773e99 100644
--- a/Modules/cdmodule.c
+++ b/Modules/cdmodule.c
@@ -532,7 +532,7 @@
 	CDDATATYPES type;
 	void *data;
 {
-	object *result, *args, *v;
+	object *result, *args, *v = NULL;
 	char *p;
 	int i;
 	cdparserobject *self;
diff --git a/Modules/clmodule.c b/Modules/clmodule.c
index 64b8a47..02f1ceb 100644
--- a/Modules/clmodule.c
+++ b/Modules/clmodule.c
@@ -90,7 +90,6 @@
 param_type_is_float(clobject *self, int param)
 {
 	int bufferlength;
-	int ret;
 
 	if (self->ob_paramtypes == NULL) {
 		error_handler_called = 0;
diff --git a/Modules/cmathmodule.c b/Modules/cmathmodule.c
index 2f22bfc..4e1715c 100644
--- a/Modules/cmathmodule.c
+++ b/Modules/cmathmodule.c
@@ -33,8 +33,10 @@
 static Py_complex c_half = {0.5, 0.};
 static Py_complex c_i = {0., 1.};
 static Py_complex c_i2 = {0., 0.5};
+#if 0
 static Py_complex c_mi = {0., -1.};
 static Py_complex c_pi2 = {M_PI/2., 0.};
+#endif
 
 /* forward declarations */
 staticforward Py_complex c_log();
diff --git a/Modules/cryptmodule.c b/Modules/cryptmodule.c
index 13c79ba..84f05b1 100644
--- a/Modules/cryptmodule.c
+++ b/Modules/cryptmodule.c
@@ -15,7 +15,6 @@
 	char *word, *salt; 
 	extern char * crypt();
 
-	struct passwd *p;
 	if (!getargs(args, "(ss)", &word, &salt)) {
 		return NULL;
 	}
diff --git a/Modules/dbmmodule.c b/Modules/dbmmodule.c
index 85934f2..26449c2 100644
--- a/Modules/dbmmodule.c
+++ b/Modules/dbmmodule.c
@@ -105,7 +105,6 @@
 	dbmobject *dp;
 	register object *key;
 {
-	object *v;
 	datum drec, krec;
 	
 	if (!getargs(key, "s#", &krec.dptr, &krec.dsize) )
diff --git a/Modules/fcntlmodule.c b/Modules/fcntlmodule.c
index ae6bcdd..d08123a 100644
--- a/Modules/fcntlmodule.c
+++ b/Modules/fcntlmodule.c
@@ -34,6 +34,14 @@
 #include "allobjects.h"
 #include "modsupport.h"
 
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#ifdef HAVE_SYS_FILE_H
+#include <sys/file.h>
+#endif
+
 #include <fcntl.h>
 
 
@@ -147,7 +155,6 @@
 	int fd;
 	int code;
 	int ret;
-	FILE *f;
 
 	if (!getargs(args, "(ii)", &fd, &code))
 		return NULL;
@@ -195,7 +202,6 @@
 	object *args;
 {
 	int fd, code, len = 0, start = 0, whence = 0, ret;
-	FILE *f;
 
 	if (!PyArg_ParseTuple(args, "ii|iii", &fd, &code, &len, 
 			       &start, &whence))
diff --git a/Modules/fmmodule.c b/Modules/fmmodule.c
index 01cf268..2f6031a 100644
--- a/Modules/fmmodule.c
+++ b/Modules/fmmodule.c
@@ -134,7 +134,6 @@
 	object *args;
 {
 	fmfontinfo info;
-	object *v;
 	if (!getnoarg(args))
 		return NULL;
 	if (fmgetfontinfo(self->fh_fh, &info) < 0) {
diff --git a/Modules/imageop.c b/Modules/imageop.c
index 90e4f54..686d0c6 100644
--- a/Modules/imageop.c
+++ b/Modules/imageop.c
@@ -458,7 +458,7 @@
     int x, y, len, nlen;
     unsigned char *cp, *ncp;
     object *rv;
-    int i, pos, value, nvalue;
+    int i, pos, value = 0, nvalue;
     
     if ( !getargs(args, "(s#ii)", &cp, &len, &x, &y) )
       return 0;
@@ -495,7 +495,7 @@
     int x, y, len, nlen;
     unsigned char *cp, *ncp;
     object *rv;
-    int i, pos, value, nvalue;
+    int i, pos, value = 0, nvalue;
     
     if ( !getargs(args, "(s#ii)", &cp, &len, &x, &y) )
       return 0;
diff --git a/Modules/imgfile.c b/Modules/imgfile.c
index 1c42b35..76f123c 100644
--- a/Modules/imgfile.c
+++ b/Modules/imgfile.c
@@ -61,7 +61,8 @@
 
 /* The error handler */
 
-static imgfile_error(str)
+static void
+imgfile_error(str)
     char *str;
 {
     err_setstr(ImgfileError, str);
@@ -199,7 +200,7 @@
 static long *glob_datap;
 static int glob_width, glob_z, glob_ysize;
 
-static
+static void
 xs_get(buf, y)
     short *buf;
     int y;
@@ -210,7 +211,7 @@
       getrow(glob_image, buf, y, glob_z);
 }
 
-static
+static void
 xs_put_c(buf, y)
     short *buf;
     int y;
@@ -222,7 +223,7 @@
       *datap++ = (*buf++) & 0xff;
 }
 
-static
+static void
 xs_put_0(buf, y)
     short *buf;
     int y;
@@ -233,7 +234,7 @@
     while ( width-- )
       *datap++ = (*buf++) & 0xff;
 }
-static
+static void
 xs_put_12(buf, y)
     short *buf;
     int y;
@@ -291,7 +292,7 @@
     char *filter;
     double blur;
     int extended;
-    int fmode;
+    int fmode = 0;
     int yfirst, ylast, ystep;
 
     /*
diff --git a/Modules/main.c b/Modules/main.c
index 6027d28..2a8bbde 100644
--- a/Modules/main.c
+++ b/Modules/main.c
@@ -174,7 +174,7 @@
 		filename = argv[optind];
 
 	if (Py_VerboseFlag ||
-	    command == NULL && filename == NULL && isatty((int)fileno(fp)))
+	    (command == NULL && filename == NULL && isatty((int)fileno(fp))))
 		fprintf(stderr, "Python %s\n%s\n",
 			Py_GetVersion(), Py_GetCopyright());
 	
@@ -222,7 +222,7 @@
 		sts = PyRun_AnyFile(stdin, "<stdin>") != 0;
 
 	Py_Exit(sts);
-	/*NOTREACHED*/
+	return 0; /* Make gcc -Wall happy */
 }
 
 
diff --git a/Modules/parsermodule.c b/Modules/parsermodule.c
index d2bc236..7a23d8d 100644
--- a/Modules/parsermodule.c
+++ b/Modules/parsermodule.c
@@ -566,7 +566,7 @@
     PyObject *tuple = 0;
     PyObject *temp = 0;
     int ok;
-    int start_sym;
+    int start_sym = 0;
 
     if (!PyArg_ParseTuple(args, "O:tuple2ast", &tuple))
 	return (0);
@@ -1829,7 +1829,7 @@
 	      break;
 	}
     }
-    else if (res = validate_numnodes(tree, 2, "comp_op")) {
+    else if ((res = validate_numnodes(tree, 2, "comp_op")) != 0) {
 	res = (validate_ntype(CHILD(tree, 0), NAME)
 	       && validate_ntype(CHILD(tree, 1), NAME)
 	       && (((strcmp(STR(CHILD(tree, 0)), "is") == 0)
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index f8cc298..119e871 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -52,6 +52,10 @@
 #include <sys/wait.h>		/* For WNOHANG */
 #endif
 
+#ifdef HAVE_SIGNAL_H
+#include <signal.h>
+#endif
+
 #include "mytime.h"		/* For clock_t on some systems */
 
 #ifdef HAVE_FCNTL_H
@@ -574,7 +578,7 @@
 	while ((ep = readdir(dirp)) != NULL) {
 		if (ep->d_name[0] == '.' &&
 		    (NAMLEN(ep) == 1 ||
-		     ep->d_name[1] == '.' && NAMLEN(ep) == 2))
+		     (ep->d_name[1] == '.' && NAMLEN(ep) == 2)))
 			continue;
 		v = newsizedstringobject(ep->d_name, NAMLEN(ep));
 		if (v == NULL) {
@@ -709,7 +713,6 @@
 	object *args;
 {
 	struct utsname u;
-	object *v;
 	int res;
 	if (!getnoarg(args))
 		return NULL;
@@ -776,7 +779,7 @@
 	if (!getintarg(args, &sts))
 		return NULL;
 	_exit(sts);
-	/* NOTREACHED */
+	return NULL; /* Make gcc -Wall happy */
 }
 
 #ifdef HAVE_EXECV
diff --git a/Modules/regexmodule.c b/Modules/regexmodule.c
index 342d771..c9f9781 100644
--- a/Modules/regexmodule.c
+++ b/Modules/regexmodule.c
@@ -40,6 +40,8 @@
 
 #include "Python.h"
 
+#include <ctype.h>
+
 #include "regexpr.h"
 
 static PyObject *RegexError;	/* Exception */	
diff --git a/Modules/regexpr.c b/Modules/regexpr.c
index 4f497f1..9f03e7c 100644
--- a/Modules/regexpr.c
+++ b/Modules/regexpr.c
@@ -281,10 +281,10 @@
 regexp_t bufp;
 {
   int a, pos, op, current_level, level, opcode;
-  int pattern_offset, alloc;
+  int pattern_offset = 0, alloc;
   int starts[NUM_LEVELS * MAX_NESTING], starts_base;
   int future_jumps[MAX_NESTING], num_jumps;
-  unsigned char ch;
+  unsigned char ch = '\0';
   char *pattern, *translate;
   int next_register, paren_depth, num_open_registers, open_registers[RE_NREGS];
   int beginning_context;
diff --git a/Modules/rgbimgmodule.c b/Modules/rgbimgmodule.c
index 713deae..ad45c16 100644
--- a/Modules/rgbimgmodule.c
+++ b/Modules/rgbimgmodule.c
@@ -204,7 +204,7 @@
 /*unsigned*/ long *tab;
 int len;
 {
-    int r;
+    int r = 0;
 
     while(len) {
 	r = putlong(outf,*tab++);
diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index c53adc1..3cbd4e8 100644
--- a/Modules/selectmodule.c
+++ b/Modules/selectmodule.c
@@ -39,6 +39,10 @@
 #include "modsupport.h"
 #include "ceval.h"
 
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
 #include <sys/types.h>
 
 #ifdef MS_WINDOWS
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index 48eb03d..9e7f239 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -34,6 +34,10 @@
 #include "Python.h"
 #include "intrcheck.h"
 
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
 #include <signal.h>
 
 #ifndef SIG_ERR
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index b31ea04..3e510fe 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -85,6 +85,10 @@
 
 #include "Python.h"
 
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
 #include <sys/types.h>
 #include "mytime.h"
 
@@ -259,6 +263,7 @@
 	int errnop;
 #endif /* HAVE_GETHOSTBYNAME_R */
 
+	memset((void *) addr_ret, '\0', sizeof(*addr_ret));
 	if (name[0] == '\0') {
 		addr_ret->sin_addr.s_addr = INADDR_ANY;
 		return 4;
diff --git a/Modules/stropmodule.c b/Modules/stropmodule.c
index 7012a4f..3dc0c52 100644
--- a/Modules/stropmodule.c
+++ b/Modules/stropmodule.c
@@ -538,7 +538,7 @@
 	if (args != NULL && is_tupleobject(args)) {
 		if (!getargs(args, "(si)", &s, &base))
 			return NULL;
-		if (base != 0 && base < 2 || base > 36) {
+		if ((base != 0 && base < 2) || base > 36) {
 			err_setstr(ValueError, "invalid base for atoi()");
 			return NULL;
 		}
@@ -585,7 +585,7 @@
 	if (args != NULL && is_tupleobject(args)) {
 		if (!getargs(args, "(si)", &s, &base))
 			return NULL;
-		if (base != 0 && base < 2 || base > 36) {
+		if ((base != 0 && base < 2) || base > 36) {
 			err_setstr(ValueError, "invalid base for atol()");
 			return NULL;
 		}
@@ -701,7 +701,7 @@
 		trans_table[i]=Py_CHARMASK(table[i]);
 	if (delete!=NULL) {
 		for(i=0; i<dellen; i++) 
-			trans_table[delete[i]]=-1;
+			trans_table[(int)delete[i]]=-1;
 	}
 
 	result = PyString_FromStringAndSize((char *)NULL, inlen);
diff --git a/Modules/syslogmodule.c b/Modules/syslogmodule.c
index 44937fb..2ecf76d 100644
--- a/Modules/syslogmodule.c
+++ b/Modules/syslogmodule.c
@@ -71,7 +71,7 @@
      PyObject * self;
      PyObject * args;
 {
-  char *message, *s;
+  char *message;
   int   priority = LOG_INFO | LOG_USER;
 
   if (!PyArg_ParseTuple(args, "is;[priority,] message string",
diff --git a/Modules/threadmodule.c b/Modules/threadmodule.c
index 0fb7e38..38394a4 100644
--- a/Modules/threadmodule.c
+++ b/Modules/threadmodule.c
@@ -313,7 +313,7 @@
 void
 initthread()
 {
-	object *m, *d, *x;
+	object *m, *d;
 
 	/* Create the module and add the functions */
 	m = initmodule("thread", thread_methods);
diff --git a/Modules/xxmodule.c b/Modules/xxmodule.c
index 7c1cb67..e21ba9c 100644
--- a/Modules/xxmodule.c
+++ b/Modules/xxmodule.c
@@ -175,7 +175,6 @@
 	PyObject *self; /* Not used */
 	PyObject *args;
 {
-	int i, j;
 	XxoObject *rv;
 	
 	if (!PyArg_ParseTuple(args, ""))
