diff options
Diffstat (limited to 'src/zip/driver.rs')
| -rw-r--r-- | src/zip/driver.rs | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/zip/driver.rs b/src/zip/driver.rs index 3793e31..99b409d 100644 --- a/src/zip/driver.rs +++ b/src/zip/driver.rs | |||
| @@ -5,7 +5,7 @@ use crate::zip::{ | |||
| 5 | BitFlag, CompressionMethod, ZipError, ZipFileInfo, ZipFileReader, ZipFileWriter, ZipResult, | 5 | BitFlag, CompressionMethod, ZipError, ZipFileInfo, ZipFileReader, ZipFileWriter, ZipResult, |
| 6 | }; | 6 | }; |
| 7 | use chrono::{DateTime, Local, NaiveDate, NaiveDateTime, NaiveTime}; | 7 | use chrono::{DateTime, Local, NaiveDate, NaiveDateTime, NaiveTime}; |
| 8 | use std::collections::HashMap as Map; | 8 | use std::collections::BTreeMap as Map; |
| 9 | use std::fs::File; | 9 | use std::fs::File; |
| 10 | use std::io::{Read, Seek, SeekFrom, Write}; | 10 | use std::io::{Read, Seek, SeekFrom, Write}; |
| 11 | 11 | ||
| @@ -105,7 +105,7 @@ impl<Io: Read + Seek> ArchiveRead for Zip<Io> { | |||
| 105 | }; | 105 | }; |
| 106 | 106 | ||
| 107 | // Read cd records | 107 | // Read cd records |
| 108 | let mut files = Map::with_capacity(cd_records as usize); | 108 | let mut files = Map::new(); |
| 109 | io.seek(SeekFrom::Start(cd_pointer))?; | 109 | io.seek(SeekFrom::Start(cd_pointer))?; |
| 110 | let buf = io.read_vec(cd_size as usize)?; | 110 | let buf = io.read_vec(cd_size as usize)?; |
| 111 | 111 | ||
| @@ -200,6 +200,7 @@ impl<Io: Read + Seek> ArchiveRead for Zip<Io> { | |||
| 200 | ))?; | 200 | ))?; |
| 201 | ep += header.size as usize | 201 | ep += header.size as usize |
| 202 | } | 202 | } |
| 203 | // Skip unrecognized header | ||
| 203 | _ => ep += header.size as usize, | 204 | _ => ep += header.size as usize, |
| 204 | } | 205 | } |
| 205 | } | 206 | } |
| @@ -226,9 +227,7 @@ impl<Io: Read + Seek> ArchiveRead for Zip<Io> { | |||
| 226 | } | 227 | } |
| 227 | 228 | ||
| 228 | fn files(&self) -> Vec<&Self::FileInfo> { | 229 | fn files(&self) -> Vec<&Self::FileInfo> { |
| 229 | let mut files: Vec<&Self::FileInfo> = self.files.values().collect(); | 230 | self.files.values().collect() |
| 230 | files.sort_by_key(|f| &f.name); | ||
| 231 | files | ||
| 232 | } | 231 | } |
| 233 | 232 | ||
| 234 | fn get_file_info(&self, name: &str) -> ZipResult<&Self::FileInfo> { | 233 | fn get_file_info(&self, name: &str) -> ZipResult<&Self::FileInfo> { |
