1 """Convert a NT pathname to a file URL and vice versa."""
4 r
"""Convert a URL to a DOS path.
14 # No drive specifier, just convert slashes
16 # path is something like ////host/path/on/remote/host
17 # convert this to \\host\path\on\remote\host
18 # (notice halving of slashes at the start of the path)
20 components
= string
.split(url
, '/')
21 # make sure not to convert quoted slashes :-)
22 return urllib
.unquote(string
.join(components
, '\\'))
23 comp
= string
.split(url
, '|')
24 if len(comp
) != 2 or comp
[0][-1] not in string
.letters
:
25 error
= 'Bad URL: ' + url
27 drive
= string
.upper(comp
[0][-1])
28 components
= string
.split(comp
[1], '/')
30 for comp
in components
:
32 path
= path
+ '\\' + urllib
.unquote(comp
)
36 r
"""Convert a DOS path name to a file url.
42 ///C|/foo/bar/spam.foo
47 # No drive specifier, just convert slashes and quote the name
49 # path is something like \\host\path\on\remote\host
50 # convert this to ////host/path/on/remote/host
51 # (notice doubling of slashes at the start of the path)
53 components
= string
.split(p
, '\\')
54 return urllib
.quote(string
.join(components
, '/'))
55 comp
= string
.split(p
, ':')
56 if len(comp
) != 2 or len(comp
[0]) > 1:
57 error
= 'Bad path: ' + p
60 drive
= urllib
.quote(string
.upper(comp
[0]))
61 components
= string
.split(comp
[1], '\\')
62 path
= '///' + drive
+ '|'
63 for comp
in components
:
65 path
= path
+ '/' + urllib
.quote(comp
)