fn parse()

in reverie-ptrace/src/gdbstub/commands/base/_qXfer.rs [21:50]


    fn parse(mut bytes: BytesMut) -> Option<Self> {
        if bytes.starts_with(b":features:read:") {
            let mut iter =
                bytes[b":features:read:".len()..].split_mut(|c| *c == b':' || *c == b',');
            let annex = iter.next()?;
            if annex != b"target.xml" {
                return None;
            }
            let offset = iter.next()?;
            let len = iter.next()?;
            Some(qXfer::FeaturesRead {
                offset: decode_hex(offset).ok()?,
                len: decode_hex(len).ok()?,
            })
        } else if bytes.starts_with(b":auxv:read:") {
            let mut iter = bytes[b":auxv:read:".len()..].split_mut(|c| *c == b':' || *c == b',');
            let annex = iter.next()?;
            if annex != b"" {
                return None;
            }
            let offset = iter.next()?;
            let len = iter.next()?;
            Some(qXfer::AuxvRead {
                offset: decode_hex(offset).ok()?,
                len: decode_hex(len).ok()?,
            })
        } else {
            None
        }
    }