Macro: ac_func_memmove

Back to the Main Page. | # ac_func_memmove | Download the M4 Source.

Synopsis

  `AC_FUNC_MEMMOVE`

Version

  1.1 (2002/12/12) C_Support @ ac-archive-0.5.39

Author

  Rüdiger Kuhlmann <info@ruediger-kuhlmann.de>

Description

  Checks for a memmove that can handle overlaps correctly. If no working memmove is found, request a replacement and warn the user about it.

M4 Source Code

      AC_DEFUN([AC_FUNC_MEMMOVE],
      [AC_CHECK_FUNCS(memmove)
      AC_MSG_CHECKING(for working memmove)
      AC_CACHE_VAL(ac_cv_have_working_memmove,
      [AC_TRY_RUN(
      [#include <stdio.h>

      int main(void)
      {
          char buf[10];
          strcpy (buf, "01234567");
          memmove (buf, buf + 2, 3);
          if (strcmp (buf, "23434567"))
              exit (1);
          strcpy (buf, "01234567");
          memmove (buf + 2, buf, 3);
          if (strcmp (buf, "01012567"))
              exit (1);
          exit (0);
      }], ac_cv_have_working_memmove=yes, ac_cv_have_working_memmove=no, ac_cv_have_working_memmove=cross)])
      AC_MSG_RESULT([$ac_cv_have_working_memmove])
      if test x$ac_cv_have_working_memmove != "xyes"; then
        AC_LIBOBJ(memmove)
        AC_MSG_WARN([Replacing missing/broken memmove.])
        AC_DEFINE(PREFER_PORTABLE_MEMMOVE, 1, "enable replacement memmove if system memmove is broken or missing")
      fi])