Nuke all remaining occurrences of Py_PROTO and Py_FPROTO.
diff --git a/Include/cStringIO.h b/Include/cStringIO.h
index 7389432..cc62c90 100644
--- a/Include/cStringIO.h
+++ b/Include/cStringIO.h
@@ -76,22 +76,22 @@
 static struct PycStringIO_CAPI {
   
   /* Read a string.  If the last argument is -1, the remainder will be read. */
-  int(*cread) Py_FPROTO((PyObject *, char **, int));
+  int(*cread)(PyObject *, char **, int);
 
   /* Read a line */
-  int(*creadline) Py_FPROTO((PyObject *, char **));
+  int(*creadline)(PyObject *, char **);
 
   /* Write a string */
-  int(*cwrite) Py_FPROTO((PyObject *, char *, int));
+  int(*cwrite)(PyObject *, char *, int);
 
   /* Get the cStringIO object as a Python string */
-  PyObject *(*cgetvalue) Py_FPROTO((PyObject *));
+  PyObject *(*cgetvalue)(PyObject *);
 
   /* Create a new output object */
-  PyObject *(*NewOutput) Py_FPROTO((int));
+  PyObject *(*NewOutput)(int);
 
   /* Create an input object from a Python string */
-  PyObject *(*NewInput) Py_FPROTO((PyObject *));
+  PyObject *(*NewInput)(PyObject *);
 
   /* The Python types for cStringIO input and output objects.
      Note that you can do input on an output object.
diff --git a/Include/methodobject.h b/Include/methodobject.h
index ace58d3..bb9d964 100644
--- a/Include/methodobject.h
+++ b/Include/methodobject.h
@@ -20,9 +20,9 @@
 
 #define PyCFunction_Check(op) ((op)->ob_type == &PyCFunction_Type)
 
-typedef PyObject *(*PyCFunction) Py_FPROTO((PyObject *, PyObject *));
-typedef PyObject *(*PyCFunctionWithKeywords)
-	Py_FPROTO((PyObject *, PyObject *, PyObject *));
+typedef PyObject *(*PyCFunction)(PyObject *, PyObject *);
+typedef PyObject *(*PyCFunctionWithKeywords)(PyObject *, PyObject *,
+					     PyObject *);
 
 extern DL_IMPORT(PyCFunction) PyCFunction_GetFunction(PyObject *);
 extern DL_IMPORT(PyObject *) PyCFunction_GetSelf(PyObject *);
diff --git a/Include/mymalloc.h b/Include/mymalloc.h
index 3d6ab06..fa2f8f8 100644
--- a/Include/mymalloc.h
+++ b/Include/mymalloc.h
@@ -90,9 +90,9 @@
 #ifndef PyCore_MALLOC_PROTO
 #undef PyCore_REALLOC_PROTO
 #undef PyCore_FREE_PROTO
-#define PyCore_MALLOC_PROTO     Py_PROTO((size_t))
-#define PyCore_REALLOC_PROTO    Py_PROTO((ANY *, size_t))
-#define PyCore_FREE_PROTO       Py_PROTO((ANY *))
+#define PyCore_MALLOC_PROTO    (size_t)
+#define PyCore_REALLOC_PROTO   (ANY *, size_t)
+#define PyCore_FREE_PROTO      (ANY *)
 #endif
 
 #ifdef NEED_TO_DECLARE_MALLOC_AND_FRIEND
@@ -138,9 +138,9 @@
    returns a non-NULL pointer, even if the underlying malloc
    doesn't. Returned pointers must be checked for NULL explicitly.
    No action is performed on failure. */
-extern DL_IMPORT(ANY *) PyMem_Malloc Py_PROTO((size_t));
-extern DL_IMPORT(ANY *) PyMem_Realloc Py_PROTO((ANY *, size_t));
-extern DL_IMPORT(void) PyMem_Free Py_PROTO((ANY *));
+extern DL_IMPORT(ANY *) PyMem_Malloc(size_t);
+extern DL_IMPORT(ANY *) PyMem_Realloc(ANY *, size_t);
+extern DL_IMPORT(void) PyMem_Free(ANY *);
 
 /* Starting from Python 1.6, the wrappers Py_{Malloc,Realloc,Free} are
    no longer supported. They used to call PyErr_NoMemory() on failure. */
@@ -198,7 +198,7 @@
 
    #define PyCore_MALLOC_FUNC      d_malloc
    ...
-   #define PyCore_MALLOC_PROTO	Py_PROTO((size_t, char *, unsigned long))
+   #define PyCore_MALLOC_PROTO	(size_t, char *, unsigned long)
    ...
    #define NEED_TO_DECLARE_MALLOC_AND_FRIEND
 
diff --git a/Include/mymath.h b/Include/mymath.h
index 3a8c62e..7873a3d 100644
--- a/Include/mymath.h
+++ b/Include/mymath.h
@@ -10,7 +10,7 @@
 #endif
 
 #ifndef HAVE_HYPOT
-extern double hypot Py_PROTO((double, double));
+extern double hypot(double, double);
 #ifdef MWERKS_BEFORE_PRO4
 #define hypot we_dont_want_faulty_hypot_decl
 #endif
diff --git a/Include/myproto.h b/Include/myproto.h
index 40abdea..94be8df 100644
--- a/Include/myproto.h
+++ b/Include/myproto.h
@@ -14,6 +14,11 @@
 redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 ******************************************************************/
 
+/***************************************
+THIS FILE IS OBSOLETE
+DON'T USE Py_PROTO or Py_FPROTO anymore.
+***************************************/
+
 #ifdef HAVE_PROTOTYPES
 #define Py_PROTO(x) x
 #else
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index 595d930..0498732 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -31,8 +31,8 @@
 struct arraydescr {
 	int typecode;
 	int itemsize;
-	PyObject * (*getitem) Py_FPROTO((struct arrayobject *, int));
-	int (*setitem) Py_FPROTO((struct arrayobject *, int, PyObject *));
+	PyObject * (*getitem)(struct arrayobject *, int);
+	int (*setitem)(struct arrayobject *, int, PyObject *);
 };
 
 typedef struct arrayobject {
@@ -46,15 +46,15 @@
 #define is_arrayobject(op) ((op)->ob_type == &Arraytype)
 
 /* Forward */
-static PyObject *newarrayobject Py_PROTO((int, struct arraydescr *));
+static PyObject *newarrayobject(int, struct arraydescr *);
 #if 0
-static int getarraysize Py_PROTO((PyObject *));
+static int getarraysize(PyObject *);
 #endif
-static PyObject *getarrayitem Py_PROTO((PyObject *, int));
-static int setarrayitem Py_PROTO((PyObject *, int, PyObject *));
+static PyObject *getarrayitem(PyObject *, int);
+static int setarrayitem(PyObject *, int, PyObject *);
 #if 0
-static int insarrayitem Py_PROTO((PyObject *, int, PyObject *));
-static int addarrayitem Py_PROTO((PyObject *, PyObject *));
+static int insarrayitem(PyObject *, int, PyObject *);
+static int addarrayitem(PyObject *, PyObject *);
 #endif
 
 static PyObject *
diff --git a/Modules/cgensupport.h b/Modules/cgensupport.h
index e70720b..2277a47 100644
--- a/Modules/cgensupport.h
+++ b/Modules/cgensupport.h
@@ -38,34 +38,34 @@
 #define getishortarraysize PyArg_GetShortArraySize
 #define getistringarg PyArg_GetString
 
-extern int PyArg_GetObject Py_PROTO((PyObject *args, int nargs,
-				     int i, PyObject **p_a));
-extern int PyArg_GetLong Py_PROTO((PyObject *args, int nargs,
-				   int i, long *p_a));
-extern int PyArg_GetShort Py_PROTO((PyObject *args, int nargs,
-				    int i, short *p_a));
-extern int PyArg_GetFloat Py_PROTO((PyObject *args, int nargs,
-				    int i, float *p_a));
-extern int PyArg_GetString Py_PROTO((PyObject *args, int nargs,
-				     int i, string *p_a));
-extern int PyArg_GetChar Py_PROTO((PyObject *args, int nargs,
-				   int i, char *p_a));
-extern int PyArg_GetLongArray Py_PROTO((PyObject *args, int nargs,
-					int i, int n, long *p_a));
-extern int PyArg_GetShortArray Py_PROTO((PyObject *args, int nargs,
-					 int i, int n, short *p_a));
-extern int PyArg_GetDoubleArray Py_PROTO((PyObject *args, int nargs,
-					  int i, int n, double *p_a));
-extern int PyArg_GetFloatArray Py_PROTO((PyObject *args, int nargs,
-					 int i, int n, float *p_a));
-extern int PyArg_GetLongArraySize Py_PROTO((PyObject *args, int nargs,
-					    int i, long *p_a));
-extern int PyArg_GetShortArraySize Py_PROTO((PyObject *args, int nargs,
-					     int i, short *p_a));
-extern int PyArg_GetDoubleArraySize Py_PROTO((PyObject *args, int nargs,
-					      int i, double *p_a));
-extern int PyArg_GetFloatArraySize Py_PROTO((PyObject *args, int nargs,
-					 int i, float *p_a));
+extern int PyArg_GetObject(PyObject *args, int nargs,
+			   int i, PyObject **p_a);
+extern int PyArg_GetLong(PyObject *args, int nargs,
+			 int i, long *p_a);
+extern int PyArg_GetShort(PyObject *args, int nargs,
+			  int i, short *p_a);
+extern int PyArg_GetFloat(PyObject *args, int nargs,
+			  int i, float *p_a);
+extern int PyArg_GetString(PyObject *args, int nargs,
+			   int i, string *p_a);
+extern int PyArg_GetChar(PyObject *args, int nargs,
+			 int i, char *p_a);
+extern int PyArg_GetLongArray(PyObject *args, int nargs,
+			    int i, int n, long *p_a);
+extern int PyArg_GetShortArray(PyObject *args, int nargs,
+			    int i, int n, short *p_a);
+extern int PyArg_GetDoubleArray(PyObject *args, int nargs,
+				int i, int n, double *p_a);
+extern int PyArg_GetFloatArray(PyObject *args, int nargs,
+			       int i, int n, float *p_a);
+extern int PyArg_GetLongArraySize(PyObject *args, int nargs,
+				  int i, long *p_a);
+extern int PyArg_GetShortArraySize(PyObject *args, int nargs,
+				int i, short *p_a);
+extern int PyArg_GetDoubleArraySize(PyObject *args, int nargs,
+				    int i, double *p_a);
+extern int PyArg_GetFloatArraySize(PyObject *args, int nargs,
+				   int i, float *p_a);
 
 #ifdef __cplusplus
 }
diff --git a/Modules/cmathmodule.c b/Modules/cmathmodule.c
index 313827b..aa21bc0 100644
--- a/Modules/cmathmodule.c
+++ b/Modules/cmathmodule.c
@@ -347,7 +347,7 @@
 static PyObject *
 math_1(args, func)
 	PyObject *args;
-	Py_complex (*func) Py_FPROTO((Py_complex));
+	Py_complex (*func)(Py_complex);
 {
 	Py_complex x;
 	if (!PyArg_ParseTuple(args, "D", &x))
diff --git a/Modules/glmodule.c b/Modules/glmodule.c
index bb14c65..bed80dc 100644
--- a/Modules/glmodule.c
+++ b/Modules/glmodule.c
@@ -107,7 +107,7 @@
 	PyObject *v, *w=NULL;
 	int i, n, width;
 	double vec[3];
-	PyObject * (*getitem) Py_FPROTO((PyObject *, int));
+	PyObject * (*getitem)(PyObject *, int);
 	
 	if (!PyArg_GetObject(args, 1, 0, &v))
 		return NULL;
@@ -208,7 +208,7 @@
 	PyObject *v, *w, *wnorm, *wvec;
 	int i, n;
 	float norm[3], vec[3];
-	PyObject * (*getitem) Py_FPROTO((PyObject *, int));
+	PyObject * (*getitem)(PyObject *, int);
 	
 	if (!PyArg_GetObject(args, 1, 0, &v))
 		return NULL;
diff --git a/Modules/mpzmodule.c b/Modules/mpzmodule.c
index 62478b8..2d10df5 100644
--- a/Modules/mpzmodule.c
+++ b/Modules/mpzmodule.c
@@ -1012,8 +1012,8 @@
 } /* mpz_mpzcoerce() */
 	
 /* Forward */
-static void mpz_divm Py_PROTO((MP_INT *res, const MP_INT *num,
-			       const MP_INT *den, const MP_INT *mod));
+static void mpz_divm(MP_INT *res, const MP_INT *num,
+	             const MP_INT *den, const MP_INT *mod);
 
 static PyObject *
 MPZ_powm(self, args)
diff --git a/Modules/nismodule.c b/Modules/nismodule.c
index 8943729..877b3a2 100644
--- a/Modules/nismodule.c
+++ b/Modules/nismodule.c
@@ -71,7 +71,7 @@
 	return map;
 }
 
