in reverie-syscalls/src/args/mod.rs [117:156]
fn fmt<M: MemoryAccess>(
&self,
memory: &M,
outputs: bool,
f: &mut fmt::Formatter,
) -> fmt::Result {
match self {
None => f.write_str("NULL"),
Some(array) => match array.read(memory) {
Ok(v) => {
write!(f, "{} -> [", array.0)?;
let mut count = 0;
let mut iter = v.into_iter();
if let Some(item) = iter.next() {
item.fmt(memory, outputs, f)?;
count += 1;
}
for item in iter {
f.write_str(", ")?;
// Only print the first 32 arguments like strace does.
if count > 32 {
f.write_str("...")?;
break;
}
item.fmt(memory, outputs, f)?;
count += 1;
}
f.write_str("]")
}
Err(e) => write!(f, "{} -> <{}>", array.0, e),
},
}
}