~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/sftp.py

  • Committer: Martin Pool
  • Date: 2006-01-23 02:09:39 UTC
  • mfrom: (1534.1.11 integration)
  • Revision ID: mbp@sourcefrog.net-20060123020939-567fb193328ed7a6
[merge] robert's integration

Show diffs side-by-side

added added

removed removed

Lines of Context:
597
597
        # that we have taken the lock.
598
598
        return SFTPLock(relpath, self)
599
599
 
600
 
 
601
600
    def _unparse_url(self, path=None):
602
601
        if path is None:
603
602
            path = self._path
604
603
        path = urllib.quote(path)
605
 
        if path.startswith('/'):
606
 
            path = '/%2F' + path[1:]
607
 
        else:
608
 
            path = '/' + path
 
604
        # handle homedir paths
 
605
        if not path.startswith('/'):
 
606
            path = "/~/" + path
609
607
        netloc = urllib.quote(self._host)
610
608
        if self._username is not None:
611
609
            netloc = '%s@%s' % (urllib.quote(self._username), netloc)
645
643
        # as a homedir relative path (the path begins with a double slash
646
644
        # if it is absolute).
647
645
        # see draft-ietf-secsh-scp-sftp-ssh-uri-03.txt
648
 
        if path.startswith('/'):
649
 
            path = path[1:]
650
 
 
 
646
        # RBC 20060118 we are not using this as its too user hostile. instead
 
647
        # we are following lftp and using /~/foo to mean '~/foo'.
 
648
        # handle homedir paths
 
649
        if path.startswith('/~/'):
 
650
            path = path[3:]
 
651
        elif path == '/~':
 
652
            path = ''
651
653
        return (username, password, host, port, path)
652
654
 
653
655
    def _parse_url(self, url):
942
944
 
943
945
    def get_url(self):
944
946
        """See bzrlib.transport.Server.get_url."""
945
 
        return self._get_sftp_url("%%2f%s" % 
946
 
                urlescape(self._homedir[1:]))
 
947
        return self._get_sftp_url(urlescape(self._homedir[1:]))
947
948
 
948
949
 
949
950
class SFTPHomeDirServer(SFTPServer):
951
952
 
952
953
    def get_url(self):
953
954
        """See bzrlib.transport.Server.get_url."""
954
 
        return self._get_sftp_url("")
 
955
        return self._get_sftp_url("~/")
955
956
 
956
957
 
957
958
class SFTPSiblingAbsoluteServer(SFTPAbsoluteServer):