-typedef int (*foreachfunc) Py_PROTO((int, char *, int, char *, int, char *));
+typedef int (*foreachfunc)(int, char *, int, char *, int, char *);
 
 struct ypcallback_data {
 	PyObject	*dict;
diff --git a/Modules/readline.c b/Modules/readline.c
index 9b7bcaf..8215321 100644
--- a/Modules/readline.c
+++ b/Modules/readline.c
@@ -39,7 +39,7 @@
 
 /* Pointers needed from outside (but not declared in a header file). */
 extern int (*PyOS_InputHook)();
-extern char *(*PyOS_ReadlineFunctionPointer) Py_PROTO((char *));
+extern char *(*PyOS_ReadlineFunctionPointer)(char *);
 
 
 /* Exported function to send one line to readline's init file parser */
diff --git a/Modules/rgbimgmodule.c b/Modules/rgbimgmodule.c
index cc5c6d5..d0956cb 100644
--- a/Modules/rgbimgmodule.c
+++ b/Modules/rgbimgmodule.c
@@ -95,12 +95,12 @@
 
 #define CHANOFFSET(z)	(3-(z))	/* this is byte order dependent */
 
-static void expandrow Py_PROTO((unsigned char *, unsigned char *, int));
-static void setalpha Py_PROTO((unsigned char *, int));
-static void copybw Py_PROTO((Py_Int32 *, int));
-static void interleaverow Py_PROTO((unsigned char*, unsigned char*, int, int));
-static int compressrow Py_PROTO((unsigned char *, unsigned char *, int, int));
-static void lumrow Py_PROTO((unsigned char *, unsigned char *, int));
+static void expandrow(unsigned char *, unsigned char *, int);
+static void setalpha(unsigned char *, int);
+static void copybw(Py_Int32 *, int);
+static void interleaverow(unsigned char*, unsigned char*, int, int);
+static int compressrow(unsigned char *, unsigned char *, int, int);
+static void lumrow(unsigned char *, unsigned char *, int);
 
 #ifdef ADD_TAGS
 #define TAGLEN	(5)
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index 1c11fdd..cfbfe20 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -123,7 +123,7 @@
 		is_tripped++;
 		Handlers[sig_num].tripped = 1;
 		Py_AddPendingCall(
-			(int (*) Py_PROTO((ANY *)))PyErr_CheckSignals, NULL);
+			(int (*)(ANY *))PyErr_CheckSignals, NULL);
 #ifdef WITH_THREAD
 	}
 #endif
