Crate mtree2

Source
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.
FileMode
The file/dir permissions for owner/group/everyone else.
MTree
An mtree parser (start here).
ParserError
An error occurred during parsing a record.

Enums§

Error
The error type for this crate.
FileType
The type of an entry.
Format
The available device formats.