* timemodule.c: Add hack for Solaris 2.
* posixmodule.c: don't prototype getcwd() -- it's not portable...
* mappingobject.c: double-check validity of last_name_char in
  dict{lookup,insert,remove}.
* arraymodule.c: need memmove only for non-STDC Suns.
* Makefile: comment out HTML_LIBS and XT_USE by default
* pythonmain.c: don't prototype getopt() -- it's not standardized
* socketmodule.c: cast flags arg to {get,set}sockopt() and addrbuf arg to
  recvfrom() to (ANY*).
* pythonrun.c (initsigs): fix prototype, make it static
* intobject.c (LONG_BIT): only #define it if not already defined
* classobject.[ch]: remove all references to unused instance_convert()
* mappingobject.c (getmappingsize): Don't return NULL in int function.
diff --git a/Include/classobject.h b/Include/classobject.h
index aa1cb6b..a244ef8 100644
--- a/Include/classobject.h
+++ b/Include/classobject.h
@@ -59,8 +59,6 @@
 extern object *instancemethodgetself PROTO((object *));
 extern object *instancemethodgetclass PROTO((object *));
 
-extern object *instance_convert PROTO((object *, char *));
-
 extern int issubclass PROTO((object *, object *));
 
 #ifdef __cplusplus
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index 5b62fee..925a52d 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -37,7 +37,7 @@
 extern char *memcpy();
 #endif
 
-#ifdef sun
+#if defined(sun) && !defined(__STDC__)
 /* SunOS doesn't have memmove */
 #define NEED_MEMMOVE
 extern char *memcpy();
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 00b8369..b82e492 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -58,7 +58,7 @@
 
 #ifdef SYSV
 
-#define UTIME_STRUCT
+#define UTIME_STRUCT 1
 #include <dirent.h>
 #define direct dirent
 #ifdef i386
@@ -89,7 +89,7 @@
 extern int chdir PROTO((const char *));
 extern int rmdir PROTO((const char *));
 extern int chmod PROTO((const char *, mode_t));
-extern char *getcwd PROTO((char *, int)); /* XXX or size_t? */
+extern char *getcwd(); /* No PROTO((char *, int)) -- non portable */
 #ifndef MSDOS
 extern char *strerror PROTO((int));
 extern int link PROTO((const char *, const char *));
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index dfdf97b..3fc8755 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -388,7 +388,7 @@
 	if (!getargs(args, "i", &flag))
 		return NULL;
 	res = setsockopt(s->sock_fd, SOL_SOCKET, SO_BROADCAST,
-			 &flag, sizeof flag);
+			 (ANY *)&flag, sizeof flag);
 	if (res < 0)
 		return socket_error();
 	INCREF(None);
@@ -422,7 +422,7 @@
 		if (!getargs(args, "(iis#)", &level, &optname, &buf, &buflen))
 			return NULL;
 	}
-	res = setsockopt(s->sock_fd, level, optname, buf, buflen);
+	res = setsockopt(s->sock_fd, level, optname, (ANY *)buf, buflen);
 	if (res < 0)
 		return socket_error();
 	INCREF(None);
@@ -450,7 +450,8 @@
 	if (getargs(args, "(ii)", &level, &optname)) {
 		int flag = 0;
 		int flagsize = sizeof flag;
-		res = getsockopt(s->sock_fd, level, optname, &flag, &flagsize);
+		res = getsockopt(s->sock_fd, level, optname,
+				 (ANY *)&flag, &flagsize);
 		if (res < 0)
 			return socket_error();
 		return newintobject(flag);
@@ -465,8 +466,8 @@
 	buf = newsizedstringobject((char *)NULL, buflen);
 	if (buf == NULL)
 		return NULL;
-	res = getsockopt(s->sock_fd, level, optname, getstringvalue(buf),
-			 &buflen);
+	res = getsockopt(s->sock_fd, level, optname,
+			 (ANY *)getstringvalue(buf), &buflen);
 	if (res < 0) {
 		DECREF(buf);
 		return socket_error();
@@ -720,7 +721,7 @@
 		return NULL;
 	BGN_SAVE
 	n = recvfrom(s->sock_fd, getstringvalue(buf), len, flags,
-		     addrbuf, &addrlen);
+		     (ANY *)addrbuf, &addrlen);
 	END_SAVE
 	if (n < 0)
 		return socket_error();
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 5bf1340..5406907 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -72,6 +72,13 @@
 #endif /* !unix */
 
 #ifdef SYSV
+#if defined(sun) && defined(__STDC__)
+/* Temporary hack for Solaris 2. */
+#define _timezone timezone
+#define _altzone altzone
+#define _daylight daylight
+#define _tzname tzname
+#endif
 /* Access timezone stuff */
 #ifdef OLDTZ				/* ANSI prepends underscore to these */
 #define _timezone	timezone	/* seconds to be added to GMT */
diff --git a/Objects/classobject.c b/Objects/classobject.c
index 6008999..268cf1a 100644
--- a/Objects/classobject.c
+++ b/Objects/classobject.c
@@ -960,14 +960,6 @@
 	instance_hash,		/*tp_hash*/
 };
 
