Another bulky set of minor changes.
Note addition of gethostbyaddr() and improved repr() for sockets,
renaming of md5.md5() to md5.new(), and fixing of leaks in threads.
diff --git a/Modules/mpzmodule.c b/Modules/mpzmodule.c
index 9d0bdb0..0067397 100644
--- a/Modules/mpzmodule.c
+++ b/Modules/mpzmodule.c
@@ -35,6 +35,7 @@
 
 #include "allobjects.h"
 #include "modsupport.h"		/* For getargs() etc. */
+#include "rename1.h"
 #include <assert.h>
 #include <sys/types.h>		/* For size_t */
 
@@ -573,14 +574,26 @@
 } /* mpz_div_and_mod() */
 
 static object *
-mpz_power(a, b)
+mpz_power(a, b, m)
 	mpzobject *a;
 	mpzobject *b;
+        mpzobject *m;
 {
 	mpzobject *z;
 	int cmpres;
 	long int longtmp1, longtmp2;
 
+ 	if ((object *)m!=Py_None)
+ 	  {
+ 	    mpzobject *z2;
+	    INCREF(Py_None);
+ 	    z=mpz_power(a, b, (mpzobject *)Py_None);
+	    DECREF(Py_None);
+ 	    if (z==NULL) return(z);
+ 	    z2=mpz_remainder(z, m);
+ 	    DECREF(z);
+ 	    return((object *)z2);
+ 	  }	    
 
 	if ((cmpres = mpz_cmp_ui(&b->mpz, (unsigned long int)0)) == 0) {
 		/* the gnu-mp lib sets pow(0,0) to 0, we to 1 */
@@ -1607,6 +1620,7 @@
 
 #define UF (unaryfunc)
 #define BF (binaryfunc)
+#define TF (ternaryfunc)
 #define IF (inquiry)
 #define CF (coercion)
 
@@ -1617,7 +1631,7 @@
 	BF mpz_divide,		/*nb_divide*/
 	BF mpz_remainder,	/*nb_remainder*/
 	BF mpz_div_and_mod,	/*nb_divmod*/
-	BF mpz_power,		/*nb_power*/
+	TF mpz_power,		/*nb_power*/
 	UF mpz_negative,	/*nb_negative*/
 	UF mpz_positive,	/*tp_positive*/
 	UF mpz_absolute,	/*tp_absolute*/
@@ -1779,15 +1793,15 @@
 
 	/* create some frequently used constants */
 	if ((mpz_value_zero = newmpzobject()) == NULL)
-		fatal("initmpz: can't initialize mpz contstants");
+		fatal("initmpz: can't initialize mpz constants");
 	mpz_set_ui(&mpz_value_zero->mpz, (unsigned long int)0);
 
 	if ((mpz_value_one = newmpzobject()) == NULL)
-		fatal("initmpz: can't initialize mpz contstants");
+		fatal("initmpz: can't initialize mpz constants");
 	mpz_set_ui(&mpz_value_one->mpz, (unsigned long int)1);
 
 	if ((mpz_value_mone = newmpzobject()) == NULL)
-		fatal("initmpz: can't initialize mpz contstants");
+		fatal("initmpz: can't initialize mpz constants");
 	mpz_set_si(&mpz_value_mone->mpz, (long)-1);
 
 } /* initmpz() */