Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include	<u.h>
2
#include	<libc.h>
3
 
4
void*
5
memmove(void *a1, void *a2, ulong n)
6
{
7
	char *s1, *s2;
8
 
9
	if((long)n < 0)
10
		abort();
11
	s1 = a1;
12
	s2 = a2;
13
	if((s2 < s1) && (s2+n > s1))
14
		goto back;
15
	while(n > 0) {
16
		*s1++ = *s2++;
17
		n--;
18
	}
19
	return a1;
20
 
21
back:
22
	s1 += n;
23
	s2 += n;
24
	while(n > 0) {
25
		*--s1 = *--s2;
26
		n--;
27
	}
28
	return a1;
29
}
30
 
31
void*
32
memcpy(void *a1, void *a2, ulong n)
33
{
34
	return memmove(a1, a2, n);
35
}