diff --git a/dedupestore/archive.py b/dedupestore/archive.py index 2a83f70dc..67b8f462c 100644 --- a/dedupestore/archive.py +++ b/dedupestore/archive.py @@ -9,7 +9,7 @@ import sys from . import NS_ARCHIVE_METADATA, NS_ARCHIVE_ITEMS, NS_ARCHIVE_CHUNKS, NS_CHUNK from .chunkifier import chunkify -from .helpers import uid2user, user2uid, gid2group, group2gid, IntegrityError +from .helpers import uid2user, user2uid, gid2group, group2gid, IntegrityError, mod_to_str CHUNK_SIZE = 55001 @@ -90,13 +90,15 @@ class Archive(object): return osize, csize, usize def list(self): + tmap = dict(FILE='-', DIRECTORY='d', SYMLINK='l') self.get_items() for item in self.items: - mode = str(item['mode']) + type = tmap[item['type']] + mode = mod_to_str(item['mode']) size = item.get('size', 0) mtime = datetime.fromtimestamp(item['mtime']) - print '%s %-6s %-6s %8d %s %s' % (mode, item['user'], item['group'], - size, mtime, item['path']) + print '%s%s %-6s %-6s %8d %s %s' % (type, mode, item['user'], + item['group'], size, mtime, item['path']) def extract(self, dest=None): self.get_items() diff --git a/dedupestore/helpers.py b/dedupestore/helpers.py index 0be819312..f9799d91c 100644 --- a/dedupestore/helpers.py +++ b/dedupestore/helpers.py @@ -2,6 +2,7 @@ import argparse import grp import logging import pwd +import stat import re @@ -120,3 +121,7 @@ def pretty_size(v): return str(v) +def mod_to_str(mod): + def x(v): + return ''.join(v & m and s or '-' for m, s in ((4, 'r'), (2, 'w'), (1, 'x'))) + return '%s%s%s' % (x(mod / 64), x(mod / 8), x(mod))