source: trunk/minix/lib/ansi/memmove.c@ 15

Last change on this file since 15 was 9, checked in by Mattia Monga, 14 years ago

Minix 3.1.2a

File size: 637 bytes
RevLine 
[9]1/*
2 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
3 * See the copyright notice in the ACK home directory, in the file "Copyright".
4 */
5/* $Header: /cvsup/minix/src/lib/ansi/memmove.c,v 1.1.1.1 2005/04/21 14:56:05 beng Exp $ */
6
7#include <string.h>
8
9void *
10memmove(void *s1, const void *s2, register size_t n)
11{
12 register char *p1 = s1;
13 register const char *p2 = s2;
14
15 if (n>0) {
16 if (p2 <= p1 && p2 + n > p1) {
17 /* overlap, copy backwards */
18 p1 += n;
19 p2 += n;
20 n++;
21 while (--n > 0) {
22 *--p1 = *--p2;
23 }
24 } else {
25 n++;
26 while (--n > 0) {
27 *p1++ = *p2++;
28 }
29 }
30 }
31 return s1;
32}
Note: See TracBrowser for help on using the repository browser.