/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/urlutils.py

  • Committer: Jelmer Vernooij
  • Date: 2009-04-04 01:45:09 UTC
  • mfrom: (3873.3.2 trivial)
  • mto: This revision was merged to the branch mainline in revision 4290.
  • Revision ID: jelmer@samba.org-20090404014509-qworcvw6gemoajoo
Merge in Martins' IPv6 literals patch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006-2010 Canonical Ltd
 
1
# Copyright (C) 2006, 2008 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
75
75
    This assumes that both paths are already fully specified file:// URLs.
76
76
    """
77
77
    if len(base) < MIN_ABS_FILEURL_LENGTH:
78
 
        raise ValueError('Length of base (%r) must equal or'
 
78
        raise ValueError('Length of base must be equal or'
79
79
            ' exceed the platform minimum url length (which is %d)' %
80
 
            (base, MIN_ABS_FILEURL_LENGTH))
 
80
            MIN_ABS_FILEURL_LENGTH)
81
81
    base = local_path_from_url(base)
82
82
    path = local_path_from_url(path)
83
83
    return escape(osutils.relpath(base, path))
217
217
# jam 20060502 Sorted to 'l' because the final target is 'local_path_from_url'
218
218
def _posix_local_path_from_url(url):
219
219
    """Convert a url like file:///path/to/foo into /path/to/foo"""
220
 
    file_localhost_prefix = 'file://localhost/'
221
 
    if url.startswith(file_localhost_prefix):
222
 
        path = url[len(file_localhost_prefix) - 1:]
223
 
    elif not url.startswith('file:///'):
224
 
        raise errors.InvalidURL(
225
 
            url, 'local urls must start with file:/// or file://localhost/')
226
 
    else:
227
 
        path = url[len('file://'):]
 
220
    if not url.startswith('file:///'):
 
221
        raise errors.InvalidURL(url, 'local urls must start with file:///')
228
222
    # We only strip off 2 slashes
229
 
    return unescape(path)
 
223
    return unescape(url[len('file://'):])
230
224
 
231
225
 
232
226
def _posix_local_path_to_url(path):
720
714
    else:
721
715
        host = netloc
722
716
 
723
 
    if ':' in host and not (host[0] == '[' and host[-1] == ']'): #there *is* port
724
 
        host, port = host.rsplit(':',1)
725
 
        try:
726
 
            port = int(port)
727
 
        except ValueError:
728
 
            raise errors.InvalidURL('invalid port number %s in url:\n%s' %
729
 
                                    (port, url))
730
 
    if host != "" and host[0] == '[' and host[-1] == ']': #IPv6
731
 
        host = host[1:-1]
 
717
        if ':' in host and not (host[0] == '[' and host[-1] == ']'): #there *is* port
 
718
            host, port = host.rsplit(':',1)
 
719
            try:
 
720
                port = int(port)
 
721
            except ValueError:
 
722
                raise errors.InvalidURL('invalid port number %s in url:\n%s' %
 
723
                                        (port, url))
 
724
        if host[0] == '[' and host[-1] == ']': #IPv6
 
725
            host = host[1:-1]
 
726
 
 
727
    if host == '':
 
728
        raise errors.InvalidURL('Host empty in: %s' % url)
732
729
 
733
730
    host = urllib.unquote(host)
734
731
    path = urllib.unquote(path)