impl Seek for BufferedArchiveReader
This commit is contained in:
		| @ -266,6 +266,29 @@ impl <'a> crate::tools::BufferedReader for  BufferedArchiveReader<'a> { | ||||
|  | ||||
| } | ||||
|  | ||||
| impl <'a> std::io::Seek for  BufferedArchiveReader<'a> { | ||||
|  | ||||
|     fn seek(&mut self, pos: std::io::SeekFrom) -> Result<u64, std::io::Error> { | ||||
|  | ||||
|         use std::io::{SeekFrom, Error, ErrorKind}; | ||||
|  | ||||
|         let new_offset = match pos { | ||||
|             SeekFrom::Start(start_offset) =>  start_offset as i64, | ||||
|             SeekFrom::End(end_offset) => (self.archive_size as i64)+ end_offset, | ||||
|             SeekFrom::Current(offset) => (self.read_offset as i64) + offset, | ||||
|         }; | ||||
|  | ||||
|         if (new_offset < 0) || (new_offset > (self.archive_size as i64)) { | ||||
|             return Err(Error::new( | ||||
|                 ErrorKind::Other, | ||||
|                 format!("seek is out of range {} ([0..{}])", new_offset, self.archive_size))); | ||||
|         } | ||||
|         self.read_offset = new_offset as u64; | ||||
|  | ||||
|         Ok(self.read_offset) | ||||
|     } | ||||
| } | ||||
|  | ||||
| pub struct ArchiveIndexWriter<'a> { | ||||
|     store: &'a ChunkStore, | ||||
|     chunker: Chunker, | ||||
|  | ||||
		Reference in New Issue
	
	Block a user