memmove.c 341 B

1234567891011121314151617181920212223242526272829
  1. #include <lib9.h>
  2. /* for testing only */
  3. void*
  4. memcpy(void *a1, void *a2, ulong n)
  5. {
  6. return memmove(a1, a2, n);
  7. }
  8. void*
  9. memmove(void *a1, void *a2, ulong n)
  10. {
  11. int m = (int)n;
  12. uchar *s, *d;
  13. d = a1;
  14. s = a2;
  15. if(d > s){
  16. s += m;
  17. d += m;
  18. while(--m >= 0)
  19. *--d = *--s;
  20. }
  21. else{
  22. while(--m >= 0)
  23. *d++ = *s++;
  24. }
  25. return a1;
  26. }