5
0
mirror of git://git.proxmox.com/git/pxar.git synced 2025-01-10 09:17:40 +03:00
pxar/examples/mk-format-hashes.rs
Christian Ebner d51db63953 encoder/format: finish payload stream with marker
Mark the end of the optional payload stream, this makes sure that at
least some bytes are written to the stream (as empty archives are not
allowed by the proxmox backup server) and possible injected chunks
must be consumed.

Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
2024-06-05 09:24:22 +02:00

79 lines
2.3 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__",
),
(
"The end marker used in the separate payload stream",
"PXAR_PAYLOAD_TAIL_MARKER",
"__PROXMOX_FORMAT_PXAR_PAYLOAD_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()),
)
}
}