aboutsummaryrefslogtreecommitdiff
path: root/src/raw/mod.rs
diff options
context:
space:
mode:
authorDaniel Schadt <kingdread@gmx.de>2018-06-14 16:21:16 +0200
committerDaniel Schadt <kingdread@gmx.de>2018-06-14 16:21:16 +0200
commitf5dcdfff1b52a819adb4354960213d7472978c7f (patch)
tree4a77cfe073c3b7cd3893cc33e586473a8c171bb9 /src/raw/mod.rs
parent12c1426dc10cc30c58e2c8970d73ca8a98e087fa (diff)
downloadevtclib-f5dcdfff1b52a819adb4354960213d7472978c7f.tar.gz
evtclib-f5dcdfff1b52a819adb4354960213d7472978c7f.tar.bz2
evtclib-f5dcdfff1b52a819adb4354960213d7472978c7f.zip
add support for reading zipped logs
Diffstat (limited to 'src/raw/mod.rs')
-rw-r--r--src/raw/mod.rs13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/raw/mod.rs b/src/raw/mod.rs
index 7cbe483..7a079a1 100644
--- a/src/raw/mod.rs
+++ b/src/raw/mod.rs
@@ -6,6 +6,8 @@
//! functions whenever possible.
mod types;
+use zip::ZipArchive;
+
pub use self::types::{
Agent, CbtActivation, CbtBuffRemove, CbtCustomSkill, CbtEvent, CbtResult, CbtStateChange,
Language, Skill, IFF,
@@ -13,4 +15,13 @@ pub use self::types::{
pub mod parser;
-pub use self::parser::{parse_file, Evtc, ParseError};
+pub use self::parser::{parse_file, Evtc, ParseError, ParseResult};
+
+use std::io::{Read, Seek};
+
+/// Parse a complete log that was compressed as a zip file.
+pub fn parse_zip<T: Read + Seek>(input: &mut T) -> ParseResult<Evtc> {
+ let mut archive = ZipArchive::new(input)?;
+ let mut file = archive.by_index(0)?;
+ parse_file(&mut file)
+}