Staging
v0.5.1
https://github.com/python/cpython
Revision 90c25aa2b656c47304c77723be1987cf34b99d36 authored by Jack Jansen on 25 March 2002, 10:45:21 UTC, committed by Jack Jansen on 25 March 2002, 10:45:21 UTC
Weaklink most toolbox modules, improving backward compatibility. Modules will no longer fail to load if a single routine is missing on the curent OS version, in stead calling the missing routine will raise an exception.

Should finally fix 531398. 2.2.1 candidate.

Also blacklisted some constants with definitions that were not Python-compatible.
1 parent 2bfd14e
Raw File
Tip revision: 90c25aa2b656c47304c77723be1987cf34b99d36 authored by Jack Jansen on 25 March 2002, 10:45:21 UTC
Backport of _Icnmodule.c 1.5, icnsupport.py 1.7:
Tip revision: 90c25aa
nturl2path.py
"""Convert a NT pathname to a file URL and vice versa."""

def url2pathname(url):
    r"""Convert a URL to a DOS path.

            ///C|/foo/bar/spam.foo

                    becomes

            C:\foo\bar\spam.foo
    """
    import string, urllib
    if not '|' in url:
        # No drive specifier, just convert slashes
        if url[:4] == '////':
            # path is something like ////host/path/on/remote/host
            # convert this to \\host\path\on\remote\host
            # (notice halving of slashes at the start of the path)
            url = url[2:]
        components = url.split('/')
        # make sure not to convert quoted slashes :-)
        return urllib.unquote('\\'.join(components))
    comp = url.split('|')
    if len(comp) != 2 or comp[0][-1] not in string.ascii_letters:
        error = 'Bad URL: ' + url
        raise IOError, error
    drive = comp[0][-1].upper()
    components = comp[1].split('/')
    path = drive + ':'
    for  comp in components:
        if comp:
            path = path + '\\' + urllib.unquote(comp)
    return path

def pathname2url(p):
    r"""Convert a DOS path name to a file url.

            C:\foo\bar\spam.foo

                    becomes

            ///C|/foo/bar/spam.foo
    """

    import urllib
    if not ':' in p:
        # No drive specifier, just convert slashes and quote the name
        if p[:2] == '\\\\':
        # path is something like \\host\path\on\remote\host
        # convert this to ////host/path/on/remote/host
        # (notice doubling of slashes at the start of the path)
            p = '\\\\' + p
        components = p.split('\\')
        return urllib.quote('/'.join(components))
    comp = p.split(':')
    if len(comp) != 2 or len(comp[0]) > 1:
        error = 'Bad path: ' + p
        raise IOError, error

    drive = urllib.quote(comp[0].upper())
    components = comp[1].split('\\')
    path = '///' + drive + '|'
    for comp in components:
        if comp:
            path = path + '/' + urllib.quote(comp)
    return path
back to top