[Python-checkins] CVS: python/dist/src/Lib/plat-riscos riscosenviron.py,1.4,1.5 riscospath.py,1.6,1.7 rourl2path.py,1.2,1.3

Guido van Rossum gvanrossum@users.sourceforge.net
Wed, 24 Oct 2001 13:33:36 -0700


Update of /cvsroot/python/python/dist/src/Lib/plat-riscos
In directory usw-pr-cvs1:/tmp/cvs-serv17535/plat-riscos

Modified Files:
	riscosenviron.py riscospath.py rourl2path.py 
Log Message:
SF patch #474590 -- RISC OS support

Index: riscosenviron.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/plat-riscos/riscosenviron.py,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** riscosenviron.py	2001/07/02 04:59:35	1.4
--- riscosenviron.py	2001/10/24 20:33:34	1.5
***************
*** 1,3 ****
! """A more or less complete user-defined wrapper around dictionary objects."""
  
  import riscos
--- 1,3 ----
! """A more or less complete dictionary like interface for the RISC OS environment."""
  
  import riscos
***************
*** 9,14 ****
          return repr(riscos.getenvdict())
      def __cmp__(self, dict):
!         if isinstance(dict, UserDict):
!             return cmp(riscos.getenvdict(), dict)
      def __len__(self):
          return len(riscos.getenvdict())
--- 9,13 ----
          return repr(riscos.getenvdict())
      def __cmp__(self, dict):
!         return cmp(riscos.getenvdict(), dict)
      def __len__(self):
          return len(riscos.getenvdict())

Index: riscospath.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/plat-riscos/riscospath.py,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** riscospath.py	2001/10/10 04:16:20	1.6
--- riscospath.py	2001/10/24 20:33:34	1.7
***************
*** 104,109 ****
      for b in p:
          (fs, drive, path)= _split(b)
!         if fs!='' or drive!='' or path[:1] in _roots:
              j= b
          else:
              j= j+'.'+b
--- 104,111 ----
      for b in p:
          (fs, drive, path)= _split(b)
!         if j=='' or fs!='' or drive!='' or path[:1] in _roots:
              j= b
+         elif j[-1]==':':
+             j= j+b
          else:
              j= j+'.'+b

Index: rourl2path.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/plat-riscos/rourl2path.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** rourl2path.py	2001/07/02 04:59:35	1.2
--- rourl2path.py	2001/10/24 20:33:34	1.3
***************
*** 7,19 ****
  import os
  
! def url2pathname(pathname):
!     "Convert /-delimited pathname to mac pathname"
!     #
!     # XXXX The .. handling should be fixed...
!     #
!     tp = urllib.splittype(pathname)[0]
      if tp and tp <> 'file':
          raise RuntimeError, 'Cannot convert non-local URL to pathname'
!     components = string.split(pathname, '/')
      # Remove . and embedded ..
      i = 0
--- 7,30 ----
  import os
  
! __all__ = ["url2pathname","pathname2url"]
! 
! __slash_dot = string.maketrans("/.", "./")
! 
! def url2pathname(url):
!     "Convert URL to a RISC OS path."
!     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
***************
*** 24,66 ****
                                    components[i-1] not in ('', '..'):
              del components[i-1:i+1]
!             i = i-1
          elif components[i] == '' and i > 0 and components[i-1] <> '':
              del components[i]
          else:
!             if components[i]<>'..' and string.find(components[i], '.')<>-1 :
!                 components[i] = string.join(string.split(components[i],'.'),'/')
!             i = i+1
!     if not components[0]:
!         # Absolute unix path, don't start with colon
!         return string.join(components[1:], '.')
!     else:
!         # relative unix path, start with colon. First replace
!         # leading .. by empty strings (giving ::file)
!         i = 0
!         while i < len(components) and components[i] == '..':
!             components[i] = '^'
!             i = i + 1
!         return string.join(components, '.')
  
  def pathname2url(pathname):
!     "convert mac pathname to /-delimited pathname"
!     if '/' in pathname:
!         raise RuntimeError, "Cannot convert pathname containing slashes"
!     components = string.split(pathname, ':')
!     # Replace empty string ('::') by .. (will result in '/../' later)
!     for i in range(1, len(components)):
!         if components[i] == '':
!             components[i] = '..'
!     # Truncate names longer than 31 bytes
!     components = map(lambda x: x[:31], components)
! 
!     if os.path.isabs(pathname):
!         return '/' + string.join(components, '/')
!     else:
!         return string.join(components, '/')
  
  def test():
      for url in ["index.html",
                  "/SCSI::SCSI4/$/Anwendung/Comm/Apps/!Fresco/Welcome",
                  "../index.html",
                  "bar/index.html",
--- 35,57 ----
                                    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):
!     "Convert a RISC OS path name to a file url."
!     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",
***************
*** 69,80 ****
                  "/"]:
          print `url`, '->', `url2pathname(url)`
!     for path in ["drive:",
!                  "drive:dir:",
!                  "drive:dir:file",
!                  "drive:file",
!                  "file",
!                  ":file",
!                  ":dir:",
!                  ":dir:file"]:
          print `path`, '->', `pathname2url(path)`
  
--- 60,67 ----
                  "/"]:
          print `url`, '->', `url2pathname(url)`
!     print "*******************************************************"
!     for path in ["SCSI::SCSI4.$.Anwendung",
!                  "PythonApp:Lib",
!                  "PythonApp:Lib.rourl2path/py"]:
          print `path`, '->', `pathname2url(path)`