in reverie-ptrace/src/gdbstub/logger.rs [44:80]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self.direction {
Direction::In => write!(f, "<-- ")?,
Direction::Out => write!(f, "--> ")?,
}
let nb_left = if self.body.len() > MAX_BYTES_DISPLAY {
Some(self.body.len() - MAX_BYTES_DISPLAY)
} else {
None
};
write!(f, "b\"")?;
for &b in self.body.iter().take(MAX_BYTES_DISPLAY) {
if b == b'\n' {
write!(f, "\\n")?;
} else if b == b'\r' {
write!(f, "\\r")?;
} else if b == b'\t' {
write!(f, "\\t")?;
} else if b == b'\\' || b == b'"' {
write!(f, "\\{}", b as char)?;
} else if b == b'\0' {
write!(f, "\\0")?;
// ASCII printable
} else if (0x20..0x7f).contains(&b) {
write!(f, "{}", b as char)?;
} else {
write!(f, "\\x{:02x}", b)?;
}
}
if let Some(nb) = nb_left {
write!(f, "[{} bytes omitted]", nb)?;
}
write!(f, "#{:02x}", self.checksum)?;
write!(f, "\"")?;
Ok(())
}