Files
unixtract/src/common.rs
T

23 lines
718 B
Rust
Raw Normal View History

2025-09-11 20:26:51 +02:00
use std::fs::{File};
2025-09-27 00:31:18 +02:00
use std::io::{self, Read, Seek, SeekFrom};
2025-09-11 20:26:51 +02:00
pub fn read_file(mut file: &File, offset: u64, size: usize) -> Result<Vec<u8>, Box<dyn std::error::Error>> {
file.seek(SeekFrom::Start(offset))?;
let mut buffer = vec![0u8; size];
let _bytes_read = file.read(&mut buffer)?;
2025-09-25 17:49:02 +02:00
// reset seek (!
file.seek(SeekFrom::Start(offset))?;
2025-09-11 20:26:51 +02:00
Ok(buffer)
2025-09-27 00:31:18 +02:00
}
pub fn read_exact<R: Read>(reader: &mut R, size: usize) -> io::Result<Vec<u8>> {
let mut buf = vec![0u8; size];
reader.read_exact(&mut buf)?;
Ok(buf)
}
pub fn string_from_bytes(buf: &[u8]) -> String {
let end = buf.iter().position(|&b| b == 0).unwrap_or(buf.len());
String::from_utf8_lossy(&buf[..end]).to_string()
2025-09-11 20:26:51 +02:00
}