Patch #734231: Update RiscOS support. In particular, correct
riscospath.extsep, and use os.extsep throughout.
diff --git a/RISCOS/Makefile b/RISCOS/Makefile
index bcfca81..97f10fb 100644
--- a/RISCOS/Makefile
+++ b/RISCOS/Makefile
@@ -7,14 +7,15 @@
 TCPIPLIB = $(LIBSROOT).TCPIPLibs
 DLKLIB = $(LIBSROOT).dlk
 ZLIB = $(LIBSROOT).zlib
+BZLIB = $(LIBSROOT).bzlib
 EXPAT = $(LIBSROOT).expat.lib
 
-OBJSCAN = objscan
-MAKEDLK = makedlk
+OBJSCAN = $(DLKLIB).objscan
+MAKEDLK = $(DLKLIB).makedlk
 
 # change from time to time (don't forget to change !Boot also)
-TARGET=Python22
-BUILD=25
+TARGET=Python23
+BUILD=40
 
 
 #
@@ -61,14 +62,16 @@
 	@.^.Lib.array/pyd\
 	@.^.Lib.audioop/pyd\
 	@.^.Lib.binascii/pyd\
+	@.^.Lib.bz2/pyd\
 	@.^.Lib.cmath/pyd\
 	@.^.Lib.cPickle/pyd\
 	@.^.Lib.cStringIO/pyd\
+	@.^.Lib.datetime/pyd\
 	@.^.Lib.errno/pyd\
 	@.^.Lib.imageop/pyd\
+	@.^.Lib.itertools/pyd\
 	@.^.Lib.math/pyd\
 	@.^.Lib.md5/pyd\
-	@.^.Lib.new/pyd\
 	@.^.Lib.operator/pyd\
 	@.^.Lib.parser/pyd\
 	@.^.Lib.pcre/pyd\
@@ -93,7 +96,10 @@
 	@.^.Lib.plat-riscos.swi/pyd\
 	@.^.Lib._sre/pyd\
 	@.^.Lib.xxsubtype/pyd\
-	@.^.Lib._symtable/pyd
+	@.^.Lib._symtable/pyd\
+	@.^.Lib._random/pyd\
+	@.^.Lib.zipimport/pyd\
+	@.^.Lib._csv/pyd
 
 
 OBJECTS_PYTHON =\
@@ -125,7 +131,6 @@
 	@.^.Python.o.ceval\
 	@.^.Python.o.bltinmodule\
 	@.^.Python.o.exceptions\
-	@.^.Python.o.hypot\
 	@.^.Python.o.codecs\
 	@.^.Python.o.symtable\
 	@.^.Python.o.future
@@ -145,16 +150,19 @@
 	@.^.Objects.o.sliceobject\
 	@.^.Objects.o.rangeobject\
 	@.^.Objects.o.object\
+	@.^.Objects.o.obmalloc\
 	@.^.Objects.o.moduleobject\
 	@.^.Objects.o.methodobject\
 	@.^.Objects.o.longobject\
 	@.^.Objects.o.listobject\
 	@.^.Objects.o.intobject\
+	@.^.Objects.o.boolobject\
 	@.^.Objects.o.iterobject\
 	@.^.Objects.o.funcobject\
 	@.^.Objects.o.frameobject\
 	@.^.Objects.o.floatobject\
 	@.^.Objects.o.fileobject\
+	@.^.Objects.o.enumobject\
 	@.^.Objects.o.dictobject\
 	@.^.Objects.o.complexobject\
 	@.^.Objects.o.cobject\
@@ -244,16 +252,25 @@
 @.^.Lib.cStringIO/pyd: @.^.Modules.o.cStringIO s.linktab
 	$(MAKEDLK) -d @.^.Lib.cStringIO/pyd -s s.linktab -o @.^.Modules.o.cStringIO -e initcStringIO
 
+@.^.Lib._csv/pyd: @.^.Modules.o._csv s.linktab
+	$(MAKEDLK) -d @.^.Lib._csv/pyd -s s.linktab -o @.^.Modules.o._csv -e init_csv
+
 @.^.Lib.plat-riscos.drawf/pyd: Modules.o.drawfmodule #s.linktab
 	$(LINK) -aof -o Modules.o.drawflink Modules.o.drawfmodule $(OSLIB).o.OSLIB32
 	$(MAKEDLK) -d @.^.Lib.plat-riscos.drawf/pyd -s s.linktab -o Modules.o.drawflink -e initdrawf
 
