Annotation of coherent/b/lib/libc/string/memmove.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * memmove.c
                      3:  * ANSI 4.11.2.2.
                      4:  * Copy memory.
                      5:  * Works correctly between overlapping blocks,
                      6:  * provided s1 < s2 assures object *s1 at lower address than *s2.
                      7:  * This may not be the case in some machine models (e.g. LARGE i8086).
                      8:  */
                      9: 
                     10: #include <string.h>
                     11: 
                     12: char *memmove(s1, s2, n) char *s1; register char *s2; register size_t n;
                     13: {
                     14:        register char *cp;
                     15: 
                     16:        if (s1 < s2) {
                     17:                for (cp = s1; n--; )
                     18:                        *cp++ = *s2++;
                     19:        }
                     20:        else if (s1 > s2) {
                     21:                s2 += n;
                     22:                for (cp = s1 + n; n--; )
                     23:                        *--cp = *--s2;
                     24:        }
                     25:        return (s1);
                     26: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.