~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/http/__init__.py

Merge bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
169
169
        else:
170
170
            # TODO: Don't call this with an array - no magic interfaces
171
171
            relpath_parts = relpath[:]
172
 
        if len(relpath_parts) > 1:
173
 
            # TODO: Check that the "within branch" part of the
174
 
            # error messages below is relevant in all contexts
175
 
            if relpath_parts[0] == '':
176
 
                raise ValueError("path %r within branch %r seems to be absolute"
177
 
                                 % (relpath, self._path))
178
 
            # read only transports never manipulate directories
179
 
            if self.is_readonly() and relpath_parts[-1] == '':
 
172
        if relpath.startswith('/'):
 
173
            basepath = []
 
174
        else:
 
175
            # Except for the root, no trailing slashes are allowed
 
176
            if len(relpath_parts) > 1 and relpath_parts[-1] == '':
180
177
                raise ValueError("path %r within branch %r seems to be a directory"
181
178
                                 % (relpath, self._path))
182
 
        basepath = self._path.split('/')
183
 
        if len(basepath) > 0 and basepath[-1] == '':
184
 
            basepath = basepath[:-1]
 
179
            basepath = self._path.split('/')
 
180
            if len(basepath) > 0 and basepath[-1] == '':
 
181
                basepath = basepath[:-1]
 
182
 
185
183
        for p in relpath_parts:
186
184
            if p == '..':
187
185
                if len(basepath) == 0:
254
252
            f.seek(start, (start < 0) and 2 or 0)
255
253
            start = f.tell()
256
254
            data = f.read(size)
257
 
            assert len(data) == size
 
255
            if len(data) != size:
 
256
                raise errors.ShortReadvError(relpath, start, size,
 
257
                                             actual=len(data))
258
258
            yield start, data
259
259
 
260
260
    @staticmethod