Provided by: manpages-pt-dev_20040726-4_all bug

NAME

       memmem - locate a substring

SYNOPSIS

       #include <string.h>

       void *memmem(const void *haystack, size_t haystacklen,
              const void *needle, size_t needlelen);

DESCRIPTION

       The  memmem()  function  finds the start of the first occurrence of the
       substring needle of length needlelen in the  memory  area  haystack  of
       length haystacklen.

RETURN VALUE

       The  memmem()  function  returns  a  pointer  to  the  beginning of the
       substring, or NULL if the substring is not found.

CONFORMING TO

       This function is a GNU extension.

BUGS

       This function was broken in Linux libraries up to  and  including  libc
       5.0.9;  there  the `needle' and `haystack' arguments were interchanged,
       and a pointer to  the  end  of  the  first  occurrence  of  needle  was
       returned.   Since  libc 5.0.9 is still widely used, this is a dangerous
       function to use.
       Both old and new libc's have the bug that if needle is empty haystack-1
       (instead  of  haystack) is returned.  And glibc (2.0.5) makes it worse,
       and returns a pointer to the last byte of `haystack'.   Hopefully  this
       will  be fixed. For the time being, memmem() should not be used with an
       empty `needle'.

SEE ALSO

       strstr(3)