+@.^.Lib.datetime/pyd: @.^.Modules.o.datetimemodule s.linktab
+	$(MAKEDLK) -d @.^.Lib.datetime/pyd -s s.linktab -o @.^.Modules.o.datetimemodule -e initdatetime
+
 @.^.Lib.errno/pyd: @.^.Modules.o.errnomodule #s.linktab
 	$(MAKEDLK) -d @.^.Lib.errno/pyd -s s.linktab -o @.^.Modules.o.errnomodule -e initerrno
 
 @.^.Lib.imageop/pyd: @.^.Modules.o.imageop s.linktab
 	$(MAKEDLK) -d @.^.Lib.imageop/pyd -s s.linktab -o @.^.Modules.o.imageop -e initimageop
 
+@.^.Lib.itertools/pyd: @.^.Modules.o.itertoolsmodule s.linktab
+	$(MAKEDLK) -d @.^.Lib.itertools/pyd -s s.linktab -o @.^.Modules.o.itertoolsmodule -e inititertools
+
 @.^.Lib.math/pyd: @.^.Modules.o.mathmodule s.linktab
 	$(MAKEDLK) -d @.^.Lib.math/pyd -s s.linktab -o @.^.Modules.o.mathmodule -e initmath
 
@@ -324,6 +341,9 @@
 @.^.Lib.xxsubtype/pyd: @.^.Modules.o.xxsubtype s.linktab
 	$(MAKEDLK) -d @.^.Lib.xxsubtype/pyd -s s.linktab -o @.^.Modules.o.xxsubtype -e initxxsubtype
 
+@.^.Lib._random/pyd: @.^.Modules.o._randommodule s.linktab
+	$(MAKEDLK) -d @.^.Lib._random/pyd -s s.linktab -o @.^.Modules.o._randommodule -e init_random
+
 @.^.Lib._symtable/pyd: @.^.Modules.o.symtablemodule s.linktab
 	$(MAKEDLK) -d @.^.Lib._symtable/pyd -s s.linktab -o @.^.Modules.o.symtablemodule -e init_symtable
 
@@ -332,14 +352,14 @@
 # Dynamic Modules with other dependencies
 #
 @.^.Lib.select/pyd:  @.^.Modules.o.selectmodule s.linktab
-	$(LINK) -aof -o @.^.Modules.o.selectlink @.^.Modules.o.selectmodule $(TCPIPLIB).o.socklib
+	$(LINK) -aof -o @.^.Modules.o.selectlink @.^.Modules.o.selectmodule $(TCPIPLIB).o.socklib5
 	$(MAKEDLK) -d @.^.Lib.select/pyd -s s.linktab -o @.^.Modules.o.selectlink -e initselect
 
 @.^.Modules.o.selectmodule: @.^.Modules.c.selectmodule
 	$(CC) -I$(TCPIPLIB).include -o $@ @.^.Modules.c.selectmodule
 
 @.^.Lib._socket/pyd: @.^.Modules.o.socketmodule s.linktab 
-	$(LINK) -aof -o @.^.Modules.o._socketlink @.^.Modules.o.socketmodule $(TCPIPLIB).o.inetlib $(TCPIPLIB).o.unixlib $(TCPIPLIB).o.socklib
+	$(LINK) -aof -o @.^.Modules.o._socketlink @.^.Modules.o.socketmodule $(TCPIPLIB).o.inetlib $(TCPIPLIB).o.unixlib $(TCPIPLIB).o.socklib5
 	$(MAKEDLK) -d @.^.Lib._socket/pyd -s s.linktab -o @.^.Modules.o._socketlink -e init_socket
 
 @.^.Modules.o.socketmodule: @.^.Modules.c.socketmodule
@@ -353,6 +373,12 @@
 @.^.Modules.o.zlibmodule: @.^.Modules.c.zlibmodule
 	$(CC) -I$(ZLIB) -o $@ @.^.Modules.c.zlibmodule
 
