Annotation of qemu/roms/SLOF/lib/libc/string/memmove.c, revision 1.1

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: }

unix.superglobalmegacorp.com

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