/*
 * written by Thomas Dickey, originally for XFree86 xterm 
 */

#ifndef HAVE_MEMMOVE

#include <stdlib.h>

char           *
memmove(s1, s2, n)
    char           *s1;
    char           *s2;
    int             n;
{
    if (n != 0) {
	if ((s1 + n > s2) && (s2 + n > s1)) {
	    static char    *bfr;
	    static int      length;
	    size_t          j;
	    if (length < n) {
		length = (n * 3) / 2;
		bfr = (bfr != 0)
		    ? (char *) realloc(bfr, length)
		    : (char *) malloc(length);
		if (bfr == 0)
		    return 0;
	    }
	    for (j = 0; j < n; j++)
		bfr[j] = s2[j];
	    s2 = bfr;
	}
	while (n-- != 0)
	    s1[n] = s2[n];
    }
    return s1;
}
#endif				/*
				 * HAVE_MEMMOVE 
				 */
