xeno_rs/archive/
dmg.rs

1// use std::io::{BufReader, Read, Seek};
2// use std::path::PathBuf;
3// use std::sync::Arc;
4// use apple_dmg::DmgReader;
5
6// pub struct DmgArchive<R: Read + Seek> {
7//     inner: DmgReader<R>,
8//     password: Option<String>
9// }
10
11
12// pub struct DmgEntries<'a, R: Read + Seek> {
13//     dmg_inner: Arc<&'a mut DmgReader<R>>,
14//     current_partition: usize,
15// }
16
17// impl<'a, R: Read + Seek> Iterator for DmgEntries<'a, R> {
18//     type Item = zip::result::ZipResult<ZipEntry<'a, R>>;
19
20//     fn next(&mut self) -> Option<zip::result::ZipResult<ZipEntry<'a, R>>> {
21//         if self.current >= self.total {
22//             return None;
23//         }
24
25//         self.dmg_inner.plist().partitions().len();
26//         let partition = self.dmg_inner.plist().partitions().get(self.current_partition);
27//         if let Some(partition) = partition {
28            
29//         }
30
31//         let entry = self.inner.by_index(self.current)
32//             .map(|result|  ZipEntry {
33//                 index: self.current, 
34//                 is_dir: result.is_dir(), 
35//                 is_file: result.is_file(), 
36//                 size: result.size(),
37//                 path: PathBuf::from(result.name()),
38//                 zip_inner: self.inner.clone(),
39//                 _mark: std::marker::PhantomData::<&'a R> } );
40        
41//         self.current += 1;
42//         Some(entry)
43//     }
44// }
45
46
47// impl<R> DmgArchive<R>
48// where
49//     R: Read + Seek
50// {
51//     pub fn entries(&mut self) -> std::io::Result<ZipEntries<R>> {
52//         let total = self.inner.len();
53//         Ok(ZipEntries {
54//             inner: Arc::new(Mutex::new(&mut self.inner)),
55//             current: 0,
56//             total,
57//             password: self.password.clone(),
58//             _mark: std::marker::PhantomData::<&R>
59//         })
60//     }
61// }
62
63