+dnl CF_FUNC_MEMMOVE version: 8 updated: 2012/10/04 20:12:20
+dnl ---------------
+dnl Check for memmove, or a bcopy that can handle overlapping copy. If neither
+dnl is found, add our own version of memmove to the list of objects.
+AC_DEFUN([CF_FUNC_MEMMOVE],
+[
+AC_CHECK_FUNC(memmove,,[
+AC_CHECK_FUNC(bcopy,[
+ AC_CACHE_CHECK(if bcopy does overlapping moves,cf_cv_good_bcopy,[
+ AC_TRY_RUN([
+int main() {
+ static char data[] = "abcdefghijklmnopqrstuwwxyz";
+ char temp[40];
+ bcopy(data, temp, sizeof(data));
+ bcopy(temp+10, temp, 15);
+ bcopy(temp+5, temp+15, 10);
+ ${cf_cv_main_return:-return} (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz"));
+}
+ ],
+ [cf_cv_good_bcopy=yes],
+ [cf_cv_good_bcopy=no],
+ [cf_cv_good_bcopy=unknown])
+ ])
+ ],[cf_cv_good_bcopy=no])
+ if test "$cf_cv_good_bcopy" = yes ; then
+ AC_DEFINE(USE_OK_BCOPY,1,[Define to 1 to use bcopy when memmove is unavailable])
+ else
+ AC_DEFINE(USE_MY_MEMMOVE,1,[Define to 1 to use replacement function when memmove is unavailable])
+ fi
+])])dnl
+dnl ---------------------------------------------------------------------------