5
0
mirror of git://git.proxmox.com/git/pxar.git synced 2025-01-03 09:17:38 +03:00
pxar/examples/mk-format-hashes.rs
Christian Ebner d3447d0149 format/examples: add header type PXAR_PAYLOAD_REF
Introduces the header type `PXAR_PAYLOAD_REF` to mark regular file
entry payloads, not encoded within the regular pxar archive but
rather redirected to a dedicated payload output writer.
It therefore substitutes the `PXAR_PAYLOAD` header type for these
entries.

The header marks the start and size for a `PayloadRef` typed object
in the archive, storing the offset to the payload header offset in the
payload stream of the dedicated payload output as well as the payload
size.

The `PayloadRef` provides the means to store, serialize and
deserialize the entry.

Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
2024-05-23 14:39:11 +02:00

74 lines
2.2 KiB
Rust

use pxar::format::hash_filename;
const CONSTANTS: &[(&str, &str, &str)] = &[
(
"Beginning of an entry (current version).",
"PXAR_ENTRY",
"__PROXMOX_FORMAT_ENTRY_V2__",
),
(
"Previous version of the entry struct",
"PXAR_ENTRY_V1",
"__PROXMOX_FORMAT_ENTRY__",
),
("", "PXAR_FILENAME", "__PROXMOX_FORMAT_FILENAME__"),
("", "PXAR_SYMLINK", "__PROXMOX_FORMAT_SYMLINK__"),
("", "PXAR_DEVICE", "__PROXMOX_FORMAT_DEVICE__"),
("", "PXAR_XATTR", "__PROXMOX_FORMAT_XATTR__"),
("", "PXAR_ACL_USER", "__PROXMOX_FORMAT_ACL_USER__"),
("", "PXAR_ACL_GROUP", "__PROXMOX_FORMAT_ACL_GROUP__"),
("", "PXAR_ACL_GROUP_OBJ", "__PROXMOX_FORMAT_ACL_GROUP_OBJ__"),
("", "PXAR_ACL_DEFAULT", "__PROXMOX_FORMAT_ACL_DEFAULT__"),
(
"",
"PXAR_ACL_DEFAULT_USER",
"__PROXMOX_FORMAT_ACL_DEFAULT_USER__",
),
(
"",
"PXAR_ACL_DEFAULT_GROUP",
"__PROXMOX_FORMAT_ACL_DEFAULT_GROUP__",
),
("", "PXAR_FCAPS", "__PROXMOX_FORMAT_FCAPS__"),
("", "PXAR_QUOTA_PROJID", "__PROXMOX_FORMAT_QUOTA_PROJID__"),
(
"Marks item as hardlink",
"PXAR_HARDLINK",
"__PROXMOX_FORMAT_HARDLINK__",
),
(
"Marks the beginning of the payload (actual content) of regular files",
"PXAR_PAYLOAD",
"__PROXMOX_FORMAT_PXAR_PAYLOAD__",
),
(
"Marks the beginning of a payload reference for regular files",
"PXAR_PAYLOAD_REF",
"__PROXMOX_FORMAT_PXAR_PAYLOAD_REF__",
),
(
"Marks item as entry of goodbye table",
"PXAR_GOODBYE",
"__PROXMOX_FORMAT_GOODBYE__",
),
(
"The end marker used in the GOODBYE object",
"PXAR_GOODBYE_TAIL_MARKER",
"__PROXMOX_FORMAT_PXAR_GOODBYE_TAIL_MARKER__",
),
];
fn main() {
println!("// Generated by `cargo run --example mk-format-hashes`");
for constant in CONSTANTS {
if !constant.0.is_empty() {
println!("/// {}", constant.0);
}
println!(
"pub const {}: u64 = 0x{:016x};",
constant.1,
hash_filename(constant.2.as_bytes()),
)
}
}