initpyexpat():  Code cleanup; makes it more robust and reduces warnings.
                Added prototype to remove yet another warning.

Make a number of the handlers and helpers "static" since they are not
used in other C source files.  This also reduces the number of warnings.

Make a lot of the code "more Python".  (Need to get the style guide done!)
diff --git a/Modules/pyexpat.c b/Modules/pyexpat.c
index 2b8d03e..8b29d4b 100644
--- a/Modules/pyexpat.c
+++ b/Modules/pyexpat.c
@@ -57,7 +57,7 @@
 
 staticforward PyTypeObject Xmlparsetype;
 
-typedef void (*xmlhandlersetter)( XML_Parser *self, void *meth );
+typedef void (*xmlhandlersetter)(XML_Parser *self, void *meth);
 typedef void* xmlhandler;
 
 struct HandlerInfo {
@@ -178,42 +178,50 @@
         Py_INCREF(Py_None);
         return Py_None;
     }
-    return PyUnicode_DecodeUTF8((const char *)str, 
-                                len, 
-                                "strict");
+    return PyUnicode_DecodeUTF8((const char *)str, len, "strict");
 }
 #endif
 
 /* Convert a string of XML_Chars into an 8-bit Python string.
    Returns None if str is a null pointer. */
 
-static PyObject *conv_string_to_utf8( XML_Char *str ) {
-  /* XXX currently this code assumes that XML_Char is 8-bit, 
-     and hence in UTF-8.  */
-  /* UTF-8 from Expat, UTF-8 desired */
-  if (str == NULL) {Py_INCREF(Py_None); return Py_None;}
-  return PyString_FromString( (const char *)str );
+static PyObject *
+conv_string_to_utf8(XML_Char *str)
+{
+    /* XXX currently this code assumes that XML_Char is 8-bit, 
+       and hence in UTF-8.  */
+    /* UTF-8 from Expat, UTF-8 desired */
+    if (str == NULL) {
+        Py_INCREF(Py_None);
+        return Py_None;
+    }
+    return PyString_FromString((const char *)str);
 }
 
-static PyObject *conv_string_len_to_utf8( const XML_Char *str, 
-					  int len ) 
+static PyObject *
+conv_string_len_to_utf8(const XML_Char *str,  int len) 
 {
-  /* XXX currently this code assumes that XML_Char is 8-bit, 
-     and hence in UTF-8.  */
-  /* UTF-8 from Expat, UTF-8 desired */
-  if (str == NULL) {Py_INCREF(Py_None); return Py_None;}
-  return PyString_FromStringAndSize( (const char *)str, len );
+    /* XXX currently this code assumes that XML_Char is 8-bit, 
+       and hence in UTF-8.  */
+    /* UTF-8 from Expat, UTF-8 desired */
+    if (str == NULL) {
+        Py_INCREF(Py_None);
+        return Py_None;
+    }
+    return PyString_FromStringAndSize((const char *)str, len);
 }
 
 /* Callback routines */
 
-static void clear_handlers( xmlparseobject *self );
+static void clear_handlers(xmlparseobject *self);
 
-static void flag_error( xmlparseobject *self ){
-	clear_handlers(self);
+static void
+flag_error(xmlparseobject *self)
+{
+    clear_handlers(self);
 }
 
-#define RC_HANDLER( RC, NAME, PARAMS, INIT, PARAM_FORMAT, CONVERSION, \
+#define RC_HANDLER(RC, NAME, PARAMS, INIT, PARAM_FORMAT, CONVERSION, \
 		RETURN, GETUSERDATA) \
 \
 static RC my_##NAME##Handler PARAMS {\
@@ -229,7 +237,7 @@
 		rv = PyEval_CallObject(self->handlers[NAME], args); \
 		Py_DECREF(args); \
 		if (rv == NULL) { \
-			flag_error( self ); \
+			flag_error(self); \
 			return RETURN; \
 		} \
 		CONVERSION \
@@ -246,53 +254,53 @@
                           ? conv_string_to_unicode : conv_string_to_utf8)
 #endif
 
