diff options
author | Lars Wirzenius <liw@liw.fi> | 2012-02-25 14:23:29 +0000 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2012-02-25 14:23:29 +0000 |
commit | a4a011dd30194eb3f1af728a887199d99da7ec29 (patch) | |
tree | 6f0233e8faeaf5375dd8d8e752040896c49187f1 /summainlib.py | |
parent | c2990d501379a4b8e7c84070c4453eae947578a9 (diff) | |
download | summain-a4a011dd30194eb3f1af728a887199d99da7ec29.tar.gz |
Fix mangling of relative paths
Previously, the whole path would be mangled,
rather than just the relative name.
Diffstat (limited to 'summainlib.py')
-rw-r--r-- | summainlib.py | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/summainlib.py b/summainlib.py index ae6dcb2..475a060 100644 --- a/summainlib.py +++ b/summainlib.py @@ -137,7 +137,8 @@ class FilesystemObject(object): stat_result=None, sha1=None, sha224=None, sha256=None, sha384=None, sha512=None, md5=None, open_file=None, readlink=None): - self._filename = filename + self.filename = filename + self.relative = None self._exclude = set(self._normalize_key(k) for k in exclude) self._pn = pn self._nn = nn @@ -153,7 +154,11 @@ class FilesystemObject(object): self.values = dict() def _compute_name(self): - return urllib.quote(self._pn.normalize(self._filename)) + if self.relative is None: + name = self.filename + else: + name = self.relative # pragma: no cover + return urllib.quote(self._pn.normalize(name)) def _compute_mtime(self): return self.format_time(self._stat_result[RESULT_MTIME_SEC], @@ -188,26 +193,26 @@ class FilesystemObject(object): return self.lookup_group(self._stat_result[RESULT_GID]) def _compute_md5(self): - return self.compute_checksum(self._filename, self._md5) + return self.compute_checksum(self.filename, self._md5) def _compute_sha1(self): - return self.compute_checksum(self._filename, self._sha1) + return self.compute_checksum(self.filename, self._sha1) def _compute_sha224(self): - return self.compute_checksum(self._filename, self._sha224) + return self.compute_checksum(self.filename, self._sha224) def _compute_sha256(self): - return self.compute_checksum(self._filename, self._sha256) + return self.compute_checksum(self.filename, self._sha256) def _compute_sha384(self): - return self.compute_checksum(self._filename, self._sha384) + return self.compute_checksum(self.filename, self._sha384) def _compute_sha512(self): - return self.compute_checksum(self._filename, self._sha512) + return self.compute_checksum(self.filename, self._sha512) def _compute_target(self): if stat.S_ISLNK(self._stat_result[RESULT_MODE]): - return self.readlink(self._filename) + return self.readlink(self.filename) def format_time(self, secs, nsecs): s = time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(secs)) |