+@.^.Lib.bz2/pyd: @.^.Modules.o.bz2module s.linktab
+	$(LINK) -aof -o @.^.Modules.o.bz2link @.^.Modules.o.bz2module $(BZLIB).bzlib
+	$(MAKEDLK) -d @.^.Lib.bz2/pyd -s s.linktab -o @.^.Modules.o.bz2link -e initbz2
+
+@.^.Modules.o.bz2module: @.^.Modules.c.bz2module
+	$(CC) -I$(BZLIB) -o $@ @.^.Modules.c.bz2module
 
 @.^.Lib.time/pyd: @.^.Modules.o.timemodule s.linktab @.o.sleep
 	$(LINK) -aof -o @.^.Modules.o.timelink @.^.Modules.o.timemodule @.o.sleep $(OSLIB).o.OSLib32
@@ -370,6 +396,10 @@
 @.^.Modules.o.pyexpat: @.^.Modules.c.pyexpat
 	$(CCEXPAT) -o $@ @.^.Modules.c.pyexpat
 
+@.^.Lib.zipimport/pyd: @.^.Modules.o.zipimport s.linktab
+	$(LINK) -aof -o @.^.Modules.o.zipimportlink @.^.Modules.o.zipimport o.unixstuff $(OSLIB).o.OSLib32
+	$(MAKEDLK) -d @.^.Lib.zipimport/pyd -s s.linktab -o @.^.Modules.o.zipimportlink -e initzipimport
+
 
 ##########################################################################
 # dynamic linking symbol table
diff --git a/RISCOS/Modules/riscosmodule.c b/RISCOS/Modules/riscosmodule.c
index adcc128..55f189d 100644
--- a/RISCOS/Modules/riscosmodule.c
+++ b/RISCOS/Modules/riscosmodule.c
@@ -6,6 +6,8 @@
 #include "oslib/osfile.h"
 #include "unixstuff.h"
 
+#include <sys/fcntl.h>
+
 #include "Python.h"
 #include "structseq.h"
 
@@ -368,6 +370,184 @@
 	{NULL,		NULL}		 /* Sentinel */
 };
 
