|
|
1.1 root 1: /******************************************************************************
2: * Copyright (c) 2004, 2008 IBM Corporation
3: * All rights reserved.
4: * This program and the accompanying materials
5: * are made available under the terms of the BSD License
6: * which accompanies this distribution, and is available at
7: * http://www.opensource.org/licenses/bsd-license.php
8: *
9: * Contributors:
10: * IBM Corporation - initial implementation
11: *****************************************************************************/
12:
13: #include "string.h"
14:
15:
16: void *
17: memmove(void *dest, const void *src, size_t n)
18: {
19: char *cdest;
20: const char *csrc;
21: int i;
22:
23: /* Do the buffers overlap in a bad way? */
24: if (src < dest && src + n >= dest) {
25: /* Copy from end to start */
26: cdest = dest + n - 1;
27: csrc = src + n - 1;
28: for (i = 0; i < n; i++) {
29: *cdest-- = *csrc--;
30: }
31: }
32: else {
33: /* Normal copy is possible */
34: cdest = dest;
35: csrc = src;
36: for (i = 0; i < n; i++) {
37: *cdest++ = *csrc++;
38: }
39: }
40:
41: return dest;
42: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.