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
//! Multi-volume archive support.
//!
//! This module provides support for reading and writing multi-volume 7z archives,
//! which are archives split across multiple files (e.g., `.7z.001`, `.7z.002`, etc.).
//!
//! # Overview
//!
//! Multi-volume archives are useful for:
//! - Storing large archives on media with size limits (USB drives, DVDs)
//! - Splitting archives for easier transfer or upload
//! - Working around file system limitations
//!
//! # Reading Multi-Volume Archives
//!
//! ```rust,ignore
//! use zesven::volume::MultiVolumeReader;
//! use zesven::Archive;
//!
//! // Open the first volume (other volumes are discovered automatically)
//! let reader = MultiVolumeReader::open("archive.7z.001")?;
//! println!("Archive spans {} volumes", reader.volume_count());
//!
//! // Use with Archive just like a regular file
//! let archive = Archive::open(reader)?;
//! for entry in archive.entries() {
//! println!("{}", entry.path.as_str());
//! }
//! ```
//!
//! # Writing Multi-Volume Archives
//!
//! ```rust,ignore
//! use zesven::volume::{VolumeConfig, MultiVolumeWriter};
//! use zesven::Writer;
//!
//! // Configure volume size (e.g., 100 MB per volume)
//! let config = VolumeConfig::new("archive.7z", 100 * 1024 * 1024);
//! let writer = MultiVolumeWriter::create(config)?;
//!
//! // Use with Writer just like a regular file
//! let mut archive = Writer::new(writer);
//! // ... add files ...
//! let result = archive.finish()?;
//! ```
//!
//! # Volume Naming Convention
//!
//! Multi-volume archives use the following naming convention:
//! - `archive.7z.001` - First volume
//! - `archive.7z.002` - Second volume
//! - `archive.7z.003` - Third volume
//! - etc.
//!
//! The volume number is always 3 digits, padded with zeros.
pub use VolumeConfig;
pub use ;
pub use UnifiedReader;
pub use MultiVolumeWriter;