-#define VOID_HANDLER( NAME, PARAMS, PARAM_FORMAT ) \
-	RC_HANDLER( void, NAME, PARAMS, ;, PARAM_FORMAT, ;, ;,\
-	(xmlparseobject *)userData )
+#define VOID_HANDLER(NAME, PARAMS, PARAM_FORMAT) \
+	RC_HANDLER(void, NAME, PARAMS, ;, PARAM_FORMAT, ;, ;,\
+	(xmlparseobject *)userData)
 
-#define INT_HANDLER( NAME, PARAMS, PARAM_FORMAT )\
-	RC_HANDLER( int, NAME, PARAMS, int rc=0;, PARAM_FORMAT,  \
-			rc = PyInt_AsLong( rv );, rc, \
-	(xmlparseobject *)userData )
+#define INT_HANDLER(NAME, PARAMS, PARAM_FORMAT)\
+	RC_HANDLER(int, NAME, PARAMS, int rc=0;, PARAM_FORMAT, \
+			rc = PyInt_AsLong(rv);, rc, \
+	(xmlparseobject *)userData)
 
 #if PY_MAJOR_VERSION == 1 && PY_MINOR_VERSION < 6
-VOID_HANDLER( StartElement, 
-		(void *userData, const XML_Char *name, const XML_Char **atts ), 
+VOID_HANDLER(StartElement, 
+		(void *userData, const XML_Char *name, const XML_Char **atts), 
                 ("(O&O&)", STRING_CONV_FUNC, name, 
 		 conv_atts_using_string, atts ) )
 #else
 /* Python 1.6 and later */
-VOID_HANDLER( StartElement, 
-		(void *userData, const XML_Char *name, const XML_Char **atts ), 
+VOID_HANDLER(StartElement, 
+		(void *userData, const XML_Char *name, const XML_Char **atts), 
                 ("(O&O&)", STRING_CONV_FUNC, name, 
 		 (self->returns_unicode  
 		  ? conv_atts_using_unicode 
-		  : conv_atts_using_string), atts ) )
+		  : conv_atts_using_string), atts))
 #endif
 
-VOID_HANDLER( EndElement, 
-		(void *userData, const XML_Char *name ), 
-                ("(O&)", STRING_CONV_FUNC, name) )
+VOID_HANDLER(EndElement, 
+		(void *userData, const XML_Char *name), 
+                ("(O&)", STRING_CONV_FUNC, name))
 
-VOID_HANDLER( ProcessingInstruction,
+VOID_HANDLER(ProcessingInstruction,
 		(void *userData, 
 		const XML_Char *target, 
 		const XML_Char *data),
-                ("(O&O&)",STRING_CONV_FUNC,target, STRING_CONV_FUNC,data ))
+                ("(O&O&)",STRING_CONV_FUNC,target, STRING_CONV_FUNC,data))
 
 #if PY_MAJOR_VERSION == 1 && PY_MINOR_VERSION < 6
-VOID_HANDLER( CharacterData, 
+VOID_HANDLER(CharacterData, 
 	      (void *userData, const XML_Char *data, int len), 
-	      ("(O)", conv_string_len_to_utf8(data,len) ) )
+	      ("(O)", conv_string_len_to_utf8(data,len)))
 #else
-VOID_HANDLER( CharacterData, 
+VOID_HANDLER(CharacterData, 
 	      (void *userData, const XML_Char *data, int len), 
 	      ("(O)", (self->returns_unicode 
 		       ? conv_string_len_to_unicode(data,len) 
-		       : conv_string_len_to_utf8(data,len) ) ) )
+		       : conv_string_len_to_utf8(data,len))))
 #endif
 
