openbmc/build/tmp/deploy/sdk/witherspoon-2019-08-08/sysroots/armv6-openbmc-linux-gnueabi/usr/src/debug/glibc/2.29-r0/git/string/strstr.c
char* STRSTR(const char* haystack, const char* needle)
{
    size_t needle_len;   /* Length of NEEDLE.  */
    size_t haystack_len; /* Known minimum length of HAYSTACK.  */

    /* Handle empty NEEDLE special case.  */
    if (needle[0] == '\0')
        return (char*)haystack;

    /* Skip until we find the first matching char from NEEDLE.  */
    haystack = strchr(haystack, needle[0]);
    if (haystack == NULL || needle[1] == '\0')
        return (char*)haystack;

    /* Ensure HAYSTACK length is at least as long as NEEDLE length.
       Since a match may occur early on in a huge HAYSTACK, use strnlen
       and read ahead a few cachelines for improved performance.  */
    needle_len = strlen(needle);
    haystack_len = __strnlen(haystack, needle_len + 256);
    if (haystack_len < needle_len)
        return NULL;

    /* Check whether we have a match.  This improves performance since we avoid
       the initialization overhead of the two-way algorithm.  */
    if (memcmp(haystack, needle, needle_len) == 0)
        return (char*)haystack;

    /* Perform the search.  Abstract memory is considered to be an array
       of 'unsigned char' values, not an array of 'char' values.  See
       ISO C 99 section 6.2.6.1.  */
    if (needle_len < LONG_NEEDLE_THRESHOLD)
        return two_way_short_needle((const unsigned char*)haystack,
                                    haystack_len, (const unsigned char*)needle,
                                    needle_len);
    return two_way_long_needle((const unsigned char*)haystack, haystack_len,
                               (const unsigned char*)needle, needle_len);
}
/* Return the first occurrence of NEEDLE in HAYSTACK.  Return HAYSTACK
   if NEEDLE is empty, otherwise NULL if NEEDLE is not found in
   HAYSTACK.  */
Return the first occurrence of NEEDLE in HAYSTACK.
Return the first occurrence of NEEDLE in HAYSTACK .
char* STRSTR(const char* haystack, const char* needle)
{
    size_t needle_len;   
    size_t haystack_len; 
    if (needle[0] == '\0')
        return (char*)haystack;
    haystack = strchr(haystack, needle[0]);
    if (haystack == NULL || needle[1] == '\0')
        return (char*)haystack;
    needle_len = strlen(needle);
    haystack_len = __strnlen(haystack, needle_len + 256);
    if (haystack_len < needle_len)
        return NULL;
    if (memcmp(haystack, needle, needle_len) == 0)
        return (char*)haystack;
    if (needle_len < LONG_NEEDLE_THRESHOLD)
        return two_way_short_needle((const unsigned char*)haystack,
                                    haystack_len, (const unsigned char*)needle,
                                    needle_len);
    return two_way_long_needle((const unsigned char*)haystack, haystack_len,
                               (const unsigned char*)needle, needle_len);
}
char * STRSTR ( const char * haystack , const char * needle ) { size_t needle_len ; size_t haystack_len ; if ( needle [ 0 ] == ' \0 ' ) return ( char * ) haystack ; haystack = strchr ( haystack , needle [ 0 ] ) ; if ( haystack == NULL || needle [ 1 ] == ' \0 ' ) return ( char * ) haystack ; needle_len = strlen ( needle ) ; haystack_len = __strnlen ( haystack , needle_len + 256 ) ; if ( haystack_len < needle_len ) return NULL ; if ( memcmp ( haystack , needle , needle_len ) == 0 ) return ( char * ) haystack ; if ( needle_len < LONG_NEEDLE_THRESHOLD ) return two_way_short_needle ( ( const unsigned char * ) haystack , haystack_len , ( const unsigned char * ) needle , needle_len ) ; return two_way_long_needle ( ( const unsigned char * ) haystack , haystack_len , ( const unsigned char * ) needle , needle_len ) ; }
Return the first occurrence of NEEDLE in HAYSTACK.
Return the first occurrence of NEEDLE in HAYSTACK .
/* Length of NEEDLE.  */ /* Known minimum length of HAYSTACK.  */ /* Handle empty NEEDLE special case.  */ /* Skip until we find the first matching char from NEEDLE.  */ /* Ensure HAYSTACK length is at least as long as NEEDLE length.
       Since a match may occur early on in a huge HAYSTACK, use strnlen
       and read ahead a few cachelines for improved performance.  */ /* Check whether we have a match.  This improves performance since we avoid
       the initialization overhead of the two-way algorithm.  */ /* Perform the search.  Abstract memory is considered to be an array
       of 'unsigned char' values, not an array of 'char' values.  See
       ISO C 99 section 6.2.6.1.  */