From bb34602daaa959e07a8f2d6686ae584a67714bf4 Mon Sep 17 00:00:00 2001 From: Matt Bilker Date: Fri, 30 Aug 2019 21:12:44 +0000 Subject: [PATCH] text_reader: support quick-xml without encoding_rs dependency --- src/encoding_type.rs | 6 ++++++ src/text_reader.rs | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/encoding_type.rs b/src/encoding_type.rs index e840bfd..15848b7 100644 --- a/src/encoding_type.rs +++ b/src/encoding_type.rs @@ -68,6 +68,12 @@ impl EncodingType { Ok(val) } + pub fn from_label(label: &[u8]) -> Result { + Encoding::for_label(label) + .ok_or(KbinErrorKind::UnknownEncoding.into()) + .and_then(Self::from_encoding) + } + pub fn to_byte(&self) -> u8 { match *self { EncodingType::None => 0x00, // 0x00 >> 5 = 0 diff --git a/src/text_reader.rs b/src/text_reader.rs index 18ed612..ee540af 100644 --- a/src/text_reader.rs +++ b/src/text_reader.rs @@ -216,8 +216,10 @@ impl<'a> TextXmlReader<'a> { parent_collection.children_mut().push_back(collection); } }, - Ok(Event::Decl(_)) => { - self.encoding = EncodingType::from_encoding(self.xml_reader.encoding())?; + Ok(Event::Decl(e)) => { + if let Some(encoding) = e.encoding() { + self.encoding = EncodingType::from_label(&encoding?)?; + } }, Ok(Event::Eof) => break, Ok(_) => {},