in rust/ccommon-backend/src/compat.rs [108:127]
fn read(&mut self, buf: &mut [u8]) -> Result<usize> {
let read = unsafe {
fread(
buf.as_mut_ptr() as *mut c_void,
1,
buf.len(),
self.as_mut_ptr(),
)
};
if read == buf.len() {
return Ok(read);
}
if unsafe { feof(self.as_mut_ptr()) != 0 } {
return Ok(read);
}
Err(Error::last_os_error())
}