@@ -638,7 +638,7 @@
 {
 	is_tripped++;
 	Handlers[SIGINT].tripped = 1;
-	Py_AddPendingCall((int (*) Py_PROTO((ANY *)))PyErr_CheckSignals, NULL);
+	Py_AddPendingCall((int (*)(ANY *))PyErr_CheckSignals, NULL);
 }
 
 void
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index f88f6ba..b8fbead 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -1112,7 +1112,7 @@
 static PyObject *
 BUILD_FUNC_DEF_2(PySocketSock_makefile,PySocketSockObject *,s, PyObject *,args)
 {
-	extern int fclose Py_PROTO((FILE *));
+	extern int fclose(FILE *);
 	char *mode = "r";
 	int bufsize = -1;
 #ifdef MS_WIN32
diff --git a/Modules/stropmodule.c b/Modules/stropmodule.c
index 2950b15..f37f000 100644
--- a/Modules/stropmodule.c
+++ b/Modules/stropmodule.c
@@ -878,7 +878,7 @@
 	PyObject *self; /* Not used */
 	PyObject *args;
 {
-	extern double strtod Py_PROTO((const char *, char **));
+	extern double strtod(const char *, char **);
 	char *s, *end;
 	double x;
 	char buffer[256]; /* For errors */
diff --git a/Modules/structmodule.c b/Modules/structmodule.c
index 5b52a39..fac442f 100644
--- a/Modules/structmodule.c
+++ b/Modules/structmodule.c
@@ -406,11 +406,10 @@
 	char format;
 	int size;
 	int alignment;
-	PyObject* (*unpack) Py_PROTO((const char *,
-				      const struct _formatdef *));
-	int (*pack) Py_PROTO((char *,
-			      PyObject *,
-			      const struct _formatdef *));
+	PyObject* (*unpack)(const char *,
+			    const struct _formatdef *);
+	int (*pack)(char *, PyObject *,
+		    const struct _formatdef *);
 } formatdef;
 
 static PyObject *
diff --git a/Modules/svmodule.c b/Modules/svmodule.c
index 9e311b5..4133ae3 100644
--- a/Modules/svmodule.c
+++ b/Modules/svmodule.c
@@ -37,7 +37,7 @@
 
 static PyObject *SvError;		/* exception sv.error */
 
-static PyObject *newcaptureobject Py_PROTO((svobject *, void *, int));
+static PyObject *newcaptureobject(svobject *, void *, int);
 
 /* Set a SV-specific error from svideo_errno and return NULL */
 static PyObject *
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 984980c..855863b 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -90,8 +90,8 @@
 #endif
 
 /* Forward declarations */
-static int floatsleep Py_PROTO((double));
-static double floattime Py_PROTO(());
+static int floatsleep(double);
+static double floattime();
 
 /* For Y2K check */
 static PyObject *moddict;
@@ -255,7 +255,7 @@
 static PyObject *
 time_convert(when, function)
 	time_t when;
-	struct tm * (*function) Py_PROTO((const time_t *));
+	struct tm * (*function)(const time_t *);
 {
 	struct tm *p;
 	errno = 0;
@@ -786,8 +786,8 @@
 #ifdef MSDOS
 	struct timeb t1, t2;
 	double frac;
-	extern double fmod Py_PROTO((double, double));
-	extern double floor Py_PROTO((double));
+	extern double fmod(double, double);
+	extern double floor(double);
 	if (secs <= 0.0)
 		return;
 	frac = fmod(secs, 1.0);
diff --git a/Objects/abstract.c b/Objects/abstract.c
index 1800912..6350794 100644
--- a/Objects/abstract.c
+++ b/Objects/abstract.c
@@ -310,7 +310,7 @@
 	BINOP(v, w, "__or__", "__ror__", PyNumber_Or);
 	if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f) Py_FPROTO((PyObject *, PyObject *));
+		PyObject * (*f)(PyObject *, PyObject *);
 		if (PyNumber_Coerce(&v, &w) != 0)
 			return NULL;
 		if ((f = v->ob_type->tp_as_number->nb_or) != NULL)
@@ -332,7 +332,7 @@
 	BINOP(v, w, "__xor__", "__rxor__", PyNumber_Xor);
 	if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f) Py_FPROTO((PyObject *, PyObject *));
+		PyObject * (*f)(PyObject *, PyObject *);
 		if (PyNumber_Coerce(&v, &w) != 0)
 			return NULL;
 		if ((f = v->ob_type->tp_as_number->nb_xor) != NULL)
@@ -352,7 +352,7 @@
 	BINOP(v, w, "__and__", "__rand__", PyNumber_And);
 	if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f) Py_FPROTO((PyObject *, PyObject *));
+		PyObject * (*f)(PyObject *, PyObject *);
 		if (PyNumber_Coerce(&v, &w) != 0)
 			return NULL;
 		if ((f = v->ob_type->tp_as_number->nb_and) != NULL)
@@ -372,7 +372,7 @@
 	BINOP(v, w, "__lshift__", "__rlshift__", PyNumber_Lshift);
 	if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f) Py_FPROTO((PyObject *, PyObject *));
+		PyObject * (*f)(PyObject *, PyObject *);
 		if (PyNumber_Coerce(&v, &w) != 0)
 			return NULL;
 		if ((f = v->ob_type->tp_as_number->nb_lshift) != NULL)
@@ -392,7 +392,7 @@
 	BINOP(v, w, "__rshift__", "__rrshift__", PyNumber_Rshift);
 	if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f) Py_FPROTO((PyObject *, PyObject *));
+		PyObject * (*f)(PyObject *, PyObject *);
 		if (PyNumber_Coerce(&v, &w) != 0)
 			return NULL;
 		if ((f = v->ob_type->tp_as_number->nb_rshift) != NULL)
@@ -417,7 +417,7 @@
 		return (*m->sq_concat)(v, w);
 	else if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f) Py_FPROTO((PyObject *, PyObject *));
+		PyObject * (*f)(PyObject *, PyObject *);
 		if (PyNumber_Coerce(&v, &w) != 0)
 			return NULL;
 		if ((f = v->ob_type->tp_as_number->nb_add) != NULL)
@@ -437,7 +437,7 @@
 	BINOP(v, w, "__sub__", "__rsub__", PyNumber_Subtract);
 	if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f) Py_FPROTO((PyObject *, PyObject *));
+		PyObject * (*f)(PyObject *, PyObject *);
 		if (PyNumber_Coerce(&v, &w) != 0)
 			return NULL;
 		if ((f = v->ob_type->tp_as_number->nb_subtract) != NULL)
@@ -469,7 +469,7 @@
 	}
 	if (tp->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f) Py_FPROTO((PyObject *, PyObject *));
