diff -r ffa851df0825 -r 2fb8b9db1c86 symbian-qemu-0.9.1-12/python-2.6.1/Lib/plat-riscos/rourl2path.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/symbian-qemu-0.9.1-12/python-2.6.1/Lib/plat-riscos/rourl2path.py Fri Jul 31 15:01:17 2009 +0100 @@ -0,0 +1,70 @@ +"""riscos specific module for conversion between pathnames and URLs. +Based on macurl2path. +Do not import directly, use urllib instead.""" + +import string +import urllib + +__all__ = ["url2pathname","pathname2url"] + +__slash_dot = string.maketrans("/.", "./") + +def url2pathname(url): + """OS-specific conversion from a relative URL of the 'file' scheme + to a file system path; not recommended for general use.""" + tp = urllib.splittype(url)[0] + if tp and tp <> 'file': + raise RuntimeError, 'Cannot convert non-local URL to pathname' + # Turn starting /// into /, an empty hostname means current host + if url[:3] == '///': + url = url[2:] + elif url[:2] == '//': + raise RuntimeError, 'Cannot convert non-local URL to pathname' + components = string.split(url, '/') + if not components[0]: + if '$' in components: + del components[0] + else: + components[0] = '$' + # Remove . and embedded .. + i = 0 + while i < len(components): + if components[i] == '.': + del components[i] + elif components[i] == '..' and i > 0 and \ + components[i-1] not in ('', '..'): + del components[i-1:i+1] + i -= 1 + elif components[i] == '..': + components[i] = '^' + i += 1 + elif components[i] == '' and i > 0 and components[i-1] <> '': + del components[i] + else: + i += 1 + components = map(lambda x: urllib.unquote(x).translate(__slash_dot), components) + return '.'.join(components) + +def pathname2url(pathname): + """OS-specific conversion from a file system path to a relative URL + of the 'file' scheme; not recommended for general use.""" + return urllib.quote('///' + pathname.translate(__slash_dot), "/$:") + +def test(): + for url in ["index.html", + "/SCSI::SCSI4/$/Anwendung/Comm/Apps/!Fresco/Welcome", + "/SCSI::SCSI4/$/Anwendung/Comm/Apps/../!Fresco/Welcome", + "../index.html", + "bar/index.html", + "/foo/bar/index.html", + "/foo/bar/", + "/"]: + print '%r -> %r' % (url, url2pathname(url)) + print "*******************************************************" + for path in ["SCSI::SCSI4.$.Anwendung", + "PythonApp:Lib", + "PythonApp:Lib.rourl2path/py"]: + print '%r -> %r' % (path, pathname2url(path)) + +if __name__ == '__main__': + test()