606 lines · 11.9 KB · C
RawDownload
	} else {		tmp = dest;		tmp += count;		s = src;		s += count;		while (count--)			*--tmp = *--s;	}	return dest;}EXPORT_SYMBOL(memmove);#endif #ifndef __HAVE_ARCH_MEMCMP/** * memcmp - Compare two areas of memory * @cs: One area of memory * @ct: Another area of memory * @count: The size of the area. */#undef memcmpint memcmp(const void *cs, const void *ct, size_t count){	const unsigned char *su1, *su2;	int res = 0; 	for (su1 = cs, su2 = ct; 0 < count; ++su1, ++su2, count--)		if ((res = *su1 - *su2) != 0)			break;	return res;}EXPORT_SYMBOL(memcmp);#endif #ifndef __HAVE_ARCH_MEMSCAN/** * memscan - Find a character in an area of memory. * @addr: The memory area * @c: The byte to search for * @size: The size of the area. * * returns the address of the first occurrence of @c, or 1 byte past * the area if @c is not found */void *memscan(void *addr, int c, size_t size){	unsigned char *p = addr; 	while (size) {		if (*p == c)			return (void *)p;		p++;		size--;	}  	return (void *)p;}EXPORT_SYMBOL(memscan);#endif #ifndef __HAVE_ARCH_STRSTR/** * strstr - Find the first substring in a %NUL terminated string * @s1: The string to be searched * @s2: The string to search for */char *strstr(const char *s1, const char *s2){	int l1, l2; 	l2 = strlen(s2);	if (!l2)		return (char *)s1;	l1 = strlen(s1);	while (l1 >= l2) {		l1--;		if (!memcmp(s1, s2, l2))			return (char *)s1;		s1++;	}	return NULL;}EXPORT_SYMBOL(strstr);#endif #ifndef __HAVE_ARCH_MEMCHR/** * memchr - Find a character in an area of memory. * @s: The memory area * @c: The byte to search for * @n: The size of the area. * * returns the address of the first occurrence of @c, or %NULL * if @c is not found */void *memchr(const void *s, int c, size_t n){	const unsigned char *p = s;	while (n-- != 0) {        	if ((unsigned char)c == *p++) {			return (void *)(p - 1);		}	}	return NULL;}EXPORT_SYMBOL(memchr);#endif

Lines 501–606 of 606. Previous lines