+		PyObject * (*f)(PyObject *, PyObject *);
 		if (PyInstance_Check(v)) {
 			/* Instances of user-defined classes get their
 			   other argument uncoerced, so they may
@@ -515,7 +515,7 @@
 	BINOP(v, w, "__div__", "__rdiv__", PyNumber_Divide);
 	if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f) Py_FPROTO((PyObject *, PyObject *));
+		PyObject * (*f)(PyObject *, PyObject *);
 		if (PyNumber_Coerce(&v, &w) != 0)
 			return NULL;
 		if ((f = v->ob_type->tp_as_number->nb_divide) != NULL)
@@ -539,7 +539,7 @@
 	BINOP(v, w, "__mod__", "__rmod__", PyNumber_Remainder);
 	if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f) Py_FPROTO((PyObject *, PyObject *));
+		PyObject * (*f)(PyObject *, PyObject *);
 		if (PyNumber_Coerce(&v, &w) != 0)
 			return NULL;
 		if ((f = v->ob_type->tp_as_number->nb_remainder) != NULL)
@@ -559,7 +559,7 @@
 	BINOP(v, w, "__divmod__", "__rdivmod__", PyNumber_Divmod);
 	if (v->ob_type->tp_as_number != NULL) {
 		PyObject *x = NULL;
-		PyObject * (*f) Py_FPROTO((PyObject *, PyObject *));
+		PyObject * (*f)(PyObject *, PyObject *);
 		if (PyNumber_Coerce(&v, &w) != 0)
 			return NULL;
 		if ((f = v->ob_type->tp_as_number->nb_divmod) != NULL)
@@ -579,7 +579,7 @@
 	PyObject *v, *w;
 {
 	PyObject *res;
-	PyObject * (*f) Py_FPROTO((PyObject *, PyObject *, PyObject *));
+	PyObject * (*f)(PyObject *, PyObject *, PyObject *);
 	BINOP(v, w, "__pow__", "__rpow__", do_pow);
 	if (v->ob_type->tp_as_number == NULL ||
 	    w->ob_type->tp_as_number == NULL) {
@@ -604,7 +604,7 @@
 {
 	PyObject *res;
 	PyObject *v1, *z1, *w2, *z2;
-	PyObject * (*f) Py_FPROTO((PyObject *, PyObject *, PyObject *));
+	PyObject * (*f)(PyObject *, PyObject *, PyObject *);
 
 	if (z == Py_None)
 		return do_pow(v, w);
diff --git a/Objects/classobject.c b/Objects/classobject.c
index 0e1308b..3192ddd 100644
--- a/Objects/classobject.c
+++ b/Objects/classobject.c
@@ -14,10 +14,10 @@
 #include "structmember.h"
 
 /* Forward */
-static PyObject *class_lookup
-	Py_PROTO((PyClassObject *, PyObject *, PyClassObject **));
-static PyObject *instance_getattr1 Py_PROTO((PyInstanceObject *, PyObject *));
-static PyObject *instance_getattr2 Py_PROTO((PyInstanceObject *, PyObject *));
+static PyObject *class_lookup(PyClassObject *, PyObject *,
+			      PyClassObject **);
+static PyObject *instance_getattr1(PyInstanceObject *, PyObject *);
+static PyObject *instance_getattr2(PyInstanceObject *, PyObject *);
 
 static PyObject *getattrstr, *setattrstr, *delattrstr;
 
@@ -1203,8 +1203,8 @@
 
 
 /* Forward */
-static int halfbinop Py_PROTO((PyObject *, PyObject *, char *, PyObject **,
-		PyObject * (*) Py_PROTO((PyObject *, PyObject *)), int ));
+static int halfbinop(PyObject *, PyObject *, char *, PyObject **,
+		     PyObject * (*)(PyObject *, PyObject *), int);
 
 
 /* Implement a binary operator involving at least one class instance. */
@@ -1215,7 +1215,7 @@
 	PyObject *w;
 	char *opname;
 	char *ropname;
-	PyObject * (*thisfunc) Py_PROTO((PyObject *, PyObject *));
+	PyObject * (*thisfunc)(PyObject *, PyObject *);
 {
 	char buf[256];
 	PyObject *result = NULL;
@@ -1249,7 +1249,7 @@
 	PyObject *w;
 	char *opname;
 	PyObject **r_result;
-	PyObject * (*thisfunc) Py_PROTO((PyObject *, PyObject *));
+	PyObject * (*thisfunc)(PyObject *, PyObject *);
 	int swapped;
 {
 	PyObject *func;
diff --git a/Objects/cobject.c b/Objects/cobject.c
index b184acb..06c29f0 100644
--- a/Objects/cobject.c
+++ b/Objects/cobject.c
@@ -15,20 +15,20 @@
 
 /* Declarations for objects of type PyCObject */
 
-typedef void (*destructor1) Py_PROTO((void *));
-typedef void (*destructor2) Py_PROTO((void *, void*));
+typedef void (*destructor1)(void *);
+typedef void (*destructor2)(void *, void*);
 
 typedef struct {
 	PyObject_HEAD
 	void *cobject;
         void *desc;
-	void (*destructor) Py_PROTO((void *));
+	void (*destructor)(void *);
 } PyCObject;
 
 PyObject *
 PyCObject_FromVoidPtr(cobj, destr)
 	void *cobj;
-	void (*destr) Py_PROTO((void *));
+	void (*destr)(void *);
 {
 	PyCObject *self;
 	
@@ -45,7 +45,7 @@
 PyCObject_FromVoidPtrAndDesc(cobj, desc, destr)
 	void *cobj;
 	void *desc;
-	void (*destr) Py_PROTO((void *, void *));
+	void (*destr)(void *, void *);
 {
 	PyCObject *self;
 
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index 7247ff8..bf4aed4 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -69,7 +69,7 @@
 	FILE *f_fp;
 	PyObject *f_name;
 	PyObject *f_mode;
-	int (*f_close) Py_PROTO((FILE *));
+	int (*f_close)(FILE *);
 	int f_softspace; /* Flag used by 'print' command */
 	int f_binary; /* Flag which indicates whether the file is open
 			 open in binary (1) or test (0) mode */
@@ -100,7 +100,7 @@
 	FILE *fp;
 	char *name;
 	char *mode;
-	int (*close) Py_FPROTO((FILE *));
+	int (*close)(FILE *);
 {
 	PyFileObject *f = PyObject_NEW(PyFileObject, &PyFile_Type);
 	if (f == NULL)
@@ -126,7 +126,7 @@
 PyFile_FromString(name, mode)
 	char *name, *mode;
 {
-	extern int fclose Py_PROTO((FILE *));
+	extern int fclose(FILE *);
 	PyFileObject *f;
 	f = (PyFileObject *) PyFile_FromFile((FILE *)NULL, name, mode, fclose);
 	if (f == NULL)
diff --git a/Objects/floatobject.c b/Objects/floatobject.c
index 55fcd06..8b4f2d9 100644
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -64,8 +64,8 @@
 #endif
 
 #if !defined(__STDC__) && !defined(macintosh)
-extern double fmod Py_PROTO((double, double));
-extern double pow Py_PROTO((double, double));
+extern double fmod(double, double);
+extern double pow(double, double);
 #endif
 
 #ifdef sun
@@ -137,7 +137,7 @@
 	PyObject *v;
 	char **pend;
 {
-	extern double strtod Py_PROTO((const char *, char **));
+	extern double strtod(const char *, char **);
 	const char *s, *last, *end;
 	double x;
 	char buffer[256]; /* For errors */
diff --git a/Objects/object.c b/Objects/object.c
index 9c4cd6a..c1bdc71 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -1001,7 +1001,7 @@
 
 
 /* Hack to force loading of abstract.o */
-int (*_Py_abstract_hack) Py_FPROTO((PyObject *)) = &PyObject_Length;
+int (*_Py_abstract_hack)(PyObject *) = &PyObject_Length;
 
 
 /* Python's malloc wrappers (see mymalloc.h) */
diff --git a/Parser/acceler.c b/Parser/acceler.c
index b20322d..177bb49 100644
--- a/Parser/acceler.c
+++ b/Parser/acceler.c
@@ -26,8 +26,8 @@
 #include "parser.h"
 
 /* Forward references */
-static void fixdfa Py_PROTO((grammar *, dfa *));
-static void fixstate Py_PROTO((grammar *, state *));
+static void fixdfa(grammar *, dfa *);
+static void fixstate(grammar *, state *);
 
 void
 PyGrammar_AddAccelerators(g)
diff --git a/Parser/firstsets.c b/Parser/firstsets.c
index c7127c1..b27ed2e 100644
--- a/Parser/firstsets.c
+++ b/Parser/firstsets.c
@@ -17,7 +17,7 @@
 extern int Py_DebugFlag;
 
 /* Forward */
-static void calcfirstset Py_PROTO((grammar *, dfa *));
+static void calcfirstset(grammar *, dfa *);
 
 void
 addfirstsets(g)
diff --git a/Parser/grammar.c b/Parser/grammar.c
index 6fbb843..1a50786 100644
--- a/Parser/grammar.c
+++ b/Parser/grammar.c
@@ -142,7 +142,7 @@
 }
 
 /* Forward */
-static void translabel Py_PROTO((grammar *, label *));
+static void translabel(grammar *, label *);
 
 void
 translatelabels(g)
diff --git a/Parser/intrcheck.c b/Parser/intrcheck.c
index 3d4a27f..5278d76 100644
--- a/Parser/intrcheck.c
+++ b/Parser/intrcheck.c
@@ -22,7 +22,7 @@
 #include "intrcheck.h"
 
 /* Copied here from ceval.h -- can't include that file. */
-int Py_AddPendingCall Py_PROTO((int (*func) Py_PROTO((ANY *)), ANY *arg));
+int Py_AddPendingCall(int (*func)(ANY *), ANY *arg);
 
 
 #ifdef QUICKWIN
@@ -152,7 +152,7 @@
 	int sig; /* Not used by required by interface */
 #endif /* _M_IX86 */
 {
-	extern void Py_Exit Py_PROTO((int));
+	extern void Py_Exit(int);
 	static char message[] =
 "python: to interrupt a truly hanging Python program, interrupt once more.\n";
 	switch (interrupted++) {
diff --git a/Parser/listnode.c b/Parser/listnode.c
index 24559f5..c7d5cfa 100644
--- a/Parser/listnode.c
+++ b/Parser/listnode.c
@@ -15,8 +15,8 @@
 #include "node.h"
 
 /* Forward */
-static void list1node Py_PROTO((FILE *, node *));
-static void listnode Py_PROTO((FILE *, node *));
+static void list1node(FILE *, node *);
+static void listnode(FILE *, node *);
 
 void
 PyNode_ListTree(n)
diff --git a/Parser/myreadline.c b/Parser/myreadline.c
index 96749b2..bb35000 100644
--- a/Parser/myreadline.c
+++ b/Parser/myreadline.c
@@ -118,7 +118,7 @@
 
    Note: Python expects in return a buffer allocated with PyMem_Malloc. */
 
-char *(*PyOS_ReadlineFunctionPointer) Py_PROTO((char *));
+char *(*PyOS_ReadlineFunctionPointer)(char *);
 
 
 /* Interface used by tokenizer.c and bltinmodule.c */
diff --git a/Parser/node.c b/Parser/node.c
index 5cef376..3a710ef 100644
--- a/Parser/node.c
+++ b/Parser/node.c
@@ -64,7 +64,7 @@
 }
 
 /* Forward */
-static void freechildren Py_PROTO((node *));
+static void freechildren(node *);
 
 
 void
diff --git a/Parser/parser.c b/Parser/parser.c
index fb1a051..ee40f21 100644
--- a/Parser/parser.c
+++ b/Parser/parser.c
@@ -33,7 +33,7 @@
 
 /* STACK DATA TYPE */
 
-static void s_reset Py_PROTO((stack *));
+static void s_reset(stack *);
 
 static void
 s_reset(s)
@@ -44,7 +44,7 @@
 
 #define s_empty(s) ((s)->s_top == &(s)->s_base[MAXSTACK])
 
-static int s_push Py_PROTO((stack *, dfa *, node *));
+static int s_push(stack *, dfa *, node *);
 
 static int
 s_push(s, d, parent)
@@ -66,7 +66,7 @@
 
 #ifdef Py_DEBUG
 
-static void s_pop Py_PROTO((stack *));
+static void s_pop(stack *);
 
 static void
 s_pop(s)
@@ -122,7 +122,7 @@
 
 /* PARSER STACK OPERATIONS */
 
-static int shift Py_PROTO((stack *, int, char *, int, int));
+static int shift(stack *, int, char *, int, int);
 
 static int
 shift(s, type, str, newstate, lineno)
@@ -141,7 +141,7 @@
 	return 0;
 }
 
-static int push Py_PROTO((stack *, int, dfa *, int, int));
+static int push(stack *, int, dfa *, int, int);
 
 static int
 push(s, type, d, newstate, lineno)
@@ -165,7 +165,7 @@
 
 /* PARSER PROPER */
 
-static int classify Py_PROTO((grammar *, int, char *));
+static int classify(grammar *, int, char *);
 
 static int
 classify(g, type, str)
diff --git a/Parser/parser.h b/Parser/parser.h
index 0fd0081..6087373 100644
--- a/Parser/parser.h
+++ b/Parser/parser.h
@@ -36,11 +36,10 @@
 	node		*p_tree;	/* Top of parse tree */
 } parser_state;
 
-parser_state *PyParser_New Py_PROTO((grammar *g, int start));
-void PyParser_Delete Py_PROTO((parser_state *ps));
-int PyParser_AddToken
-	Py_PROTO((parser_state *ps, int type, char *str, int lineno));
-void PyGrammar_AddAccelerators Py_PROTO((grammar *g));
+parser_state *PyParser_New(grammar *g, int start);
+void PyParser_Delete(parser_state *ps);
+int PyParser_AddToken(parser_state *ps, int type, char *str, int lineno);
+void PyGrammar_AddAccelerators(grammar *g);
 
 #ifdef __cplusplus
 }
diff --git a/Parser/parsetok.c b/Parser/parsetok.c
index 1d6e024..9ac1606 100644
--- a/Parser/parsetok.c
+++ b/Parser/parsetok.c
@@ -22,8 +22,7 @@
 
 
 /* Forward */
-static node *parsetok Py_PROTO((struct tok_state *, grammar *, int,
-			     perrdetail *));
+static node *parsetok(struct tok_state *, grammar *, int, perrdetail *);
 
 /* Parse input coming from a string.  Return error code, print some errors. */
 
diff --git a/Parser/pgen.c b/Parser/pgen.c
index 36279b0..e5d5d37 100644
--- a/Parser/pgen.c
+++ b/Parser/pgen.c
@@ -45,14 +45,14 @@
 } nfa;
 
 /* Forward */
-static void compile_rhs Py_PROTO((labellist *ll,
-			       nfa *nf, node *n, int *pa, int *pb));
-static void compile_alt Py_PROTO((labellist *ll,
-			       nfa *nf, node *n, int *pa, int *pb));
-static void compile_item Py_PROTO((labellist *ll,
-				nfa *nf, node *n, int *pa, int *pb));
-static void compile_atom Py_PROTO((labellist *ll,
-				nfa *nf, node *n, int *pa, int *pb));
+static void compile_rhs(labellist *ll,
+			nfa *nf, node *n, int *pa, int *pb);
+static void compile_alt(labellist *ll,
+			nfa *nf, node *n, int *pa, int *pb);
+static void compile_item(labellist *ll,
+			 nfa *nf, node *n, int *pa, int *pb);
+static void compile_atom(labellist *ll,
+			 nfa *nf, node *n, int *pa, int *pb);
 
 static int
 addnfastate(nf)
@@ -111,7 +111,7 @@
 } nfagrammar;
 
 /* Forward */
-static void compile_rule Py_PROTO((nfagrammar *gr, node *n));
+static void compile_rule(nfagrammar *gr, node *n);
 
 static nfagrammar *
 newnfagrammar()
@@ -420,10 +420,10 @@
 } ss_dfa;
 
 /* Forward */
-static void printssdfa Py_PROTO((int xx_nstates, ss_state *xx_state, int nbits,
-			      labellist *ll, char *msg));
-static void simplify Py_PROTO((int xx_nstates, ss_state *xx_state));
-static void convert Py_PROTO((dfa *d, int xx_nstates, ss_state *xx_state));
+static void printssdfa(int xx_nstates, ss_state *xx_state, int nbits,
+		       labellist *ll, char *msg);
+static void simplify(int xx_nstates, ss_state *xx_state);
+static void convert(dfa *d, int xx_nstates, ss_state *xx_state);
 
 static void
 makedfa(gr, nf, d)
diff --git a/Parser/pgen.h b/Parser/pgen.h
index a20a0c2..ddf52e6 100644
--- a/Parser/pgen.h
+++ b/Parser/pgen.h
@@ -16,10 +16,10 @@
 
 /* Parser generator interface */
 
-extern grammar *meta_grammar Py_PROTO((void));
+extern grammar *meta_grammar(void);
 
 struct _node;
-extern grammar *pgen Py_PROTO((struct _node *));
+extern grammar *pgen(struct _node *);
 
 #ifdef __cplusplus
 }
diff --git a/Parser/pgenmain.c b/Parser/pgenmain.c
index ef24d75..0562e39 100644
--- a/Parser/pgenmain.c
+++ b/Parser/pgenmain.c
@@ -32,10 +32,10 @@
 int Py_VerboseFlag;
 
 /* Forward */
-grammar *getgrammar Py_PROTO((char *filename));
+grammar *getgrammar(char *filename);
 #ifdef THINK_C
-int main Py_PROTO((int, char **));
-char *askfile Py_PROTO((void));
+int main(int, char **);
+char *askfile(void);
 #endif
 
 void
diff --git a/Parser/printgrammar.c b/Parser/printgrammar.c
index e3a87aa..5d1d9e0 100644
--- a/Parser/printgrammar.c
+++ b/Parser/printgrammar.c
@@ -14,10 +14,10 @@
 #include "grammar.h"
 
 /* Forward */
-static void printarcs Py_PROTO((int, dfa *, FILE *));
-static void printstates Py_PROTO((grammar *, FILE *));
-static void printdfas Py_PROTO((grammar *, FILE *));
-static void printlabels Py_PROTO((grammar *, FILE *));
+static void printarcs(int, dfa *, FILE *);
+static void printstates(grammar *, FILE *);
+static void printdfas(grammar *, FILE *);
+static void printlabels(grammar *, FILE *);
 
 void
 printgrammar(g, fp)
diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c
index ef0d711..0ef3fc0 100644
--- a/Parser/tokenizer.c
+++ b/Parser/tokenizer.c
@@ -17,7 +17,7 @@
 #include "tokenizer.h"
 #include "errcode.h"
 
-extern char *PyOS_Readline Py_PROTO((char *));
+extern char *PyOS_Readline(char *);
 /* Return malloc'ed string including trailing \n;
    empty malloc'ed string for EOF;
    NULL if interrupted */
@@ -34,9 +34,9 @@
 #endif
 
 /* Forward */
-static struct tok_state *tok_new Py_PROTO((void));
-static int tok_nextc Py_PROTO((struct tok_state *tok));
-static void tok_backup Py_PROTO((struct tok_state *tok, int c));
+static struct tok_state *tok_new(void);
+static int tok_nextc(struct tok_state *tok);
+static void tok_backup(struct tok_state *tok, int c);
 
 /* Token names */
 
diff --git a/Parser/tokenizer.h b/Parser/tokenizer.h
index 0a717fe..93a04ab 100644
--- a/Parser/tokenizer.h
+++ b/Parser/tokenizer.h
@@ -49,11 +49,10 @@
 	int altindstack[MAXINDENT];	/* Stack of alternate indents */
 };
 
