Feature #6311 » patch.diff
| configure.in | ||
|---|---|---|
|
setuid setgid daemon select_large_fdset setenv unsetenv\
|
||
|
mktime timegm gmtime_r clock_gettime gettimeofday poll ppoll\
|
||
|
pread sendfile shutdown sigaltstack dl_iterate_phdr\
|
||
|
dup3 pipe2 posix_memalign memalign)
|
||
|
dup3 pipe2 posix_memalign memalign memmem)
|
||
|
AC_CACHE_CHECK(for unsetenv returns a value, rb_cv_unsetenv_return_value,
|
||
|
[AC_TRY_COMPILE([
|
||
| ... | ... | |
|
])])
|
||
|
fi
|
||
|
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" = yes; then
|
||
|
AC_DEFINE(BROKEN_MEMMEM, 1)
|
||
|
fi
|
||
|
CPPFLAGS="$CPPFLAGS "'$(DEFS)'
|
||
|
test -z "$CPPFLAGS" || CPPFLAGS="$CPPFLAGS "; CPPFLAGS="$CPPFLAGS"'${cppflags}'
|
||
|
if test -n "${cflags+set}"; then
|
||
| re.c | ||
|---|---|---|
|
return -1;
|
||
|
}
|
||
|
else if (m <= SIZEOF_VALUE) {
|
||
|
#if defined(HAVE_MEMMEM) && !defined(BROKEN_MEMMEM)
|
||
|
const unsigned char *ys;
|
||
|
if (ys = memmem(y, n, x, m))
|
||
|
return ys - y;
|
||
|
else
|
||
|
return -1;
|
||
|
#else
|
||
|
return rb_memsearch_ss(x0, m, y0, n);
|
||
|
#endif
|
||
|
}
|
||
|
else if (enc == rb_utf8_encoding()){
|
||
|
return rb_memsearch_qs_utf8(x0, m, y0, n);
|
||