(trunk libT) expose tr_memmem() so it can be used by client code. use the OS' implementation if that's available.

This commit is contained in:
Charles Kerr 2009-05-19 04:48:33 +00:00
parent ed96a156a5
commit ed710be223
4 changed files with 23 additions and 17 deletions

View File

@ -87,7 +87,7 @@ AC_TRY_LINK([#include <linux/falloc.h>],
[AC_DEFINE([HAVE_FALLOCATE],[1],[Defined if fallocate() exists])
AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])])
AC_CHECK_FUNCS([lrintf strlcpy daemon dirname basename daemon strcasecmp localtime_r posix_fallocate])
AC_CHECK_FUNCS([lrintf strlcpy daemon dirname basename daemon strcasecmp localtime_r posix_fallocate memmem])
AC_PROG_INSTALL
AC_PROG_MAKE_SET
ACX_PTHREAD

View File

@ -134,22 +134,6 @@ send_simple_response( struct evhttp_request * req,
tr_releaseBuffer( body );
}
static const char*
tr_memmem( const char * s1, size_t l1, /* haystack */
const char * s2, size_t l2 ) /* needle */
{
if( !l2 ) return s1;
while( l1 >= l2 )
{
l1--;
if( !memcmp( s1, s2, l2 ) )
return s1;
s1++;
}
return NULL;
}
struct tr_mimepart
{
char * headers;

View File

@ -683,6 +683,25 @@ tr_strndup( const void * in, int len )
return out;
}
const char*
tr_memmem( const char * s1, size_t l1, /* haystack */
const char * s2, size_t l2 ) /* needle */
{
#ifdef HAVE_MEMMEM
return memmem( s1, l1, s2, l2 );
#else
if( !l2 ) return s1;
while( l1 >= l2 )
{
l1--;
if( !memcmp( s1, s2, l2 ) )
return s1;
s1++;
}
return NULL;
#endif
}
char*
tr_strdup_printf( const char * fmt, ... )
{

View File

@ -350,6 +350,9 @@ const char* tr_strerror( int );
char* tr_strstrip( char * str );
const char* tr_memmem( const char * haystack, size_t haystack_len,
const char * needle, size_t needle_len );
/***
****
***/