summaryrefslogtreecommitdiff
path: root/summainlib.py
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2012-02-25 14:23:29 +0000
committerLars Wirzenius <liw@liw.fi>2012-02-25 14:23:29 +0000
commita4a011dd30194eb3f1af728a887199d99da7ec29 (patch)
tree6f0233e8faeaf5375dd8d8e752040896c49187f1 /summainlib.py
parentc2990d501379a4b8e7c84070c4453eae947578a9 (diff)
downloadsummain-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.py23
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))