Expand description
A library for iterating through entries of an mtree.
mtree is a data format used for describing a sequence of files. Their location is record, along with optional extra values like checksums, size, permissions etc.
For details on the spec see mtree(5).
§Examples
use mtree2::MTree;
use std::time::{SystemTime, UNIX_EPOCH};
// We're going to load data from a string so this example with pass doctest,
// but there's no reason you can't use a file, or any other data source.
let raw_data = "
/set type=file uid=0 gid=0 mode=644
./.BUILDINFO time=1523250074.300237174 size=8602 md5digest=13c0a46c2fb9f18a1a237d4904b6916e \
sha256digest=db1941d00645bfaab04dd3898ee8b8484874f4880bf03f717adf43a9f30d9b8c
./.PKGINFO time=1523250074.276237110 size=682 md5digest=fdb9ac9040f2e78f3561f27e5b31c815 \
sha256digest=5d41b48b74d490b7912bdcef6cf7344322c52024c0a06975b64c3ca0b4c452d1
/set mode=755
./usr time=1523250049.905171912 type=dir
./usr/bin time=1523250065.373213293 type=dir
";
let entries = MTree::from_reader(raw_data.as_bytes());
for entry in entries {
// Normally you'd want to handle any errors
let entry = entry.unwrap();
// We can print out a human-readable copy of the entry
println!("{}", entry);
// Let's check that if there is a modification time, it's in the past
if let Some(time) = entry.time() {
assert!(time < SystemTime::now());
}
// We might also want to take a checksum of the file, and compare it to the digests
// supplied by mtree, but this example doesn't have access to a filesystem.
}
§Crate features
By default, pathnames are parsed as ASCII, with characters outside of the 95 printable ASCII characters encoded as backshlash followed by three octal digits according to mtree(5).
Parsing of strsvis VIS_CSTYLE coded characters is added in addition as specified in mtree(8) for the netbsd6 flavor.
Structs§
- Device
- A unix device.
- Entry
- An entry in the mtree file.
- File
Mode - The file/dir permissions for owner/group/everyone else.
- MTree
- An mtree parser (start here).
- Parser
Error - An error occurred during parsing a record.