]> pd.if.org Git - pdclib/blob - functions/string/memmove.c
Corrected _PDCLIB_CHAR_SIGNED handling.
[pdclib] / functions / string / memmove.c
1 /* memmove( void *, const void *, size_t )
2
3    This file is part of the Public Domain C Library (PDCLib).
4    Permission is granted to use, modify, and / or redistribute at will.
5 */
6
7 #include <string.h>
8
9 #ifndef REGTEST
10
11 void * memmove( void * s1, const void * s2, size_t n )
12 {
13     char * dest = (char *) s1;
14     const char * src = (const char *) s2;
15     if ( dest <= src )
16     {
17         while ( n-- )
18         {
19             *dest++ = *src++;
20         }
21     }
22     else
23     {
24         src += n;
25         dest += n;
26         while ( n-- )
27         {
28             *--dest = *--src;
29         }
30     }
31     return s1;
32 }
33
34 #endif
35
36 #ifdef TEST
37
38 #include "_PDCLIB_test.h"
39
40 int main( void )
41 {
42     char s[] = "xxxxabcde";
43     TESTCASE( memmove( s, s + 4, 5 ) == s );
44     TESTCASE( s[0] == 'a' );
45     TESTCASE( s[4] == 'e' );
46     TESTCASE( s[5] == 'b' );
47     TESTCASE( memmove( s + 4, s, 5 ) == s + 4 );
48     TESTCASE( s[4] == 'a' );
49     return TEST_RESULTS;
50 }
51
52 #endif