MEMMEM(3)           Linux Programmer's Manual           MEMMEM(3)

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 occur-
       rence 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)

GNU                      January 13, 1998                       1