"""Common code for listing files from a bup repository."""
-import copy, stat, xstat
+import copy, os.path, stat, xstat
from bup import metadata, options, vfs
from helpers import *
meta = copy.copy(n.metadata())
if meta:
meta.path = name
+ meta.size = n.size()
else:
# Fake it -- summary_str() is designed to handle a fake.
meta = metadata.Metadata()
a,all show hidden files
A,almost-all show hidden files except . and ..
l use a detailed, long listing format
+d,directory show directories, not contents; don't follow symlinks
F,classify append type indicator: dir/ sym@ fifo| sock= exec*
file-type append type indicator: dir/ sym@ fifo| sock=
human-readable print human readable file sizes (i.e. 3.9K, 4.7M)
ret = 0
for path in (extra or [default]):
try:
- n = pwd.try_resolve(path)
+ if opt.directory:
+ n = pwd.lresolve(path)
+ else:
+ n = pwd.try_resolve(path)
- if stat.S_ISDIR(n.mode):
+ if not opt.directory and stat.S_ISDIR(n.mode):
if show_hidden == 'all':
output_node_info(n, '.')
# Match non-bup "ls -a ... /".
or not len(name)>1 or not name.startswith('.'):
output_node_info(sub, name)
else:
- output_node_info(n, path)
+ output_node_info(n, os.path.normpath(path))
except vfs.NodeError, e:
log('error: %s\n' % e)
ret = 1