diff --git a/darc/archive.py b/darc/archive.py index 3f658599d..40fa35541 100644 --- a/darc/archive.py +++ b/darc/archive.py @@ -258,8 +258,9 @@ class Archive(object): if st.st_nlink > 1: source = self.hard_links.get((st.st_ino, st.st_dev)) if (st.st_ino, st.st_dev) in self.hard_links: - self.add_item({'mode': st.st_mode, - 'path': path, 'source': source}) + item = self.stat_attrs(st, path) + item.update({'path': path, 'source': source}) + self.add_item(item) return else: self.hard_links[st.st_ino, st.st_dev] = safe_path diff --git a/darc/archiver.py b/darc/archiver.py index 3f7dbf016..b11e459d3 100644 --- a/darc/archiver.py +++ b/darc/archiver.py @@ -150,8 +150,17 @@ class Archiver(object): mode = format_file_mode(item['mode']) size = item.get('size', 0) mtime = format_time(datetime.fromtimestamp(item['mtime'])) - print '%s%s %-6s %-6s %8d %s %s' % (type, mode, item['user'], - item['group'], size, mtime, item['path']) + if 'source' in item: + if type == 'l': + extra = ' -> %s' % item['source'] + else: + type = 'h' + extra = ' link to %s' % item['source'] + else: + extra = '' + print '%s%s %-6s %-6s %8d %s %s%s' % (type, mode, item['user'], + item['group'], size, mtime, + item['path'], extra) else: for archive in sorted(Archive.list_archives(store, keychain), key=attrgetter('ts')): print '%-20s %s' % (archive.metadata['name'], to_localtime(archive.ts).strftime('%c'))