-extern struct tok_state *PyTokenizer_FromString Py_PROTO((char *));
-extern struct tok_state *PyTokenizer_FromFile
-	Py_PROTO((FILE *, char *, char *));
-extern void PyTokenizer_Free Py_PROTO((struct tok_state *));
-extern int PyTokenizer_Get Py_PROTO((struct tok_state *, char **, char **));
+extern struct tok_state *PyTokenizer_FromString(char *);
+extern struct tok_state *PyTokenizer_FromFile(FILE *, char *, char *);
+extern void PyTokenizer_Free(struct tok_state *);
+extern int PyTokenizer_Get(struct tok_state *, char **, char **);
 
 #ifdef __cplusplus
 }
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 2bae3eb..a00cd5d 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -28,8 +28,8 @@
 #endif
 
 /* Forward */
-static PyObject *filterstring Py_PROTO((PyObject *, PyObject *));
-static PyObject *filtertuple  Py_PROTO((PyObject *, PyObject *));
+static PyObject *filterstring(PyObject *, PyObject *);
+static PyObject *filtertuple (PyObject *, PyObject *);
 
 static PyObject *
 builtin___import__(self, args)
@@ -428,7 +428,7 @@
 complex_from_string(v)
 	PyObject *v;
 {
-	extern double strtod Py_PROTO((const char *, char **));
+	extern double strtod(const char *, char **);
 	const char *s, *start;
 	char *end;
 	double x=0.0, y=0.0, z;
@@ -1225,7 +1225,7 @@
 Return the hexadecimal representation of an integer or long integer.";
 
 
-static PyObject *builtin_raw_input Py_PROTO((PyObject *, PyObject *));
+static PyObject *builtin_raw_input(PyObject *, PyObject *);
 
 static PyObject *
 builtin_input(self, args)
diff --git a/Python/ceval.c b/Python/ceval.c
index dfd4776..0bf5d00 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -43,34 +43,32 @@
 
 /* Forward declarations */
 
-static PyObject *eval_code2 Py_PROTO((PyCodeObject *,
-				 PyObject *, PyObject *,
-				 PyObject **, int,
-				 PyObject **, int,
-				 PyObject **, int,
-				 PyObject *));
+static PyObject *eval_code2(PyCodeObject *,
+			    PyObject *, PyObject *,
+			    PyObject **, int,
+			    PyObject **, int,
+			    PyObject **, int,
+			    PyObject *);
 #ifdef LLTRACE
-static int prtrace Py_PROTO((PyObject *, char *));
+static int prtrace(PyObject *, char *);
 #endif
-static void call_exc_trace Py_PROTO((PyObject **, PyObject**,
-				     PyFrameObject *));
-static int call_trace Py_PROTO((PyObject **, PyObject **,
-				PyFrameObject *, char *, PyObject *));
-static PyObject *call_builtin Py_PROTO((PyObject *, PyObject *, PyObject *));
-static PyObject *call_function Py_PROTO((PyObject *, PyObject *, PyObject *));
-static PyObject *loop_subscript Py_PROTO((PyObject *, PyObject *));
-static PyObject *apply_slice Py_PROTO((PyObject *, PyObject *, PyObject *));
-static int assign_slice Py_PROTO((PyObject *, PyObject *,
-				  PyObject *, PyObject *));
-static PyObject *cmp_outcome Py_PROTO((int, PyObject *, PyObject *));
-static int import_from Py_PROTO((PyObject *, PyObject *, PyObject *));
-static PyObject *build_class Py_PROTO((PyObject *, PyObject *, PyObject *));
-static int exec_statement Py_PROTO((PyFrameObject *,
-				    PyObject *, PyObject *, PyObject *));
-static PyObject *find_from_args Py_PROTO((PyFrameObject *, int));
-static void set_exc_info Py_PROTO((PyThreadState *,
-				PyObject *, PyObject *, PyObject *));
-static void reset_exc_info Py_PROTO((PyThreadState *));
+static void call_exc_trace(PyObject **, PyObject**, PyFrameObject *);
+static int call_trace(PyObject **, PyObject **,
+		      PyFrameObject *, char *, PyObject *);
+static PyObject *call_builtin(PyObject *, PyObject *, PyObject *);
+static PyObject *call_function(PyObject *, PyObject *, PyObject *);
+static PyObject *loop_subscript(PyObject *, PyObject *);
+static PyObject *apply_slice(PyObject *, PyObject *, PyObject *);
+static int assign_slice(PyObject *, PyObject *,
+			PyObject *, PyObject *);
+static PyObject *cmp_outcome(int, PyObject *, PyObject *);
+static int import_from(PyObject *, PyObject *, PyObject *);
+static PyObject *build_class(PyObject *, PyObject *, PyObject *);
+static int exec_statement(PyFrameObject *,
+			  PyObject *, PyObject *, PyObject *);
+static PyObject *find_from_args(PyFrameObject *, int);
+static void set_exc_info(PyThreadState *, PyObject *, PyObject *, PyObject *);
+static void reset_exc_info(PyThreadState *);
 
 
 /* Dynamic execution profile */
@@ -211,7 +209,7 @@
 
 #define NPENDINGCALLS 32
 static struct {
-	int (*func) Py_PROTO((ANY *));
+	int (*func)(ANY *);
 	ANY *arg;
 } pendingcalls[NPENDINGCALLS];
 static volatile int pendingfirst = 0;
@@ -220,7 +218,7 @@
 
 int
 Py_AddPendingCall(func, arg)
-	int (*func) Py_PROTO((ANY *));
+	int (*func)(ANY *);
 	ANY *arg;
 {
 	static int busy = 0;
@@ -258,7 +256,7 @@
 	things_to_do = 0;
 	for (;;) {
 		int i;
-		int (*func) Py_PROTO((ANY *));
+		int (*func)(ANY *);
 		ANY *arg;
 		i = pendingfirst;
 		if (i == pendinglast)
@@ -287,8 +285,8 @@
 		WHY_BREAK	/* 'break' statement */
 };
 
-static enum why_code do_raise Py_PROTO((PyObject *, PyObject *, PyObject *));
-static int unpack_sequence Py_PROTO((PyObject *, int, PyObject **));
+static enum why_code do_raise(PyObject *, PyObject *, PyObject *);
+static int unpack_sequence(PyObject *, int, PyObject **);
 
 
 PyObject *
diff --git a/Python/compile.c b/Python/compile.c
index ce7c0e4..8cf85a7 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -375,30 +375,30 @@
 
 /* Prototype forward declarations */
 
-static int com_init Py_PROTO((struct compiling *, char *));
-static void com_free Py_PROTO((struct compiling *));
-static void com_push Py_PROTO((struct compiling *, int));
-static void com_pop Py_PROTO((struct compiling *, int));
-static void com_done Py_PROTO((struct compiling *));
-static void com_node Py_PROTO((struct compiling *, struct _node *));
-static void com_factor Py_PROTO((struct compiling *, struct _node *));
-static void com_addbyte Py_PROTO((struct compiling *, int));
-static void com_addint Py_PROTO((struct compiling *, int));
-static void com_addoparg Py_PROTO((struct compiling *, int, int));
-static void com_addfwref Py_PROTO((struct compiling *, int, int *));
-static void com_backpatch Py_PROTO((struct compiling *, int));
-static int com_add Py_PROTO((struct compiling *, PyObject *, PyObject *, PyObject *));
-static int com_addconst Py_PROTO((struct compiling *, PyObject *));
-static int com_addname Py_PROTO((struct compiling *, PyObject *));
-static void com_addopname Py_PROTO((struct compiling *, int, node *));
-static void com_list Py_PROTO((struct compiling *, node *, int));
-static int com_argdefs Py_PROTO((struct compiling *, node *));
-static int com_newlocal Py_PROTO((struct compiling *, char *));
-static PyCodeObject *icompile Py_PROTO((struct _node *, struct compiling *));
-static PyCodeObject *jcompile Py_PROTO((struct _node *, char *,
-					struct compiling *));
-static PyObject *parsestrplus Py_PROTO((node *));
-static PyObject *parsestr Py_PROTO((char *));
+static int com_init(struct compiling *, char *);
+static void com_free(struct compiling *);
+static void com_push(struct compiling *, int);
+static void com_pop(struct compiling *, int);
+static void com_done(struct compiling *);
+static void com_node(struct compiling *, struct _node *);
+static void com_factor(struct compiling *, struct _node *);
+static void com_addbyte(struct compiling *, int);
+static void com_addint(struct compiling *, int);
+static void com_addoparg(struct compiling *, int, int);
+static void com_addfwref(struct compiling *, int, int *);
+static void com_backpatch(struct compiling *, int);
+static int com_add(struct compiling *, PyObject *, PyObject *, PyObject *);
+static int com_addconst(struct compiling *, PyObject *);
+static int com_addname(struct compiling *, PyObject *);
+static void com_addopname(struct compiling *, int, node *);
+static void com_list(struct compiling *, node *, int);
+static int com_argdefs(struct compiling *, node *);
+static int com_newlocal(struct compiling *, char *);
+static PyCodeObject *icompile(struct _node *, struct compiling *);
+static PyCodeObject *jcompile(struct _node *, char *,
+			      struct compiling *);
+static PyObject *parsestrplus(node *);
+static PyObject *parsestr(char *);
 
 static int
 com_init(c, filename)
@@ -813,7 +813,7 @@
 	struct compiling *co;
 	char *s;
 {
-	extern double atof Py_PROTO((const char *));
+	extern double atof(const char *);
 	char *end;
 	long x;
 	double dx;
@@ -1823,8 +1823,8 @@
 
 /* Begin of assignment compilation */
 
-static void com_assign_name Py_PROTO((struct compiling *, node *, int));
-static void com_assign Py_PROTO((struct compiling *, node *, int));
+static void com_assign_name(struct compiling *, node *, int);
+static void com_assign(struct compiling *, node *, int);
 
 static void
 com_assign_attr(c, n, assigning)
@@ -2013,7 +2013,7 @@
 	}
 }
 
-/* Forward */ static node *get_rawdocstring Py_PROTO((node *));
+/* Forward */ static node *get_rawdocstring(node *);
 
 static void
 com_expr_stmt(c, n)
@@ -3041,7 +3041,7 @@
 	}
 }
 