-VOID_HANDLER( UnparsedEntityDecl,
+VOID_HANDLER(UnparsedEntityDecl,
 		(void *userData, 
 			const XML_Char *entityName,
 			const XML_Char *base,
@@ -304,7 +312,7 @@
 		 STRING_CONV_FUNC,systemId, STRING_CONV_FUNC,publicId, 
 		 STRING_CONV_FUNC,notationName))
 
-VOID_HANDLER( NotationDecl, 
+VOID_HANDLER(NotationDecl, 
 		(void *userData,
 			const XML_Char *notationName,
 			const XML_Char *base,
@@ -314,56 +322,56 @@
 		 STRING_CONV_FUNC,notationName, STRING_CONV_FUNC,base, 
 		 STRING_CONV_FUNC,systemId, STRING_CONV_FUNC,publicId))
 
-VOID_HANDLER( StartNamespaceDecl,
+VOID_HANDLER(StartNamespaceDecl,
 		(void *userData,
 		      const XML_Char *prefix,
 		      const XML_Char *uri),
-                ("(O&O&)", STRING_CONV_FUNC,prefix, STRING_CONV_FUNC,uri ))
+                ("(O&O&)", STRING_CONV_FUNC,prefix, STRING_CONV_FUNC,uri))
 
-VOID_HANDLER( EndNamespaceDecl,
+VOID_HANDLER(EndNamespaceDecl,
 		(void *userData,
 		    const XML_Char *prefix),
-                ("(O&)", STRING_CONV_FUNC,prefix ))
+                ("(O&)", STRING_CONV_FUNC,prefix))
 
-VOID_HANDLER( Comment,
+VOID_HANDLER(Comment,
                (void *userData, const XML_Char *prefix),
                 ("(O&)", STRING_CONV_FUNC,prefix))
 
-VOID_HANDLER( StartCdataSection,
+VOID_HANDLER(StartCdataSection,
                (void *userData),
-		("()" ))
+		("()"))
 		
-VOID_HANDLER( EndCdataSection,
+VOID_HANDLER(EndCdataSection,
                (void *userData),
-		("()" ))
+		("()"))
 
 #if PY_MAJOR_VERSION == 1 && PY_MINOR_VERSION < 6
-VOID_HANDLER( Default,
+VOID_HANDLER(Default,
 	      (void *userData,  const XML_Char *s, int len),
-	      ("(O)", conv_string_len_to_utf8(s,len) ) )
+	      ("(O)", conv_string_len_to_utf8(s,len)))
 
-VOID_HANDLER( DefaultHandlerExpand,
+VOID_HANDLER(DefaultHandlerExpand,
 	      (void *userData,  const XML_Char *s, int len),
-	      ("(O)", conv_string_len_to_utf8(s,len) ) )
+	      ("(O)", conv_string_len_to_utf8(s,len)))
 #else
-VOID_HANDLER( Default,
+VOID_HANDLER(Default,
 	      (void *userData,  const XML_Char *s, int len),
 	      ("(O)", (self->returns_unicode 
 		       ? conv_string_len_to_unicode(s,len) 
-		       : conv_string_len_to_utf8(s,len) ) ) )
+		       : conv_string_len_to_utf8(s,len))))
 
-VOID_HANDLER( DefaultHandlerExpand,
+VOID_HANDLER(DefaultHandlerExpand,
 	      (void *userData,  const XML_Char *s, int len),
 	      ("(O)", (self->returns_unicode 
 		       ? conv_string_len_to_unicode(s,len) 
-		       : conv_string_len_to_utf8(s,len) ) ) )
+		       : conv_string_len_to_utf8(s,len))))
 #endif
 