+static int
+ins(PyObject *module, char *symbol, long value)
+{
+	return PyModule_AddIntConstant(module, symbol, value);
+}
+
+
+static int
+all_ins(PyObject *d)
+{
+#ifdef F_OK
+        if (ins(d, "F_OK", (long)F_OK)) return -1;
+#endif
+#ifdef R_OK
+        if (ins(d, "R_OK", (long)R_OK)) return -1;
+#endif
+#ifdef W_OK
+        if (ins(d, "W_OK", (long)W_OK)) return -1;
+#endif
+#ifdef X_OK
+        if (ins(d, "X_OK", (long)X_OK)) return -1;
+#endif
+#ifdef NGROUPS_MAX
+        if (ins(d, "NGROUPS_MAX", (long)NGROUPS_MAX)) return -1;
+#endif
+#ifdef TMP_MAX
+        if (ins(d, "TMP_MAX", (long)TMP_MAX)) return -1;
+#endif
+#ifdef WCONTINUED
+        if (ins(d, "WCONTINUED", (long)WCONTINUED)) return -1;
+#endif
+#ifdef WNOHANG
+        if (ins(d, "WNOHANG", (long)WNOHANG)) return -1;
+#endif
+#ifdef WUNTRACED
+        if (ins(d, "WUNTRACED", (long)WUNTRACED)) return -1;
+#endif
+#ifdef O_RDONLY
+        if (ins(d, "O_RDONLY", (long)O_RDONLY)) return -1;
+#endif
+#ifdef O_WRONLY
+        if (ins(d, "O_WRONLY", (long)O_WRONLY)) return -1;
+#endif
+#ifdef O_RDWR
+        if (ins(d, "O_RDWR", (long)O_RDWR)) return -1;
+#endif
+#ifdef O_NDELAY
+        if (ins(d, "O_NDELAY", (long)O_NDELAY)) return -1;
+#endif
+#ifdef O_NONBLOCK
+        if (ins(d, "O_NONBLOCK", (long)O_NONBLOCK)) return -1;
+#endif
+#ifdef O_APPEND
+        if (ins(d, "O_APPEND", (long)O_APPEND)) return -1;
+#endif
+#ifdef O_DSYNC
+        if (ins(d, "O_DSYNC", (long)O_DSYNC)) return -1;
+#endif
+#ifdef O_RSYNC
+        if (ins(d, "O_RSYNC", (long)O_RSYNC)) return -1;
+#endif
+#ifdef O_SYNC
+        if (ins(d, "O_SYNC", (long)O_SYNC)) return -1;
+#endif
+#ifdef O_NOCTTY
+        if (ins(d, "O_NOCTTY", (long)O_NOCTTY)) return -1;
+#endif
+#ifdef O_CREAT
+        if (ins(d, "O_CREAT", (long)O_CREAT)) return -1;
+#endif
+#ifdef O_EXCL
+        if (ins(d, "O_EXCL", (long)O_EXCL)) return -1;
+#endif
+#ifdef O_TRUNC
+        if (ins(d, "O_TRUNC", (long)O_TRUNC)) return -1;
+#endif
+#ifdef O_BINARY
+        if (ins(d, "O_BINARY", (long)O_BINARY)) return -1;
+#endif
+#ifdef O_TEXT
+        if (ins(d, "O_TEXT", (long)O_TEXT)) return -1;
+#endif
+#ifdef O_LARGEFILE
+        if (ins(d, "O_LARGEFILE", (long)O_LARGEFILE)) return -1;
+#endif
+
+/* MS Windows */
+#ifdef O_NOINHERIT
+	/* Don't inherit in child processes. */
+        if (ins(d, "O_NOINHERIT", (long)O_NOINHERIT)) return -1;
+#endif
+#ifdef _O_SHORT_LIVED
+	/* Optimize for short life (keep in memory). */
+	/* MS forgot to define this one with a non-underscore form too. */
+        if (ins(d, "O_SHORT_LIVED", (long)_O_SHORT_LIVED)) return -1;
+#endif
+#ifdef O_TEMPORARY
+	/* Automatically delete when last handle is closed. */
+        if (ins(d, "O_TEMPORARY", (long)O_TEMPORARY)) return -1;
+#endif
+#ifdef O_RANDOM
+	/* Optimize for random access. */
+        if (ins(d, "O_RANDOM", (long)O_RANDOM)) return -1;
+#endif
+#ifdef O_SEQUENTIAL
+	/* Optimize for sequential access. */
+        if (ins(d, "O_SEQUENTIAL", (long)O_SEQUENTIAL)) return -1;
+#endif
+
+/* GNU extensions. */
+#ifdef O_DIRECT
+        /* Direct disk access. */
+        if (ins(d, "O_DIRECT", (long)O_DIRECT)) return -1;
+#endif
+#ifdef O_DIRECTORY
+        /* Must be a directory.	 */
+        if (ins(d, "O_DIRECTORY", (long)O_DIRECTORY)) return -1;
+#endif
+#ifdef O_NOFOLLOW
+        /* Do not follow links.	 */
+        if (ins(d, "O_NOFOLLOW", (long)O_NOFOLLOW)) return -1;
+#endif
+
+	/* These come from sysexits.h */
+#ifdef EX_OK
+	if (ins(d, "EX_OK", (long)EX_OK)) return -1;
+#endif /* EX_OK */
+#ifdef EX_USAGE
+	if (ins(d, "EX_USAGE", (long)EX_USAGE)) return -1;
+#endif /* EX_USAGE */
+#ifdef EX_DATAERR
+	if (ins(d, "EX_DATAERR", (long)EX_DATAERR)) return -1;
+#endif /* EX_DATAERR */
+#ifdef EX_NOINPUT
+	if (ins(d, "EX_NOINPUT", (long)EX_NOINPUT)) return -1;
+#endif /* EX_NOINPUT */
+#ifdef EX_NOUSER
+	if (ins(d, "EX_NOUSER", (long)EX_NOUSER)) return -1;
+#endif /* EX_NOUSER */
+#ifdef EX_NOHOST
+	if (ins(d, "EX_NOHOST", (long)EX_NOHOST)) return -1;
+#endif /* EX_NOHOST */
+#ifdef EX_UNAVAILABLE
+	if (ins(d, "EX_UNAVAILABLE", (long)EX_UNAVAILABLE)) return -1;
+#endif /* EX_UNAVAILABLE */
+#ifdef EX_SOFTWARE
+	if (ins(d, "EX_SOFTWARE", (long)EX_SOFTWARE)) return -1;
+#endif /* EX_SOFTWARE */
+#ifdef EX_OSERR
+	if (ins(d, "EX_OSERR", (long)EX_OSERR)) return -1;
+#endif /* EX_OSERR */
+#ifdef EX_OSFILE
+	if (ins(d, "EX_OSFILE", (long)EX_OSFILE)) return -1;
+#endif /* EX_OSFILE */
+#ifdef EX_CANTCREAT
+	if (ins(d, "EX_CANTCREAT", (long)EX_CANTCREAT)) return -1;
+#endif /* EX_CANTCREAT */
+#ifdef EX_IOERR
+	if (ins(d, "EX_IOERR", (long)EX_IOERR)) return -1;
+#endif /* EX_IOERR */
+#ifdef EX_TEMPFAIL
+	if (ins(d, "EX_TEMPFAIL", (long)EX_TEMPFAIL)) return -1;
+#endif /* EX_TEMPFAIL */
+#ifdef EX_PROTOCOL
+	if (ins(d, "EX_PROTOCOL", (long)EX_PROTOCOL)) return -1;
+#endif /* EX_PROTOCOL */
+#ifdef EX_NOPERM
+	if (ins(d, "EX_NOPERM", (long)EX_NOPERM)) return -1;
+#endif /* EX_NOPERM */
+#ifdef EX_CONFIG
+	if (ins(d, "EX_CONFIG", (long)EX_CONFIG)) return -1;
+#endif /* EX_CONFIG */
+#ifdef EX_NOTFOUND
+	if (ins(d, "EX_NOTFOUND", (long)EX_NOTFOUND)) return -1;
+#endif /* EX_NOTFOUND */
+
+        return 0;
+}
 
 
 void
