1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
[]
= "fstool"
= "0.4.2"
= "2024"
= "1.85"
= "Build disk images and filesystems (ext2/3/4, MBR, GPT) from a directory tree and TOML spec, in the spirit of genext2fs."
= "MIT"
= "https://github.com/KarpelesLab/fstool"
= "README.md"
= ["filesystem", "ext4", "ext2", "gpt", "image"]
= ["filesystem", "command-line-utilities"]
[]
= "fstool"
= "src/lib.rs"
[[]]
= "fstool"
= "src/bin/fstool/main.rs"
[]
# Compression codecs for SquashFS reads and `.tar.<algo>` streaming I/O.
# Enabled by default; disable with `default-features = false` and pick
# a subset if you want to slim the binary or avoid a C-bundled build.
#
# Archive backends (zip / cpio / ar) are always compiled — they add no new
# dependencies (zip's DEFLATE rides the `gzip` feature; cpio/ar need no
# codec). The detection-only scaffolds (7z / rar / arc / lha / lzx / cab /
# sit) are likewise always present; when a pure-Rust decoder is wired for
# one, it gains its own optional dependency behind a per-format feature
# here, matching the codec pattern above.
= ["gzip", "xz", "lzma", "lz4", "zstd", "lzo", "dmg-bzip2", "dmg-lzfse", "dmg-encrypted"]
= ["dep:flate2"]
= ["dep:lzma-rs"]
= ["dep:lzma-rs"]
= ["dep:lz4_flex"]
= ["dep:zstd"]
= ["dep:minilzo-rs"]
# DMG chunk codecs beyond the always-available zero / raw / zlib / ADC set.
# bzip2-rs is a pure-Rust decoder, lzfse_rust is a pure-Rust LZFSE
# decoder; both gated so a slim build can drop them.
= ["dep:bzip2-rs"]
= ["dep:lzfse_rust"]
# Password-protected DMG read support (`encrcdsa` v2). Pulls in the
# RustCrypto AES/DES/CBC/HMAC/SHA1/PBKDF2 crates — all pure Rust. Gated
# so a slim build can drop them.
= [
"dep:aes",
"dep:cbc",
"dep:cipher",
"dep:des",
"dep:hmac",
"dep:sha1",
"dep:pbkdf2",
]
# FUSE adapter: enables the `fstool mount` subcommand which exposes an
# ext{2,3,4} image as a userspace filesystem via libfuse (Linux) or
# macFUSE (macOS). Off by default so the core build doesn't need a C
# FUSE library on the host; opt in with `--features fuse`.
= ["dep:fuser"]
[]
= "2"
= "0.4"
= { = "1", = ["v4"] }
= "1"
= { = "4", = ["derive"] }
= { = "1.0.228", = ["derive"] }
= "1.1.2"
= "0.6.8"
# CP949 (Korean) ↔ UTF-8 for the GRF backend (Gravity Ragnarok archives
# store filenames in CP949). encoding_rs's `EUC_KR` label is the WHATWG
# alias that covers CP949 — the spec mapping is identical in practice.
= "0.8"
# Used to spool compressed tar streams to a temp file when reading or
# writing `.tar.gz` / `.tar.zst` / etc., so we don't have to hold the
# whole archive in RAM. Cheap dep; already in dev-dependencies.
= "3"
# Compression codecs — all optional and feature-gated. Pure-rust where
# possible (flate2 via miniz_oxide, lz4_flex, lzma-rs); zstd and lzo
# pull in bundled C source.
= { = "1", = true, = false, = ["rust_backend"] }
= { = "0.3", = true }
= { = "0.11", = true, = false, = ["std", "safe-encode", "safe-decode", "frame"] }
= { = "0.13", = true }
= { = "0.6", = true }
# DMG codec deps. bzip2-rs is decode-only pure Rust; lzfse_rust is a
# pure-Rust LZFSE encoder + decoder. Both opt-in via dmg-bzip2 /
# dmg-lzfse features so a build without DMG support can drop them.
= { = "0.1", = true }
= { = "0.2", = true }
# Encrypted DMG (encrcdsa v2) deps — all pure-Rust from the RustCrypto
# organization. Opt-in via the `dmg-encrypted` feature.
= { = "0.8", = true }
= { = "0.1", = true, = ["std"] }
= { = "0.4", = true, = ["block-padding"] }
= { = "0.8", = true }
= { = "0.12", = true }
= { = "0.10", = true }
= { = "0.12", = true, = false, = ["hmac"] }
# FUSE adapter — Linux uses libfuse, macOS uses macFUSE. Off by default
# (see the `fuse` feature). `fuser` is the maintained successor to
# `fuse-rs` and tracks the libfuse 3.x ABI. We enable the default
# `libfuse` feature so the build links against the system FUSE
# library; running `cargo build --features fuse` therefore requires
# libfuse-dev (Linux) or macFUSE (macOS) installed on the host.
= { = "0.16", = true, = ["libfuse"] }
# Needed on Unix for the BLKGETSIZE64 / DKIOCGETBLOCKCOUNT ioctls used to
# query the size of a block device, plus the O_EXCL open flag that refuses
# devices with a mounted partition.
[]
= "0.2"
[]
= "3"
= "0.11"