use crate::CChar;
#[cfg_attr(feature = "strcpy", no_mangle)]
pub unsafe extern "C" fn strcpy(dest: *mut CChar, src: *const CChar) -> *const CChar {
let mut i = 0;
loop {
*dest.offset(i) = *src.offset(i);
let c = *dest.offset(i);
if c == 0 {
break;
}
i += 1;
}
dest
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn short() {
let src = b"hi\0";
let mut dest = *b"abcdef"; let result = unsafe { strcpy(dest.as_mut_ptr(), src.as_ptr()) };
assert_eq!(
unsafe { core::slice::from_raw_parts(result, 6) },
*b"hi\0def"
);
}
}