/******************************************************************************
 * Copyright (c) 2004, 2008 IBM Corporation
 * All rights reserved.
 * This program and the accompanying materials
 * are made available under the terms of the BSD License
 * which accompanies this distribution, and is available at
 * http://www.opensource.org/licenses/bsd-license.php
 *
 * Contributors:
 *     IBM Corporation - initial implementation
 *****************************************************************************/

#include "string.h"


void *
memmove(void *dest, const void *src, size_t n)
{
	char *cdest;
	const char *csrc;
	size_t i;

	/* Do the buffers overlap in a bad way? */
	if (src < dest && src + n >= dest) {
		/* Copy from end to start */
		cdest = dest + n - 1;
		csrc = src + n - 1;
		for (i = 0; i < n; i++) {
			*cdest-- = *csrc--;
		}
	}
	else {
		/* Normal copy is possible */
		cdest = dest;
		csrc = src;
		for (i = 0; i < n; i++) {
			*cdest++ = *csrc++;
		}
	}

	return dest;
}