-INT_HANDLER( NotStandalone, 
+INT_HANDLER(NotStandalone, 
 		(void *userData), 
 		("()"))
 
-RC_HANDLER( int, ExternalEntityRef,
+RC_HANDLER(int, ExternalEntityRef,
 		(XML_Parser parser,
 		    const XML_Char *context,
 		    const XML_Char *base,
@@ -372,9 +380,9 @@
 		int rc=0;,
                 ("(O&O&O&O&)", 
 		 STRING_CONV_FUNC,context, STRING_CONV_FUNC,base, 
-		 STRING_CONV_FUNC,systemId, STRING_CONV_FUNC,publicId ),
-		rc = PyInt_AsLong( rv );, rc,
-		XML_GetUserData( parser ) )
+		 STRING_CONV_FUNC,systemId, STRING_CONV_FUNC,publicId),
+		rc = PyInt_AsLong(rv);, rc,
+		XML_GetUserData(parser))
 		
 
 
@@ -477,7 +485,7 @@
         goto finally;
 
     /* XXX what to do if it returns a Unicode string? */
-    UNLESS(PyString_Check( str )) {
+    UNLESS(PyString_Check(str)) {
         PyErr_Format(PyExc_TypeError, 
                      "read() did not return a string object (type=%.400s)",
                      str->ob_type->tp_name);
@@ -718,7 +726,8 @@
     return Py_FindMethod(xmlparse_methods, (PyObject *)self, name);
 }
 
-static int sethandler(xmlparseobject *self, const char *name, PyObject* v)
+static int
+sethandler(xmlparseobject *self, const char *name, PyObject* v)
 {
     int handlernum = handlername2int(name);
     if (handlernum != -1) {
@@ -733,36 +742,35 @@
 }
 
 static int
-xmlparse_setattr( xmlparseobject *self, char *name, PyObject *v)
+xmlparse_setattr(xmlparseobject *self, char *name, PyObject *v)
 {
-	/* Set attribute 'name' to value 'v'. v==NULL means delete */
-	if (v==NULL) {
-		PyErr_SetString(PyExc_RuntimeError, "Cannot delete attribute");
-		return -1;
-	}
-
-        if (strcmp(name, "returns_unicode") == 0) {
-		PyObject *intobj = PyNumber_Int(v);
-		if (intobj == NULL) return -1;
-		if (PyInt_AsLong(intobj)) {
+    /* Set attribute 'name' to value 'v'. v==NULL means delete */
+    if (v==NULL) {
+        PyErr_SetString(PyExc_RuntimeError, "Cannot delete attribute");
+        return -1;
+    }
+    if (strcmp(name, "returns_unicode") == 0) {
+        PyObject *intobj = PyNumber_Int(v);
+        if (intobj == NULL) return -1;
+        if (PyInt_AsLong(intobj)) {
 #if PY_MAJOR_VERSION == 1 && PY_MINOR_VERSION < 6
-		  PyErr_SetString(PyExc_ValueError, 
-			 "Cannot return Unicode strings in Python 1.5");
-		  return -1;
+            PyErr_SetString(PyExc_ValueError, 
+                            "Cannot return Unicode strings in Python 1.5");
+            return -1;
 #else
-		  self->returns_unicode = 1;
+            self->returns_unicode = 1;
 #endif
-		}
-		else                      self->returns_unicode = 0;
-		Py_DECREF(intobj);
-		return 0;
-	}
-	if( sethandler( self, name, v ) ){
-		return 0;
-	}
-
-	PyErr_SetString( PyExc_AttributeError, name );
-	return -1;
+        }
+        else
+            self->returns_unicode = 0;
+        Py_DECREF(intobj);
+        return 0;
+    }
+    if (sethandler(self, name, v)) {
+        return 0;
+    }
+    PyErr_SetString(PyExc_AttributeError, name);
+    return -1;
 }
 
 static char Xmlparsetype__doc__[] = 
@@ -846,14 +854,20 @@
 
 /* Initialization function for the module */
 
-void
+DL_IMPORT(void) initpyexpat(void);
+
+DL_EXPORT(void)
 initpyexpat(void)
 {
     PyObject *m, *d;
     char *rev = "$Revision$";
+    PyObject *errmod_name = PyString_FromString("pyexpat.errors");
     PyObject *errors_module, *errors_dict;
     PyObject *sys_modules;
 
+    if (errmod_name == NULL)
+        return;
+
     Xmlparsetype.ob_type = &PyType_Type;
 
     /* Create the module and add the functions */
@@ -878,25 +892,20 @@
     PyDict_SetItemString(d, "native_encoding", 
                          PyString_FromString("UTF-8"));
 
-    sys_modules = PySys_GetObject("modules");
-    {
-        PyObject *errmod_name = PyString_FromString("pyexpat.errors");
-
-        if (errmod_name != NULL) {
-            errors_module = PyDict_GetItem(d, errmod_name);
-            if (errors_module == NULL) {
-                errors_module = PyModule_New("pyexpat.errors");
-                if (errors_module != NULL) {
-                    PyDict_SetItemString(d, "errors", errors_module);
-                    PyDict_SetItem(sys_modules, errmod_name, errors_module);
-                }
-            }
-            Py_DECREF(errmod_name);
-            if (errors_module == NULL)
-                /* Don't code dump later! */
-                return;
+    errors_module = PyDict_GetItem(d, errmod_name);
+    if (errors_module == NULL) {
+        errors_module = PyModule_New("pyexpat.errors");
+        if (errors_module != NULL) {
+            sys_modules = PySys_GetObject("modules");
+            PyDict_SetItemString(d, "errors", errors_module);
+            PyDict_SetItem(sys_modules, errmod_name, errors_module);
         }
     }
+    Py_DECREF(errmod_name);
+    if (errors_module == NULL)
+        /* Don't code dump later! */
+        return;
+
     errors_dict = PyModule_GetDict(errors_module);
 
 #define MYCONST(name) \
@@ -924,22 +933,24 @@
     MYCONST(XML_ERROR_INCORRECT_ENCODING);
 }
 
-void clear_handlers(xmlparseobject *self)
+static void
+clear_handlers(xmlparseobject *self)
 {
     int i = 0;
 
     for (; handler_info[i].name!=NULL; i++) {
         self->handlers[i]=NULL;
-        handler_info[i].setter( self->itself, NULL );
+        handler_info[i].setter(self->itself, NULL);
     }
 }
 
-typedef void (*pairsetter)( XML_Parser, void *handler1, void *handler2 );
+typedef void (*pairsetter)(XML_Parser, void *handler1, void *handler2);
 
-void pyxml_UpdatePairedHandlers(xmlparseobject *self, 
-				int startHandler, 
-				int endHandler,
-				pairsetter setter)
+static void
+pyxml_UpdatePairedHandlers(xmlparseobject *self, 
+                           int startHandler, 
+                           int endHandler,
+                           pairsetter setter)
 {
     void *start_handler=NULL;
     void *end_handler=NULL;
@@ -955,42 +966,48 @@
     setter(self->itself, start_handler, end_handler);
 }
 
-void pyxml_SetStartElementHandler(XML_Parser *parser, void *junk)
+static void
+pyxml_SetStartElementHandler(XML_Parser *parser, void *junk)
 {
     pyxml_UpdatePairedHandlers((xmlparseobject *)XML_GetUserData(parser),
                                StartElement, EndElement,
                                (pairsetter)XML_SetElementHandler);
 }
 
-void pyxml_SetEndElementHandler(XML_Parser *parser, void *junk)
+static void
+pyxml_SetEndElementHandler(XML_Parser *parser, void *junk)
 {
     pyxml_UpdatePairedHandlers((xmlparseobject *)XML_GetUserData(parser), 
                                StartElement, EndElement,
                                (pairsetter)XML_SetElementHandler);
 }
 
-void pyxml_SetStartNamespaceDeclHandler(XML_Parser *parser, void *junk)
+static void
+pyxml_SetStartNamespaceDeclHandler(XML_Parser *parser, void *junk)
 {
     pyxml_UpdatePairedHandlers((xmlparseobject *)XML_GetUserData(parser), 
                                StartNamespaceDecl, EndNamespaceDecl,
                                (pairsetter)XML_SetNamespaceDeclHandler);
 }
 
-void pyxml_SetEndNamespaceDeclHandler(XML_Parser *parser, void *junk)
+static void
+pyxml_SetEndNamespaceDeclHandler(XML_Parser *parser, void *junk)
 {
     pyxml_UpdatePairedHandlers((xmlparseobject *)XML_GetUserData(parser), 
                                StartNamespaceDecl, EndNamespaceDecl,
                                (pairsetter)XML_SetNamespaceDeclHandler);
 }
 
-void pyxml_SetStartCdataSection(XML_Parser *parser, void *junk)
+static void
+pyxml_SetStartCdataSection(XML_Parser *parser, void *junk)
 {
     pyxml_UpdatePairedHandlers((xmlparseobject *)XML_GetUserData(parser),
                                StartCdataSection, EndCdataSection,
                                (pairsetter)XML_SetCdataSectionHandler);
 }
 
-void pyxml_SetEndCdataSection(XML_Parser *parser, void *junk)
+static void
+pyxml_SetEndCdataSection(XML_Parser *parser, void *junk)
 {
     pyxml_UpdatePairedHandlers((xmlparseobject *)XML_GetUserData(parser), 
                                StartCdataSection, EndCdataSection,