--- unix/tcl.m4.orig	Mon Jul 18 11:45:18 2005
+++ unix/tcl.m4	Mon Jul 18 17:52:33 2005
@@ -484,13 +484,11 @@
 	AC_CHECK_FUNCS(pthread_attr_setstacksize)
 	AC_CHECK_FUNCS(pthread_atfork)
 	LIBS=$ac_saved_libs
-	AC_CHECK_FUNCS(readdir_r)
-	if test "x$ac_cv_func_readdir_r" = "xyes"; then
-            AC_MSG_CHECKING([how many args readdir_r takes])
-	    # IRIX 5.3 has a 2 arg version of readdir_r
-	    # while other systems have a 3 arg version.
-	    AC_CACHE_VAL(tcl_cv_two_arg_readdir_r,
-	        AC_TRY_COMPILE([#include <stdlib.h>
+	AC_CHECK_FUNCS(readdir_r,
+            [AC_MSG_CHECKING([how many args readdir_r takes])
+	    # IRIX 5.3 has a 2-arg version of readdir_r
+	    # while other systems have a 3-arg version.
+	    AC_TRY_COMPILE([#include <stdlib.h>
 #include <sys/types.h>
 #ifdef NO_DIRENT_H
 # include <sys/dir.h>  /* logic from tcl/compat/dirent.h *
@@ -498,10 +496,12 @@
 #else
 # include <dirent.h>
 #endif
+
+extern struct dirent *readdir_r(DIR *, struct dirent *);
 ], [readdir_r(NULL, NULL);],
-	        tcl_cv_two_arg_readdir_r=yes, tcl_cv_two_arg_readdir_r=no))
-	    AC_CACHE_VAL(tcl_cv_three_arg_readdir_r,
-	        AC_TRY_COMPILE([#include <stdlib.h>
+		[AC_MSG_RESULT([2])
+		AC_DEFINE(HAVE_TWO_ARG_READDIR_R)],
+	        [AC_TRY_COMPILE([#include <stdlib.h>
 #include <sys/types.h>
 #ifdef NO_DIRENT_H
 # include <sys/dir.h>  /* logic from tcl/compat/dirent.h *
@@ -509,18 +509,12 @@
 #else
 # include <dirent.h>
 #endif
+
+extern int readdir_r(DIR *, struct dirent *, struct dirent **);
 ], [readdir_r(NULL, NULL, NULL);],
-	        tcl_cv_three_arg_readdir_r=yes, tcl_cv_three_arg_readdir_r=no))
-	    if test "x$tcl_cv_two_arg_readdir_r" = "xyes" ; then
-                AC_MSG_RESULT([2])
-	        AC_DEFINE(HAVE_TWO_ARG_READDIR_R)
-	    elif test "x$tcl_cv_three_arg_readdir_r" = "xyes" ; then
-                AC_MSG_RESULT([3])
-	        AC_DEFINE(HAVE_THREE_ARG_READDIR_R)
-	    else
-	        AC_MSG_ERROR([unknown number of args for readdir_r])
-	    fi
-	fi
+		    [AC_MSG_RESULT([3])
+		    AC_DEFINE(HAVE_THREE_ARG_READDIR_R)],
+		    [AC_MSG_ERROR([unknown number of args for readdir_r])])])])
     else
 	TCL_THREADS=0
 	AC_MSG_RESULT([no (default)])