-static void com_fplist Py_PROTO((struct compiling *, node *));
+static void com_fplist(struct compiling *, node *);
 
 static void
 com_fpdef(c, n)
diff --git a/Python/errors.c b/Python/errors.c
index d2aa3dd..4a3573e 100644
--- a/Python/errors.c
+++ b/Python/errors.c
@@ -17,14 +17,14 @@
 #endif
 
 #ifdef macintosh
-extern char *PyMac_StrError Py_PROTO((int));
+extern char *PyMac_StrError(int);
 #undef strerror
 #define strerror PyMac_StrError
 #endif /* macintosh */
 
 #ifndef __STDC__
 #ifndef MS_WINDOWS
-extern char *strerror Py_PROTO((int));
+extern char *strerror(int);
 #endif
 #endif
 
diff --git a/Python/getargs.c b/Python/getargs.c
index a28354d..ba855af 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -23,26 +23,25 @@
 #endif
 
 
-int PyArg_Parse Py_PROTO((PyObject *, char *, ...));
-int PyArg_ParseTuple Py_PROTO((PyObject *, char *, ...));
-int PyArg_VaParse Py_PROTO((PyObject *, char *, va_list));
+int PyArg_Parse(PyObject *, char *, ...);
+int PyArg_ParseTuple(PyObject *, char *, ...);
+int PyArg_VaParse(PyObject *, char *, va_list);
 
