in src/main.rs [53:89]
fn write_file(
path: &Path,
header: &Header,
recs: Vec<FileRec>,
) -> Result<(), Box<dyn error::Error>> {
let mut output_file = fs::File::create(path)?;
// skip header
output_file.seek(io::SeekFrom::Start(448))?;
{
let mut output = io::BufWriter::new(&output_file);
let mut writer = blockio::BlockWrite::new(&mut output);
for rec in recs {
rec.to_writer(&mut writer)?;
}
writer.flush()?;
}
let mut header = header.clone();
// what's the full file size?
let end_offset = output_file.seek(io::SeekFrom::Current(0))?;
header.end_offset = end_offset as u32;
// go back to beginning
output_file.seek(io::SeekFrom::Start(0))?;
let mut output = io::BufWriter::new(&output_file);
header.to_writer(&mut output)?;
output.flush()?;
Ok(())
}