@@ -376,10 +556,14 @@
 	PyObject *m, *d, *stat_m;
 
 	m = Py_InitModule("riscos", riscos_methods);
+
+	if (all_ins(m))
+		return;
+
 	d = PyModule_GetDict(m);
 
-	/* Initialize riscos.error exception */
-	PyDict_SetItemString(d, "error", PyExc_OSError);
+	Py_INCREF(PyExc_OSError);
+	PyModule_AddObject(m, "error", PyExc_OSError);
 
 	PyStructSequence_InitType(&StatResultType, &stat_result_desc);
 	PyDict_SetItemString(d, "stat_result", (PyObject*) &StatResultType);
diff --git a/RISCOS/Modules/swimodule.c b/RISCOS/Modules/swimodule.c
index ec02ae7..583fc57 100644
--- a/RISCOS/Modules/swimodule.c
+++ b/RISCOS/Modules/swimodule.c
@@ -11,6 +11,9 @@
    * Added swi.ArgError which is generated for errors when the user passes invalid arguments to
        functions etc
    * Added "errnum" attribute to swi.error, so one can now check to see what the error number was
+
+ 1.02  03 March 2002 Dietmar Schwertberger
+   * Added string, integer, integers, tuple and tuples
 */
 
 #include "oslib/os.h"
@@ -412,13 +415,155 @@
   fail:Py_DECREF(result);return 0;
 }
 