-int PyArg_ParseTupleAndKeywords Py_PROTO((PyObject *, PyObject *,
-				       char *, char **, ...));
+int PyArg_ParseTupleAndKeywords(PyObject *, PyObject *,
+				char *, char **, ...);
 
 /* Forward */
-static int vgetargs1 Py_PROTO((PyObject *, char *, va_list *, int));
-static void seterror Py_PROTO((int, char *, int *, char *, char *));
-static char *convertitem Py_PROTO((PyObject *, char **, va_list *,
-				   int *, char *));
-static char *converttuple Py_PROTO((PyObject *, char **, va_list *,
-				 int *, char *, int));
-static char *convertsimple Py_PROTO((PyObject *, char **, va_list *, char *));
-static char *convertsimple1 Py_PROTO((PyObject *, char **, va_list *));
+static int vgetargs1(PyObject *, char *, va_list *, int);
+static void seterror(int, char *, int *, char *, char *);
+static char *convertitem(PyObject *, char **, va_list *, int *, char *);
+static char *converttuple(PyObject *, char **, va_list *,
+			  int *, char *, int);
+static char *convertsimple(PyObject *, char **, va_list *, char *);
+static char *convertsimple1(PyObject *, char **, va_list *);
 
-static int vgetargskeywords Py_PROTO((PyObject *, PyObject *,
-				   char *, char **, va_list *));
-static char *skipitem Py_PROTO((char **, va_list *));
+static int vgetargskeywords(PyObject *, PyObject *,
+			    char *, char **, va_list *);
+static char *skipitem(char **, va_list *);
 
 #ifdef HAVE_STDARG_PROTOTYPES
 /* VARARGS2 */
@@ -886,8 +885,7 @@
 				
 			}
 			else if (*format == '&') {
-				typedef int (*converter)
-					Py_PROTO((PyObject *, void *));
+				typedef int (*converter)(PyObject *, void *);
 				converter convert = va_arg(*p_va, converter);
 				void *addr = va_arg(*p_va, void *);
 				format++;
@@ -1323,8 +1321,7 @@
 			}
 #endif
 			else if (*format == '&') {
-				typedef int (*converter)
-					Py_PROTO((PyObject *, void *));
+				typedef int (*converter)(PyObject *, void *);
 				(void) va_arg(*p_va, converter);
 				(void) va_arg(*p_va, void *);
 				format++;
diff --git a/Python/import.c b/Python/import.c
index 7e74f2b..f1efccb 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -763,10 +763,10 @@
 
 
 /* Forward */
-static PyObject *load_module Py_PROTO((char *, FILE *, char *, int));
-static struct filedescr *find_module Py_PROTO((char *, PyObject *,
-					       char *, size_t, FILE **));
-static struct _frozen *find_frozen Py_PROTO((char *name));
+static PyObject *load_module(char *, FILE *, char *, int);
+static struct filedescr *find_module(char *, PyObject *,
+				     char *, size_t, FILE **);
+static struct _frozen *find_frozen(char *name);
 
 /* Load a package and return its module object WITH INCREMENTED
    REFERENCE COUNT */
@@ -855,7 +855,7 @@
 static int check_case(char *, int, int, char *);
 #endif
 
-static int find_init_module Py_PROTO((char *)); /* Forward */
+static int find_init_module(char *); /* Forward */
 
 static struct filedescr *
 find_module(realname, path, buf, buflen, p_fp)
@@ -1206,7 +1206,7 @@
 #endif /* HAVE_STAT */
 
 
-static int init_builtin Py_PROTO((char *)); /* Forward */
+static int init_builtin(char *); /* Forward */
 
 /* Load an external module using the default search path and return
    its module object WITH INCREMENTED REFERENCE COUNT */
@@ -1455,15 +1455,13 @@
 }
 
 /* Forward declarations for helper routines */
-static PyObject *get_parent Py_PROTO((PyObject *globals,
-				      char *buf, int *p_buflen));
-static PyObject *load_next Py_PROTO((PyObject *mod, PyObject *altmod,
-				     char **p_name, char *buf, int *p_buflen));
-static int mark_miss Py_PROTO((char *name));
-static int ensure_fromlist Py_PROTO((PyObject *mod, PyObject *fromlist,
-				     char *buf, int buflen, int recursive));
-static PyObject * import_submodule Py_PROTO((PyObject *mod,
-					     char *name, char *fullname));
+static PyObject *get_parent(PyObject *globals, char *buf, int *p_buflen);
+static PyObject *load_next(PyObject *mod, PyObject *altmod,
+			   char **p_name, char *buf, int *p_buflen);
+static int mark_miss(char *name);
+static int ensure_fromlist(PyObject *mod, PyObject *fromlist,
+			   char *buf, int buflen, int recursive);
+static PyObject * import_submodule(PyObject *mod, char *name, char *fullname);
 
 /* The Magnum Opus of dotted-name import :-) */
 
