Feature #6311 » patch4.diff
configure.in | ||
---|---|---|
])])
|
||
fi
|
||
AC_CHECK_FUNC(memmem, [
|
||
AC_CACHE_CHECK(for broken memmem, rb_cv_broken_memmem, [
|
||
AC_TRY_RUN([
|
||
#include <string.h>
|
||
int
|
||
main()
|
||
{
|
||
char *str = "hogefugafoobar";
|
||
char *rs = "foo";
|
||
char *empty = "";
|
||
char *p;
|
||
p = memmem(str, strlen(str), rs, strlen(rs));
|
||
if (p == str+8) {
|
||
p = memmem(str, strlen(str), empty, strlen(empty));
|
||
if (p == str)
|
||
return 0;
|
||
else
|
||
return 1;
|
||
}
|
||
else {
|
||
return 1;
|
||
}
|
||
}
|
||
],
|
||
rb_cv_broken_memmem=no,
|
||
rb_cv_broken_memmem=yes,
|
||
rb_cv_broken_memmem=yes)
|
||
])
|
||
if test "$rb_cv_broken_memmem" = no; then
|
||
AC_DEFINE(HAVE_MEMMEM, 1)
|
||
fi
|
||
])
|
||
CPPFLAGS="$CPPFLAGS "'$(DEFS)'
|
||
test -z "$CPPFLAGS" || CPPFLAGS="$CPPFLAGS "; CPPFLAGS="$CPPFLAGS"'${cppflags}'
|
||
if test -n "${cflags+set}"; then
|
re.c | ||
---|---|---|
return memcmp(p1, p2, len);
|
||
}
|
||
#ifdef HAVE_MEMMEM
|
||
static inline long
|
||
rb_memsearch_ss(const unsigned char *xs, long m, const unsigned char *ys, long n)
|
||
{
|
||
const unsigned char *y;
|
||
if (y = memmem(ys, n, xs, m))
|
||
return y - ys;
|
||
else
|
||
return -1;
|
||
}
|
||
#else
|
||
static inline long
|
||
rb_memsearch_ss(const unsigned char *xs, long m, const unsigned char *ys, long n)
|
||
{
|
||
... | ... | |
}
|
||
return y - ys - m;
|
||
}
|
||
#endif
|
||
static inline long
|
||
rb_memsearch_qs(const unsigned char *xs, long m, const unsigned char *ys, long n)
|