-static object *
-instance_convert(inst, methodname)
-	object *inst;
-	char *methodname;
-{
-	return generic_unary_op((instanceobject *)inst, methodname);
-}
-
 
 /* Instance method objects are used for two purposes:
    (a) as bound instance methods (returned by instancename.methodname)
diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index 65512be..972560d 100644
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -572,7 +572,7 @@
 {
 	if (mp == NULL || !is_mappingobject(mp)) {
 		err_badcall();
-		return NULL;
+		return 0;
 	}
 	return ((mappingobject *)mp)->ma_used;
 }
@@ -773,7 +773,7 @@
 	object *v;
 	char *key;
 {
-	if (key != last_name_char) {
+	if (key != last_name_char || strcmp(key, getstringvalue(last_name_object)) != 0) {
 		XDECREF(last_name_object);
 		last_name_object = newstringobject(key);
 		if (last_name_object == NULL) {
@@ -791,7 +791,7 @@
 	char *key;
 	object *item;
 {
-	if (key != last_name_char) {
+	if (key != last_name_char || strcmp(key, getstringvalue(last_name_object)) != 0) {
 		XDECREF(last_name_object);
 		last_name_object = newstringobject(key);
 		if (last_name_object == NULL) {
@@ -808,7 +808,8 @@
 	object *v;
 	char *key;
 {
-	if (key != last_name_char) {
+	if (key != last_name_char ||
+	    strcmp(key, getstringvalue(last_name_object)) != 0) {
 		XDECREF(last_name_object);
 		last_name_object = newstringobject(key);
 		if (last_name_object == NULL) {
diff --git a/Objects/intobject.c b/Objects/intobject.c
index 2953ffa..e9c35d7 100644
--- a/Objects/intobject.c
+++ b/Objects/intobject.c
@@ -43,7 +43,9 @@
 #define CHAR_BIT 8
 #endif
 
+#ifndef LONG_BIT
 #define LONG_BIT (CHAR_BIT * sizeof(long))
+#endif
 
 /* Standard Booleans */
 
diff --git a/Objects/mappingobject.c b/Objects/mappingobject.c
index 65512be..972560d 100644
--- a/Objects/mappingobject.c
+++ b/Objects/mappingobject.c
@@ -572,7 +572,7 @@
 {
 	if (mp == NULL || !is_mappingobject(mp)) {
 		err_badcall();
-		return NULL;
+		return 0;
 	}
 	return ((mappingobject *)mp)->ma_used;
 }
@@ -773,7 +773,7 @@
 	object *v;
 	char *key;
 {
-	if (key != last_name_char) {
+	if (key != last_name_char || strcmp(key, getstringvalue(last_name_object)) != 0) {
 		XDECREF(last_name_object);
 		last_name_object = newstringobject(key);
 		if (last_name_object == NULL) {
@@ -791,7 +791,7 @@
 	char *key;
 	object *item;
 {
-	if (key != last_name_char) {
+	if (key != last_name_char || strcmp(key, getstringvalue(last_name_object)) != 0) {
 		XDECREF(last_name_object);
 		last_name_object = newstringobject(key);
 		if (last_name_object == NULL) {
@@ -808,7 +808,8 @@
 	object *v;
 	char *key;
 {
-	if (key != last_name_char) {
+	if (key != last_name_char ||
+	    strcmp(key, getstringvalue(last_name_object)) != 0) {
 		XDECREF(last_name_object);
 		last_name_object = newstringobject(key);
 		if (last_name_object == NULL) {
diff --git a/Python/pythonmain.c b/Python/pythonmain.c
index ac1d86a..48ccd38 100644
--- a/Python/pythonmain.c
+++ b/Python/pythonmain.c
@@ -33,7 +33,7 @@
 /* Interface to getopt(): */
 extern int optind;
 extern char *optarg;
-extern int getopt PROTO((int, char **, char *));
+extern int getopt(); /* PROTO((int, char **, char *)); -- not standardized */
 
 extern char *getenv();
 
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 56254ac..ac7e040 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -58,7 +58,7 @@
 			       object *globals, object *locals));
 static object *eval_node PROTO((node *n, char *filename,
 				object *globals, object *locals));
-void initsigs PROTO(());
+static void initsigs PROTO((void));
 
 int debugging; /* Needed by parser.c */
 int verbose; /* Needed by import.c */