@@ -2006,7 +2004,7 @@
 	char *name;
 	PyObject *path; /* list or None or NULL */
 {
-	extern int fclose Py_PROTO((FILE *));
+	extern int fclose(FILE *);
 	PyObject *fob, *ret;
 	struct filedescr *fdp;
 	char pathname[MAXPATHLEN+1];
diff --git a/Python/importdl.h b/Python/importdl.h
index 8b2f21e..d67688a 100644
--- a/Python/importdl.h
+++ b/Python/importdl.h
@@ -36,8 +36,8 @@
 extern struct filedescr * _PyImport_Filetab;
 extern const struct filedescr _PyImport_DynLoadFiletab[];
 
-extern PyObject *_PyImport_LoadDynamicModule
-	Py_PROTO((char *name, char *pathname, FILE *));
+extern PyObject *_PyImport_LoadDynamicModule(char *name, char *pathname,
+					     FILE *);
 
 /* Max length of module suffix searched for -- accommodates "module.slb" */
 #define MAXSUFFIXSIZE 12
diff --git a/Python/marshal.c b/Python/marshal.c
index 8fcbe3a..78fe624 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -171,8 +171,7 @@
 			w_short(ob->ob_digit[i], p);
 	}
 	else if (PyFloat_Check(v)) {
-		extern void PyFloat_AsString
-			Py_PROTO((char *, PyFloatObject *));
+		extern void PyFloat_AsString(char *, PyFloatObject *);
 		char buf[256]; /* Plenty to format any double */
 		PyFloat_AsString(buf, (PyFloatObject *)v);
 		n = strlen(buf);
@@ -182,8 +181,7 @@
 	}
 #ifndef WITHOUT_COMPLEX
 	else if (PyComplex_Check(v)) {
-		extern void PyFloat_AsString
-			Py_PROTO((char *, PyFloatObject *));
+		extern void PyFloat_AsString(char *, PyFloatObject *);
 		char buf[256]; /* Plenty to format any double */
 		PyFloatObject *temp;
 		w_byte(TYPE_COMPLEX, p);
@@ -438,7 +436,7 @@
 	
 	case TYPE_FLOAT:
 		{
-			extern double atof Py_PROTO((const char *));
+			extern double atof(const char *);
 			char buf[256];
 			double dx;
 			n = r_byte(p);
@@ -457,7 +455,7 @@
 #ifndef WITHOUT_COMPLEX
 	case TYPE_COMPLEX:
 		{
-			extern double atof Py_PROTO((const char *));
+			extern double atof(const char *);
 			char buf[256];
 			Py_complex c;
 			n = r_byte(p);
diff --git a/Python/modsupport.c b/Python/modsupport.c
index 5cd2870..4a4dc1b 100644
--- a/Python/modsupport.c
+++ b/Python/modsupport.c
@@ -84,7 +84,7 @@
 
 /* Helper for mkvalue() to scan the length of a format */
 
-static int countformat Py_PROTO((char *format, int endchar));
+static int countformat(char *format, int endchar);
 static int countformat(format, endchar)
 	char *format;
 	int endchar;
@@ -130,10 +130,10 @@
 /* Generic function to create a value -- the inverse of getargs() */
 /* After an original idea and first implementation by Steven Miale */
 
-static PyObject *do_mktuple Py_PROTO((char**, va_list *, int, int));
-static PyObject *do_mklist Py_PROTO((char**, va_list *, int, int));
-static PyObject *do_mkdict Py_PROTO((char**, va_list *, int, int));
-static PyObject *do_mkvalue Py_PROTO((char**, va_list *));
+static PyObject *do_mktuple(char**, va_list *, int, int);
+static PyObject *do_mklist(char**, va_list *, int, int);
+static PyObject *do_mkdict(char**, va_list *, int, int);
+static PyObject *do_mkvalue(char**, va_list *);
 
 
 static PyObject *
@@ -358,7 +358,7 @@
 		case 'S':
 		case 'O':
 		if (**p_format == '&') {
-			typedef PyObject *(*converter) Py_PROTO((void *));
+			typedef PyObject *(*converter)(void *);
 			converter func = va_arg(*p_va, converter);
 			void *arg = va_arg(*p_va, void *);
 			++*p_format;
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 1d16db5..74dffae 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -38,18 +38,18 @@
 extern grammar _PyParser_Grammar; /* From graminit.c */
 
 /* Forward */
-static void initmain Py_PROTO((void));
-static void initsite Py_PROTO((void));
-static PyObject *run_err_node Py_PROTO((node *n, char *filename,
-				   PyObject *globals, PyObject *locals));
-static PyObject *run_node Py_PROTO((node *n, char *filename,
-			       PyObject *globals, PyObject *locals));
-static PyObject *run_pyc_file Py_PROTO((FILE *fp, char *filename,
-				   PyObject *globals, PyObject *locals));
-static void err_input Py_PROTO((perrdetail *));
-static void initsigs Py_PROTO((void));
-static void call_sys_exitfunc Py_PROTO((void));
-static void call_ll_exitfuncs Py_PROTO((void));
+static void initmain(void);
+static void initsite(void);
+static PyObject *run_err_node(node *n, char *filename,
+			      PyObject *globals, PyObject *locals);
+static PyObject *run_node(node *n, char *filename,
+			  PyObject *globals, PyObject *locals);
+static PyObject *run_pyc_file(FILE *fp, char *filename,
+			      PyObject *globals, PyObject *locals);
+static void err_input(perrdetail *);
+static void initsigs(void);
+static void call_sys_exitfunc(void);
+static void call_ll_exitfuncs(void);
 
 #ifdef Py_TRACE_REFS
 int _Py_AskYesNo(char *prompt);
@@ -163,7 +163,7 @@
 }
 
 #ifdef COUNT_ALLOCS
-extern void dump_counts Py_PROTO((void));
+extern void dump_counts(void);
 #endif
 
 /* Undo the effect of Py_Initialize().
@@ -1059,7 +1059,7 @@
 static int nexitfuncs = 0;
 
 int Py_AtExit(func)
-	void (*func) Py_PROTO((void));
+	void (*func)(void);
 {
 	if (nexitfuncs >= NEXITFUNCS)
 		return -1;
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index e0fca95..6ba43bd 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -270,7 +270,7 @@
 sys_getcounts(self, args)
 	PyObject *self, *args;
 {
-	extern PyObject *get_counts Py_PROTO((void));
+	extern PyObject *get_counts(void);
 
 	if (!PyArg_ParseTuple(args, ":getcounts"))
 		return NULL;
@@ -280,12 +280,12 @@
 
 #ifdef Py_TRACE_REFS
 /* Defined in objects.c because it uses static globals if that file */
-extern PyObject *_Py_GetObjects Py_PROTO((PyObject *, PyObject *));
+extern PyObject *_Py_GetObjects(PyObject *, PyObject *);
 #endif
 
 #ifdef DYNAMIC_EXECUTION_PROFILE
 /* Defined in ceval.c because it uses static globals if that file */
-extern PyObject *_Py_GetDXProfile Py_PROTO((PyObject *,  PyObject *));
+extern PyObject *_Py_GetDXProfile(PyObject *,  PyObject *);
 #endif
 
 static PyMethodDef sys_methods[] = {
@@ -409,7 +409,7 @@
 PyObject *
 _PySys_Init()
 {
-	extern int fclose Py_PROTO((FILE *));
+	extern int fclose(FILE *);
 	PyObject *m, *v, *sysdict;
 	PyObject *sysin, *sysout, *syserr;
 	char *s;
diff --git a/Tools/freeze/makefreeze.py b/Tools/freeze/makefreeze.py
index 1958f2e..b7bf9fd 100644
--- a/Tools/freeze/makefreeze.py
+++ b/Tools/freeze/makefreeze.py
@@ -22,7 +22,7 @@
     int argc;
     char **argv;
 {
-	extern int Py_FrozenMain Py_PROTO((int, char **));
+	extern int Py_FrozenMain(int, char **);
 """ + ((not __debug__ and """
         Py_OptimizeFlag++;
 """) or "")  + """