+static PyObject *swi_string(PyObject *self, PyObject *arg)
+{ char *s;
+  int l=-1;
+  if(!PyArg_ParseTuple(arg,"i|i",(unsigned int *)&s, &l)) return NULL;
+  if (l==-1)
+    l = strlen(s);
+  return PyString_FromStringAndSize((char*)s, l);
+}
+
+static char swi_string__doc__[] =
+"string(address[, length]) -> string\n\
+Read a null terminated string from the given address.";
+
+
+static PyObject *swi_integer(PyObject *self, PyObject *arg)
+{ int *i;
+
+  if(!PyArg_ParseTuple(arg,"i",(unsigned int *)&i))
+    return NULL;
+  return PyInt_FromLong(*i);
+}
+
+static char swi_integer__doc__[] =
+"integer(address) -> string\n\
+Read an integer from the given address.";
+
+
+static PyObject *swi_integers(PyObject *self, PyObject *arg)
+{ int *i;
+  int c=-1;
+  PyObject *result, *result1;
+  
+  if(!PyArg_ParseTuple(arg,"i|i",(unsigned int *)&i, &c)) return NULL;
+  result=PyList_New(0);
+  if (result) {
+    while ( c>0 || (c==-1 && *i) ) {
+      result1 = PyInt_FromLong((long)*i);
+      if (!result1) {
+        Py_DECREF(result);
+        return NULL;
+      }
+      if (PyList_Append(result, result1)!=0) {
+        Py_DECREF(result);
+        Py_DECREF(result1);
+        return NULL;
+      };
+      i++;
+      if (c!=-1)
+        c--;
+    }
+  }
+  return result;
+}
+
+static char swi_integers__doc__[] =
+"integers(address[, count]) -> string\n\
+Either read a null terminated list of integers or\n\
+a list of given length from the given address.";
+
+
+static PyObject *swi_tuples(PyObject *self, PyObject *arg)
+{
+  unsigned char *i;         /* points to current */
+  int c=-1, l=4, j, zero;         /* count, length, index */
+  PyObject *result, *result1, *result11;
+  
+  if(!PyArg_ParseTuple(arg,"i|ii",(unsigned int *)&i, &l, &c)) return NULL;
+  result=PyList_New(0);
+  if (result) {
+    while (c) {
+      result1 = PyTuple_New(l);
+      if (!result1) {
+        Py_DECREF(result);
+        return NULL;
+      }
+      zero = (c==-1); /* check for zeros? */
+      for(j=0;j<l;j++) {
+        if (zero && *i)
+          zero = 0;   /* non-zero found */
+        result11 = PyInt_FromLong((long)(*i));
+        if (!result11) {
+          Py_DECREF(result);
+          return NULL;
+        }
+        PyTuple_SetItem(result1, j, result11);
+        i++;
+      }
+      if (c==-1 && zero) {
+        Py_DECREF(result1);
+        c = 0;
+        break;
+      }
+      if (PyList_Append(result, result1)!=0) {
+        Py_DECREF(result1);
+        Py_DECREF(result);
+        return NULL;
+      }
+      if (c!=-1)
+        c--;
+    }
+  }
+  return result;
+}
+
+static char swi_tuples__doc__[] =
+"tuples(address[, length=4[, count]]) -> string\n\
+Either read a null terminated list of byte tuples or\n\
+a list of given length from the given address.";
+
+
+static PyObject *swi_tuple(PyObject *self, PyObject *arg)
+{
+  unsigned char *i;         /* points to current */
+  int c=1, j;
+  PyObject *result, *result1;
+  
+  if(!PyArg_ParseTuple(arg,"i|i",(unsigned int *)&i, &c)) return NULL;
+  result = PyTuple_New(c);
+  if (!result)
+    return NULL;
+  for(j=0;j<c;j++) {
+    result1 = PyInt_FromLong((long)(i[j]));
+    if (!result1) {
+      Py_DECREF(result);
+      return NULL;
+    }
+    PyTuple_SetItem(result, j, result1);
+  }
+  return result;
+}
+
+static char swi_tuple__doc__[] =
+"tuple(address[, count=1]]) -> tuple\n\
+Read count bytes from given address.";
+
+
 static PyMethodDef SwiMethods[]=
