123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- #[allow(warnings)]
- #[cfg(target_pointer_width = "16")]
- type c_int = i16;
- #[allow(warnings)]
- #[cfg(not(target_pointer_width = "16"))]
- type c_int = i32;
- #[no_mangle]
- pub unsafe extern "C" fn memcpy(dest: *mut u8,
- src: *const u8,
- n: usize)
- -> *mut u8 {
- let mut i = 0;
- while i < n {
- *dest.offset(i as isize) = *src.offset(i as isize);
- i += 1;
- }
- dest
- }
- #[no_mangle]
- pub unsafe extern "C" fn memmove(dest: *mut u8,
- src: *const u8,
- n: usize)
- -> *mut u8 {
- if src < dest as *const u8 {
- // copy from end
- let mut i = n;
- while i != 0 {
- i -= 1;
- *dest.offset(i as isize) = *src.offset(i as isize);
- }
- } else {
- // copy from beginning
- let mut i = 0;
- while i < n {
- *dest.offset(i as isize) = *src.offset(i as isize);
- i += 1;
- }
- }
- dest
- }
- #[no_mangle]
- pub unsafe extern "C" fn memset(s: *mut u8, c: c_int, n: usize) -> *mut u8 {
- let mut i = 0;
- while i < n {
- *s.offset(i as isize) = c as u8;
- i += 1;
- }
- s
- }
- #[no_mangle]
- pub unsafe extern "C" fn memcmp(s1: *const u8, s2: *const u8, n: usize) -> i32 {
- let mut i = 0;
- while i < n {
- let a = *s1.offset(i as isize);
- let b = *s2.offset(i as isize);
- if a != b {
- return a as i32 - b as i32;
- }
- i += 1;
- }
- 0
- }
|