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 */
