}
}
-pub fn encoding_from_headers(
- headers: &Vec<raw::Record>,
- warn: &impl Fn(Error),
-) -> Result<&'static Encoding, Error> {
- let mut encoding_record = None;
- let mut integer_info_record = None;
- for record in headers {
- match record {
- raw::Record::Encoding(record) => encoding_record = Some(record),
- raw::Record::IntegerInfo(record) => integer_info_record = Some(record),
- _ => (),
- }
- }
- let encoding = encoding_record.map(|record| record.0.as_str());
- let character_code = integer_info_record.map(|record| record.character_code);
- match get_encoding(encoding, character_code) {
- Ok(encoding) => Ok(encoding),
- Err(err @ EncodingError::Ebcdic) => Err(Error::EncodingError(err)),
- Err(err) => {
- warn(Error::EncodingError(err));
- // Warn that we're using the default encoding.
- Ok(default_encoding())
- }
- }
-}
pub fn decode(
headers: Vec<raw::Record>,