RISCOS changes by dschwertberger.
diff --git a/Lib/dumbdbm.py b/Lib/dumbdbm.py
index 45a2f36..f1cc41b 100644
--- a/Lib/dumbdbm.py
+++ b/Lib/dumbdbm.py
@@ -33,9 +33,13 @@
 class _Database:
 
     def __init__(self, file):
-        self._dirfile = file + '.dir'
-        self._datfile = file + '.dat'
-        self._bakfile = file + '.bak'
+        if _os.sep == '.':
+            endsep = '/'
+        else:
+            endsep = '.'
+        self._dirfile = file + endsep + 'dir'
+        self._datfile = file + endsep + 'dat'
+        self._bakfile = file + endsep + 'bak'
         # Mod by Jack: create data file if needed
         try:
             f = _open(self._datfile, 'r')
diff --git a/Lib/os.py b/Lib/os.py
index ddeb84c..201aa9d 100644
--- a/Lib/os.py
+++ b/Lib/os.py
@@ -3,7 +3,7 @@
 This exports:
   - all functions from posix, nt, dos, os2, mac, or ce, e.g. unlink, stat, etc.
   - os.path is one of the modules posixpath, ntpath, macpath, or dospath
-  - os.name is 'posix', 'nt', 'dos', 'os2', 'mac', or 'ce'
+  - os.name is 'posix', 'nt', 'dos', 'os2', 'mac', 'ce' or 'riscos'
   - os.curdir is a string representing the current directory ('.' or ':')
   - os.pardir is a string representing the parent directory ('..' or '::')
   - os.sep is the (or a most common) pathname separator ('/' or ':' or '\\')
@@ -147,6 +147,25 @@
     __all__.extend(_get_exports_list(ce))
     del ce
 
+elif 'riscos' in _names:
+    name = 'riscos'
+    linesep = '\n'
+    curdir = '@'; pardir = '^'; sep = '.'; pathsep = ','
+    defpath = '<Run$Dir>'
+    from riscos import *
+    try:
+        from riscos import _exit
+    except ImportError:
+        pass
+    import riscospath
+    path = riscospath
+    del riscospath
+    from riscosenviron import environ
+
+    import riscos
+    __all__.extend(_get_exports_list(riscos))
+    del ce
+
 else:
     raise ImportError, 'no os specific module found'
 
@@ -317,14 +336,16 @@
                 exc, arg = error, (errno, msg)
     raise exc, arg
 
-# Change environ to automatically call putenv() if it exists
-try:
-    # This will fail if there's no putenv
-    putenv
-except NameError:
-    pass
-else:
-    import UserDict
+
+if name != "riscos":
+    # Change environ to automatically call putenv() if it exists
+    try:
+        # This will fail if there's no putenv
+        putenv
+    except NameError:
+        pass
+    else:
+        import UserDict
 
     if name in ('os2', 'nt', 'dos'):  # Where Env Var Names Must Be UPPERCASE
         # But we store them as upper case
@@ -363,12 +384,11 @@
 
     environ = _Environ(environ)
 
-def getenv(key, default=None):
-    """Get an environment variable, return None if it doesn't exist.
-
-    The optional second argument can specify an alternate default."""
-    return environ.get(key, default)
-__all__.append("getenv")
+    def getenv(key, default=None):
+        """Get an environment variable, return None if it doesn't exist.
+        The optional second argument can specify an alternate default."""
+        return environ.get(key, default)
+    __all__.append("getenv")
 
 def _exists(name):
     try:
diff --git a/Lib/site.py b/Lib/site.py
index 12fe71d..807ebc7 100644
--- a/Lib/site.py
+++ b/Lib/site.py
@@ -59,6 +59,12 @@
 
 import sys, os
 
+if os.sep==".":
+    endsep = "/"
+else:
+    endsep = "."
+
+
 def makepath(*paths):
     dir = os.path.join(*paths)
     return os.path.normcase(os.path.abspath(dir))
@@ -99,7 +105,7 @@
     names = map(os.path.normcase, names)
     names.sort()
     for name in names:
-        if name[-4:] == ".pth":
+        if name[-4:] == endsep + "pth":
             addpackage(sitedir, name)
 
 def addpackage(sitedir, name):
diff --git a/Lib/socket.py b/Lib/socket.py
index c928700..136a052 100644
--- a/Lib/socket.py
+++ b/Lib/socket.py
@@ -48,7 +48,8 @@
 del _socket
 
 if (sys.platform.lower().startswith("win")
-    or (hasattr(os, 'uname') and os.uname()[0] == "BeOS")):
+    or (hasattr(os, 'uname') and os.uname()[0] == "BeOS")
+    or (sys.platform=="RISCOS")):
 
     # be sure this happens only once, even in the face of reload():
     try:
diff --git a/Lib/urllib.py b/Lib/urllib.py
index 2eb90f9..302f707 100644
--- a/Lib/urllib.py
+++ b/Lib/urllib.py
@@ -41,6 +41,8 @@
     from macurl2path import url2pathname, pathname2url
 elif os.name == 'nt':
     from nturl2path import url2pathname, pathname2url
+elif os.name == 'riscos':
+    from rourl2path import url2pathname, pathname2url
 else:
     def url2pathname(pathname):
         return unquote(pathname)
diff --git a/Lib/whichdb.py b/Lib/whichdb.py
index 1f12099..fe54cc5 100644
--- a/Lib/whichdb.py
+++ b/Lib/whichdb.py
@@ -1,5 +1,12 @@
 """Guess which db package to use to open a db file."""
 
+import os
+
+if os.sep==".":
+    endsep = "/"
+else:
+    endsep = "."
+ 
 def whichdb(filename):
     """Guess which db package to use to open a db file.
 
@@ -17,9 +24,9 @@
 
     # Check for dbm first -- this has a .pag and a .dir file
     try:
-        f = open(filename + ".pag", "rb")
+        f = open(filename + endsep + "pag", "rb")
         f.close()
-        f = open(filename + ".dir", "rb")
+        f = open(filename + endsep + "dir", "rb")
         f.close()
         return "dbm"
     except IOError:
@@ -27,9 +34,9 @@
 
     # Check for dumbdbm next -- this has a .dir and and a .dat file
     try:
-        f = open(filename + ".dat", "rb")
+        f = open(filename + endsep + "dat", "rb")
         f.close()
-        f = open(filename + ".dir", "rb")
+        f = open(filename + endsep + "dir", "rb")
         try:
             if f.read(1) in ["'", '"']:
                 return "dumbdbm"