mirror of
https://github.com/lifegpc/msg-tool.git
synced 2026-06-24 04:37:15 +08:00
Allow custom min len header
This commit is contained in:
@@ -514,6 +514,7 @@ pub struct BgiArchiveWriter<T: Write + Seek> {
|
||||
headers: HashMap<String, BgiFileHeader>,
|
||||
compress_file: bool,
|
||||
encoding: Encoding,
|
||||
min_len: usize,
|
||||
}
|
||||
|
||||
impl<T: Write + Seek> BgiArchiveWriter<T> {
|
||||
@@ -543,6 +544,7 @@ impl<T: Write + Seek> BgiArchiveWriter<T> {
|
||||
headers,
|
||||
compress_file: config.bgi_compress_file,
|
||||
encoding,
|
||||
min_len: config.bgi_compress_min_len,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -564,7 +566,7 @@ impl<T: Write + Seek> Archive for BgiArchiveWriter<T> {
|
||||
pos: 0,
|
||||
};
|
||||
Ok(if self.compress_file {
|
||||
Box::new(BgiArchiveFileWithDsc::new(file))
|
||||
Box::new(BgiArchiveFileWithDsc::new(file, self.min_len))
|
||||
} else {
|
||||
Box::new(file)
|
||||
})
|
||||
@@ -643,13 +645,15 @@ impl<'a, T: Write + Seek> Seek for BgiArchiveFile<'a, T> {
|
||||
pub struct BgiArchiveFileWithDsc<'a, T: Write + Seek> {
|
||||
writer: BgiArchiveFile<'a, T>,
|
||||
buf: MemWriter,
|
||||
min_len: usize,
|
||||
}
|
||||
|
||||
impl<'a, T: Write + Seek> BgiArchiveFileWithDsc<'a, T> {
|
||||
pub fn new(writer: BgiArchiveFile<'a, T>) -> Self {
|
||||
pub fn new(writer: BgiArchiveFile<'a, T>, min_len: usize) -> Self {
|
||||
BgiArchiveFileWithDsc {
|
||||
writer,
|
||||
buf: MemWriter::new(),
|
||||
min_len,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -681,7 +685,7 @@ impl<'a, T: Write + Seek> Seek for BgiArchiveFileWithDsc<'a, T> {
|
||||
impl<'a, T: Write + Seek> Drop for BgiArchiveFileWithDsc<'a, T> {
|
||||
fn drop(&mut self) {
|
||||
let buf = self.buf.as_slice();
|
||||
let encoder = DscEncoder::new(&mut self.writer);
|
||||
let encoder = DscEncoder::new(&mut self.writer, self.min_len);
|
||||
if let Err(e) = encoder.pack(&buf) {
|
||||
eprintln!("Failed to write DSC data: {}", e);
|
||||
crate::COUNTER.inc_error();
|
||||
|
||||
Reference in New Issue
Block a user