-{ { "swi",swi_swi,1},
-  { "block",PyBlock_New,1},
-  { "register",PyRegister,1},
-  { NULL,NULL}		 /* Sentinel */
+{ { "swi", swi_swi,1},
+  { "block", PyBlock_New,1},
+  { "register", PyRegister,1},
+  { "string", swi_string,METH_VARARGS, swi_string__doc__},
+  { "integer", swi_integer,METH_VARARGS, swi_integer__doc__},
+  { "integers", swi_integers,METH_VARARGS, swi_integers__doc__},
+  { "tuples", swi_tuples,METH_VARARGS, swi_tuples__doc__},
+  { "tuple", swi_tuple,METH_VARARGS, swi_tuple__doc__},
+  { NULL,NULL,0,NULL}		 /* Sentinel */
 };
 
+
 void initswi()
 { PyObject *m, *d;
   m = Py_InitModule("swi", SwiMethods);
diff --git a/RISCOS/pyconfig.h b/RISCOS/pyconfig.h
index 7a5a13c..028ed62 100644
--- a/RISCOS/pyconfig.h
+++ b/RISCOS/pyconfig.h
@@ -143,7 +143,7 @@
 #undef HAVE_LARGEFILE_SUPPORT
 
 /* Define this if you have the type long long */
-#undef HAVE_LONG_LONG
+#define HAVE_LONG_LONG
 
 /* Define if your compiler supports function prototypes */
 #define HAVE_PROTOTYPES 1
@@ -244,6 +244,9 @@
    shared libraries */ 
 #undef WITH_DL_DLD
 
+/* Define if you want to read files with foreign newlines. */
+#define WITH_UNIVERSAL_NEWLINES 1
+
 /* Define if you want documentation strings in extension modules */
 #define WITH_DOC_STRINGS 1
 
@@ -253,7 +256,7 @@
 #undef WITH_DYLD
 
 /* Define if you want to compile in Python-specific mallocs */
-#undef WITH_PYMALLOC
+#define WITH_PYMALLOC 1
 
 /* Define if you want to produce an OpenStep/Rhapsody framework
    (shared library plus accessory files). */
@@ -291,7 +294,7 @@
 #define SIZEOF_LONG 4
 
 /* The number of bytes in a long long.  */
-#undef SIZEOF_LONG_LONG
+#define SIZEOF_LONG_LONG 8
 
 /* The number of bytes in a short.  */
 #define SIZEOF_SHORT 2
@@ -396,7 +399,7 @@
 #undef HAVE_GETNAMEINFO
 
 /* Define if you have the getpeername function.  */
-#undef HAVE_GETPEERNAME
+#define HAVE_GETPEERNAME
 
 /* Define if you have the getpgid function.  */
 #undef HAVE_GETPGID
@@ -423,7 +426,7 @@
 #undef HAVE_HSTRERROR
 
 /* Define if you have the hypot function.  */
-#undef HAVE_HYPOT
+#define HAVE_HYPOT
 
 /* Define if you have the inet_pton function.  */
 #define HAVE_INET_PTON 1
diff --git a/RISCOS/sleep.c b/RISCOS/sleep.c
index 60c3768..c85eb86 100644
--- a/RISCOS/sleep.c
+++ b/RISCOS/sleep.c
@@ -7,11 +7,11 @@
 #include "Python.h"
 
 
-int sleep(double delay)
+int riscos_sleep(double delay)
 {
 	os_t starttime, endtime, time; /* monotonic times (centiseconds) */
 	int *pollword, ret;
-	bool claimed;
+	osbool claimed;
 
         /* calculate end time */
 	starttime = os_read_monotonic_time();
diff --git "a/RISCOS/support/\041Boot" "b/RISCOS/support/\041Boot"
index c2c6644..d3600b8 100644
--- "a/RISCOS/support/\041Boot"
+++ "b/RISCOS/support/\041Boot"
@@ -6,7 +6,17 @@
 <Obey$Dir>.AddToPath Python$Path PythonApp:Lib
 <Obey$Dir>.AddToPath Python$Path PythonApp:Lib.plat-riscos
 <Obey$Dir>.AddToPath Python$Path PythonApp:Lib.site-packages
-set Alias$@RunType_ae5 TaskWindow |"python %%*0|" -name |"Python|" -quit
+set Alias$@RunType_ae5 TaskWindow |"python %%*0|" -name |"Python|" -quit -wimpslot 1248k
 | -display
 set File$Type_ae5 Python
-set Alias$Python Run <Python$Dir>.python22 %*0
\ No newline at end of file
+
+| load modules for 32 bit compatibility
+RMEnsure UtilityModule 3.10 Error This application requires RISC OS 3.10 or later
+RMEnsure UtilityModule 3.70 RMEnsure CallASWI 0.02 RMLoad System:Modules.CallASWI
+RMEnsure UtilityModule 3.70 RMEnsure CallASWI 0.02 Error This application requires CallASWI 0.02 or later
+RMEnsure FPEmulator 4.03 RMLoad System:Modules.FPEmulator
+RMEnsure FPEmulator 4.03 Error This application requires FPEmulator 4.03 or later
+RMEnsure SharedCLibrary 5.17 RMLoad System:Modules.CLib
+RMEnsure SharedCLibrary 5.34 Error This application requires SharedCLibrary 5.34 or later
+
+set Alias$Python Run <Python$Dir>.python23 %*0
\ No newline at end of file
diff --git "a/RISCOS/support/\041Run" "b/RISCOS/support/\041Run"
index 6919579..2964e0a 100644
--- "a/RISCOS/support/\041Run"
+++ "b/RISCOS/support/\041Run"
@@ -1,2 +1,2 @@
 <Obey$Dir>.!Boot
-TaskWindow "python" -name "Python" -quit -display
\ No newline at end of file
+TaskWindow "python" -name "Python" -quit -display -wimpslot 1248k
\ No newline at end of file