diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index fc5ea8f..956c59e 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -221,9 +221,11 @@
 # ifndef RISCOS
 #  include <fcntl.h>
 # else
-#  include <sys/fcntl.h>
+#  include <sys/ioctl.h>
+#  include <socklib.h>
 #  define NO_DUP
 int h_errno; /* not used */
+#  define INET_ADDRSTRLEN 16
 # endif
 
 #else
@@ -464,6 +466,18 @@
 	}
 #endif
 
+#if defined(RISCOS)
+	if (_inet_error.errnum != NULL) {
+		PyObject *v;
+		v = Py_BuildValue("(is)", errno, _inet_err());
+		if (v != NULL) {
+			PyErr_SetObject(socket_error, v);
+			Py_DECREF(v);
+		}
+		return NULL;
+	}
+#endif
+
 	return PyErr_SetFromErrno(socket_error);
 }
 
@@ -548,8 +562,11 @@
 	block = !block;
 	ioctlsocket(s->sock_fd, FIONBIO, (u_long*)&block);
 #endif /* MS_WINDOWS */
-#endif /* __BEOS__ */
+#else /* RISCOS */
+	block = !block;
+	socketioctl(s->sock_fd, FIONBIO, (u_long*)&block);
 #endif /* RISCOS */
+#endif /* __BEOS__ */
 	Py_END_ALLOW_THREADS
 
 	/* Since these don't return anything */
@@ -1211,11 +1228,11 @@
 /* s.sleeptaskw(1 | 0) method */
 
 static PyObject *
-sock_sleeptaskw(PySocketSockObject *s,PyObject *args)
+sock_sleeptaskw(PySocketSockObject *s,PyObject *arg)
 {
 	int block;
-	int delay_flag;
-	if (!PyArg_Parse(args, "i", &block))
+	block = PyInt_AsLong(arg);
+	if (block == -1 && PyErr_Occurred())
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	socketioctl(s->sock_fd, 0x80046679, (u_long*)&block);
@@ -2056,7 +2073,7 @@
 	{"shutdown",	(PyCFunction)sock_shutdown, METH_O,
 			shutdown_doc},
 #ifdef RISCOS
-	{"sleeptaskw",	(PyCFunction)sock_sleeptaskw, METH_VARARGS,
+	{"sleeptaskw",	(PyCFunction)sock_sleeptaskw, METH_O,
 	 		sleeptaskw_doc},
 #endif
 	{NULL,			NULL}		/* sentinel */
@@ -2858,8 +2875,11 @@
 	int af;
 	char* ip;
 	int retval;
+#ifdef ENABLE_IPV6
 	char packed[MAX(sizeof(struct in_addr), sizeof(struct in6_addr))];
-
+#else
+	char packed[sizeof(struct in_addr)];
+#endif
 	if (!PyArg_ParseTuple(args, "is:inet_pton", &af, &ip)) {
 		return NULL;
 	}
@@ -2875,9 +2895,11 @@
 	} else if (af == AF_INET) {
 		return PyString_FromStringAndSize(packed,
 			sizeof(struct in_addr));
+#ifdef ENABLE_IPV6
 	} else if (af == AF_INET6) {
 		return PyString_FromStringAndSize(packed,
 			sizeof(struct in6_addr));
+#endif
 	} else {
 		PyErr_SetString(socket_error, "unknown address family");
 		return NULL;
@@ -2896,7 +2918,11 @@
 	char* packed;
 	int len;
 	const char* retval;
+#ifdef ENABLE_IPV6
 	char ip[MAX(INET_ADDRSTRLEN, INET6_ADDRSTRLEN) + 1];
+#else
+	char ip[INET_ADDRSTRLEN + 1];
+#endif
 	
 	/* Guarantee NUL-termination for PyString_FromString() below */
 	memset((void *) &ip[0], '\0', sizeof(ip) + 1);
@@ -2911,12 +2937,14 @@
 				"invalid length of packed IP address string");
 			return NULL;
 		}
+#ifdef ENABLE_IPV6
 	} else if (af == AF_INET6) {
 		if (len != sizeof(struct in6_addr)) {
 			PyErr_SetString(PyExc_ValueError,
 				"invalid length of packed IP address string");
 			return NULL;
 		}
+#endif
 	} else {
 		PyErr_Format(PyExc_ValueError,
 			"unknown address family %d", af);
@@ -3235,7 +3263,7 @@
 	_kernel_swi(0x43380, &r, &r);
 	taskwindow = r.r[0];
 
-	return 0;
+	return 1;
 }
 
 #endif /* RISCOS */
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 2e28d95..ce25281 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -78,6 +78,10 @@
 #include <kernel/OS.h>
 #endif
 
+#ifdef RISCOS
+extern int riscos_sleep(double);
+#endif
+
 /* Forward declarations */
 static int floatsleep(double);
 static double floattime(void);
@@ -944,7 +948,7 @@
 		return 0;
 	Py_BEGIN_ALLOW_THREADS
 	/* This sleep *CAN BE* interrupted. */
-	if ( sleep(secs) )
+	if ( riscos_sleep(secs) )
 		return -1;
 	Py_END_ALLOW_THREADS
 #elif defined(PLAN9)
diff --git a/Modules/zipimport.c b/Modules/zipimport.c
index 9f7da72..f0eaef5 100644
--- a/Modules/zipimport.c
+++ b/Modules/zipimport.c
@@ -91,6 +91,7 @@
 	path = NULL;
 	prefix = NULL;
 	for (;;) {
+#ifndef RISCOS
 		struct stat statbuf;
 		int rv;
 
@@ -102,6 +103,15 @@
 				path = buf;
 			break;
 		}
+#else
+		if (object_exists(buf)) {
+			/* it exists */
+			if (isfile(buf))
+				/* it's a file */
+				path = buf;
+			break;
+		}
+#endif
 		/* back up one path element */
 		p = strrchr(buf, SEP);
 		if (prefix != NULL)
