change some error messages, readme, zlib decoding

This commit is contained in:
Reid 2023-10-15 03:18:30 -07:00
parent 1e0dea7135
commit 6e7550927f
Signed by: reidlab
GPG key ID: 6C9EAA3364F962C8
4 changed files with 27 additions and 18 deletions

View file

@ -195,8 +195,19 @@ pub fn decode(level_data: String) -> Vec<HashMap<String, String>> {
let mut decoder = GzDecoder::new(&decoded_bytes[..]);
let mut uncompressed_data = String::new();
decoder.read_to_string(&mut uncompressed_data).expect("err unzipping level");
let uncompressed_data = String::from_utf8(if decoded_bytes.starts_with(&[0x1F, 0x8B]) {
// gzip!!
let mut decompressed_data = Vec::new();
decoder.read_to_end(&mut decompressed_data).expect("err uncompressing level");
decompressed_data
} else if decoded_bytes.starts_with(&[0x78]) {
// zlib!!
let mut decompressed_data = Vec::new();
decoder.read_to_end(&mut decompressed_data).expect("err uncompressing level");
decompressed_data
} else {
panic!("invalid compression method")
}).expect("invalid utf-8 sequence");
return parse(uncompressed_data.as_str())
}