/*	memchr()					Author: Kees J. Bot */
/*								2 Jan 1994 */

/* void *memchr(const void *s, int c, size_t n) */
/*	Look for a character in a chunk of memory. */
/* */
#include "asm.h"

ENTRY(memchr)
	push	%ebp
	movl	%esp, %ebp
	push	%edi
	movl	8(%ebp), %edi	/* edi = string */
	movb	12(%ebp), %al	/* The character to look for */
	movl	16(%ebp), %ecx	/* Length */
	cmpb	$1, %cl	/* 'Z' bit must be clear if ecx = 0 */
	cld

	repne scasb
	jne	failure
	leal	-1(%edi), %eax	/* Found */
	pop	%edi
	pop	%ebp
	ret
failure:
	xorl	%eax, %eax
	pop	%edi
	pop	%ebp
	ret