2019-03-14 09:54:09 +00:00
|
|
|
//! *pxar* Implementation
|
2018-12-30 12:47:27 +00:00
|
|
|
//!
|
2019-03-14 09:54:09 +00:00
|
|
|
//! This code implements a slightly modified version of the *catar*
|
|
|
|
//! format used in the [casync](https://github.com/systemd/casync)
|
|
|
|
//! toolkit (we are not 100% binary compatible). It is a file archive
|
|
|
|
//! format defined by 'Lennart Poettering', specially defined for
|
|
|
|
//! efficent deduplication.
|
2018-12-30 12:47:27 +00:00
|
|
|
|
|
|
|
//! Every archive contains items in the following order:
|
|
|
|
//! * ENTRY -- containing general stat() data and related bits
|
|
|
|
//! * USER -- user name as text, if enabled
|
|
|
|
//! * GROUP -- group name as text, if enabled
|
|
|
|
//! * XATTR -- one extended attribute
|
|
|
|
//! * ... -- more of these when there are multiple defined
|
|
|
|
//! * ACL_USER -- one USER ACL entry
|
|
|
|
//! * ... -- more of these when there are multiple defined
|
|
|
|
//! * ACL_GROUP -- one GROUP ACL entry
|
|
|
|
//! * ... -- more of these when there are multiple defined
|
|
|
|
//! * ACL_GROUP_OBJ -- The ACL_GROUP_OBJ
|
|
|
|
//! * ACL_DEFAULT -- The various default ACL fields if there's one defined
|
|
|
|
//! * ACL_DEFAULT_USER -- one USER ACL entry
|
|
|
|
//! * ... -- more of these when multiple are defined
|
|
|
|
//! * ACL_DEFAULT_GROUP -- one GROUP ACL entry
|
|
|
|
//! * ... -- more of these when multiple are defined
|
|
|
|
//! * FCAPS -- file capability in Linux disk format
|
|
|
|
//! * QUOTA_PROJECT_ID -- the ext4/xfs quota project ID
|
|
|
|
//! * PAYLOAD -- file contents, if it is one
|
|
|
|
//! * SYMLINK -- symlink target, if it is one
|
|
|
|
//! * DEVICE -- device major/minor, if it is a block/char device
|
|
|
|
//!
|
|
|
|
//! If we are serializing a directory, then this is followed by:
|
|
|
|
//!
|
|
|
|
//! * FILENAME -- name of the first directory entry (strictly ordered!)
|
|
|
|
//! * <archive> -- serialization of the first directory entry's metadata and contents,
|
|
|
|
//! following the exact same archive format
|
|
|
|
//! * FILENAME -- name of the second directory entry (strictly ordered!)
|
|
|
|
//! * <archive> -- serialization of the second directory entry
|
|
|
|
//! * ...
|
|
|
|
//! * GOODBYE -- lookup table at the end of a list of directory entries
|
|
|
|
|
2019-03-15 07:24:32 +00:00
|
|
|
mod binary_search_tree;
|
2019-03-15 10:34:31 +00:00
|
|
|
pub use binary_search_tree::*;
|
2018-12-30 12:47:27 +00:00
|
|
|
|
2019-03-15 07:24:32 +00:00
|
|
|
mod format_definition;
|
|
|
|
pub use format_definition::*;
|
|
|
|
|
|
|
|
mod encoder;
|
|
|
|
pub use encoder::*;
|
|
|
|
|
2019-03-15 07:36:02 +00:00
|
|
|
mod sequential_decoder;
|
|
|
|
pub use sequential_decoder::*;
|
2019-03-15 08:36:05 +00:00
|
|
|
|
|
|
|
mod decoder;
|
|
|
|
pub use decoder::*;
|