mtree2

Crates.iomtree2
lib.rsmtree2
version0.6.8
sourcesrc
created_at2024-06-28 17:08:23.466218
updated_at2024-09-20 18:17:05.665498
descriptionA crate for iterating through the entries of an mtree record file.
homepage
repositoryhttps://github.com/VorpalBlade/paketkoll
max_upload_size
id1286859
size436,343
Arvid Norlander (VorpalBlade)

documentation

README

mtree2

[ lib.rs ] [ crates.io ]

This is a fork of mtree-rs fixing some issues and improving performance. Unfortunately the upstream has been dead apart from one comment, so a fork was necessary.

The original README is reproduced below:


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;

// 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.
}
Commit count: 380

cargo fmt