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  `nee-
     dle'.


SEE ALSO

     strstr(3)