⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memmove.c

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 C
字号:
/*- * See the file LICENSE for redistribution information. * * Copyright (c) 1996-2002 *	Sleepycat Software.  All rights reserved. *//* * Copyright (c) 1990, 1993 *	The Regents of the University of California.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */#include "db_config.h"#ifndef lintstatic const char revid[] = "$Id: memmove.c,v 11.6 2002/01/11 15:51:28 bostic Exp $";#endif /* not lint */#ifndef NO_SYSTEM_INCLUDES#include <sys/types.h>#endif/* * sizeof(word) MUST BE A POWER OF TWO * SO THAT wmask BELOW IS ALL ONES */typedef	int word;		/* "word" used for optimal copy speed */#undef	wsize#define	wsize	sizeof(word)#undef	wmask#define	wmask	(wsize - 1)/* * Copy a block of memory, handling overlap. * This is the routine that actually implements * (the portable versions of) bcopy, memcpy, and memmove. */#ifdef MEMCOPY/* * PUBLIC: #ifndef HAVE_MEMCPY * PUBLIC: void *memcpy __P((void *, const void *, size_t)); * PUBLIC: #endif */void *memcpy(dst0, src0, length)#else#ifdef MEMMOVE/* * PUBLIC: #ifndef HAVE_MEMMOVE * PUBLIC: void *memmove __P((void *, const void *, size_t)); * PUBLIC: #endif */void *memmove(dst0, src0, length)#elsevoidbcopy(src0, dst0, length)#endif#endif	void *dst0;	const void *src0;	register size_t length;{	register char *dst = dst0;	register const char *src = src0;	register size_t t;	if (length == 0 || dst == src)		/* nothing to do */		goto done;	/*	 * Macros: loop-t-times; and loop-t-times, t>0	 */#undef	TLOOP#define	TLOOP(s) if (t) TLOOP1(s)#undef	TLOOP1#define	TLOOP1(s) do { s; } while (--t)	if ((unsigned long)dst < (unsigned long)src) {		/*		 * Copy forward.		 */		t = (int)src;	/* only need low bits */		if ((t | (int)dst) & wmask) {			/*			 * Try to align operands.  This cannot be done			 * unless the low bits match.			 */			if ((t ^ (int)dst) & wmask || length < wsize)				t = length;			else				t = wsize - (t & wmask);			length -= t;			TLOOP1(*dst++ = *src++);		}		/*		 * Copy whole words, then mop up any trailing bytes.		 */		t = length / wsize;		TLOOP(*(word *)dst = *(word *)src; src += wsize; dst += wsize);		t = length & wmask;		TLOOP(*dst++ = *src++);	} else {		/*		 * Copy backwards.  Otherwise essentially the same.		 * Alignment works as before, except that it takes		 * (t&wmask) bytes to align, not wsize-(t&wmask).		 */		src += length;		dst += length;		t = (int)src;		if ((t | (int)dst) & wmask) {			if ((t ^ (int)dst) & wmask || length <= wsize)				t = length;			else				t &= wmask;			length -= t;			TLOOP1(*--dst = *--src);		}		t = length / wsize;		TLOOP(src -= wsize; dst -= wsize; *(word *)dst = *(word *)src);		t = length & wmask;		TLOOP(*--dst = *--src);	}done:#if defined(MEMCOPY) || defined(MEMMOVE)	return (dst0);#else	return;#endif}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -