]> granicus.if.org Git - python/commitdiff
Quote/unquote slashes in macintosh pathname components (Jack Jansen).
authorGuido van Rossum <guido@python.org>
Thu, 6 Aug 1998 13:37:21 +0000 (13:37 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 6 Aug 1998 13:37:21 +0000 (13:37 +0000)
Lib/macurl2path.py

index dced58aa56a1c8bd839718eee66caec67f965ccb..7d273bc61064b6fa7b419c7b8d811078abcd7c88 100644 (file)
@@ -29,7 +29,7 @@ def url2pathname(pathname):
             i = i+1
     if not components[0]:
         # Absolute unix path, don't start with colon
-        return string.join(components[1:], ':')
+        rv = string.join(components[1:], ':')
     else:
         # relative unix path, start with colon. First replace
         # leading .. by empty strings (giving ::file)
@@ -37,7 +37,9 @@ def url2pathname(pathname):
         while i < len(components) and components[i] == '..':
             components[i] = ''
             i = i + 1
-        return ':' + string.join(components, ':')
+        rv = ':' + string.join(components, ':')
+    # and finally unquote slashes and other funny characters
+    return urllib.unquote(rv)
 
 def pathname2url(pathname):
     "convert mac pathname to /-delimited pathname"
@@ -54,13 +56,17 @@ def pathname2url(pathname):
         if components[i] == '':
             components[i] = '..'
     # Truncate names longer than 31 bytes
-    components = map(lambda x: x[:31], components)
+    components = map(_pncomp2url, components)
 
     if os.path.isabs(pathname):
         return '/' + string.join(components, '/')
     else:
         return string.join(components, '/')
-
+        
+def _pncomp2url(component):
+       component = urllib.quote(component[:31], safe='')  # We want to quote slashes
+       return component
+       
 def test():
     for url in ["index.html",
                 "bar/index.html",