This commit is contained in:
Mackenzie Clark 2019-03-28 13:01:02 -07:00
parent d9c693a31c
commit a203675469
3 changed files with 9 additions and 7 deletions

View File

@ -11,12 +11,11 @@ pub trait FileLike: std::io::Write + std::io::Read + std::io::Seek {
fn metadata(&self) -> Result<Metadata, failure::Error>;
// write
// fn write_file(&mut self, buf: &[u8]) -> Result<usize, io::Error>;
// fn write_file(&mut self, buf: &[u8]) -> Result<usize, io::Error>;
// read
// fn read_file(&mut self, buf: &mut [u8]) -> Result<usize, io::Error>;
// fn read_file(&mut self, buf: &mut [u8]) -> Result<usize, io::Error>;
// set_file_len
fn set_file_len(&mut self, len: usize) -> Result<(), failure::Error>;
}

View File

@ -1,5 +1,6 @@
use crate::vfs::file_like::FileLike;
use crate::vfs::vfs_header::{header_from_bytes, ArchiveType, CompressionType};
use crate::vfs::virtual_file::VirtualFile;
use hashbrown::HashMap;
use std::cell::RefCell;
use std::io;
@ -8,7 +9,6 @@ use std::path::{Path, PathBuf};
use std::rc::Rc;
use tar::EntryType;
use zbox::{init_env, OpenOptions, Repo, RepoOpener};
use crate::vfs::virtual_file::VirtualFile;
pub struct Vfs {
repo: Repo,

View File

@ -1,16 +1,19 @@
use failure::Error;
use crate::vfs::file_like::{FileLike, Metadata};
use failure::Error;
use std::io;
pub struct VirtualFile(zbox::File);
impl VirtualFile {
pub fn new(file: zbox::File) -> Self { VirtualFile(file) }
pub fn new(file: zbox::File) -> Self {
VirtualFile(file)
}
}
impl FileLike for VirtualFile {
fn metadata(&self) -> Result<Metadata, Error> {
self.0.metadata()
self.0
.metadata()
.map(|m| Metadata {
len: m.content_len(),
is_file: m.is_file(),