fix #4001: datastore/catalog: add number of files to directory entry
When listing the content of a catalog, add the number of files contained in the directory as its size. Also removes redundant code, the `mtime` and the `size` of a file is already set when creating the archive entry, but we naturally need to override the size now for directories. Signed-off-by: Stefan Sterz <s.sterz@proxmox.com> Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
parent
9ec82aefb4
commit
66ad63bac2
|
@ -706,10 +706,11 @@ impl<R: Read + Seek> CatalogReader<R> {
|
||||||
components.push(b'/');
|
components.push(b'/');
|
||||||
components.extend(&direntry.name);
|
components.extend(&direntry.name);
|
||||||
let mut entry = ArchiveEntry::new(&components, Some(&direntry.attr));
|
let mut entry = ArchiveEntry::new(&components, Some(&direntry.attr));
|
||||||
if let DirEntryAttribute::File { size, mtime } = direntry.attr {
|
|
||||||
entry.size = size.into();
|
if let DirEntryAttribute::Directory { start: _ } = direntry.attr {
|
||||||
entry.mtime = mtime.into();
|
entry.size = Some(u64::try_from(self.read_dir(&direntry)?.len())?);
|
||||||
}
|
}
|
||||||
|
|
||||||
res.push(entry);
|
res.push(entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -911,7 +912,8 @@ pub struct ArchiveEntry {
|
||||||
pub entry_type: String,
|
pub entry_type: String,
|
||||||
/// Is this entry a leaf node, or does it have children (i.e. a directory)?
|
/// Is this entry a leaf node, or does it have children (i.e. a directory)?
|
||||||
pub leaf: bool,
|
pub leaf: bool,
|
||||||
/// The file size, if entry_type is 'f' (file)
|
/// The file size, if entry_type is 'f' (file) or the amount of files in a
|
||||||
|
/// directory if entry_type is 'd' (directory)
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub size: Option<u64>,
|
pub size: Option<u64>,
|
||||||
/// The file "last modified" time stamp, if entry_type is 'f' (file)
|
/// The file "last modified" time stamp, if entry_type is 'f' (file)
|
||||||
|
|
Loading…
Reference in New Issue