diff --git a/src/configure.in b/src/configure.in
index ccd5e722da180fb3d7287a3c3923c0ba7ec58b56..afca04635644dcb4ff536f7bc974288dd2e7ca0f 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -1,4 +1,4 @@
-AC_REVISION("$Id: configure.in,v 1.460 2001/01/20 23:24:09 grubba Exp $")
+AC_REVISION("$Id: configure.in,v 1.461 2001/01/21 19:01:18 grubba Exp $")
 AC_INIT(interpret.c)
 AC_CONFIG_HEADER(machine.h)
 
@@ -4065,46 +4065,36 @@ AC_CACHE_VAL(pike_cv_sys_nonblock,
   if test "$pike_cv_sys_os" = "AmigaOS" ; then
     pike_cv_sys_nonblock=USE_FCNTL_O_NONBLOCK
   else
-    # Make sure we can run configure in a separate directory.
     OCPPFLAGS="$CPPFLAGS"
-    CPPFLAGS="-I$srcdir $CPPFLAGS"
-    AC_TRY_RUN([
-#define TESTING
-#define USE_FCNTL_FNDELAY
-#include "fd_control.c"
-], pike_cv_sys_nonblock=USE_FCNTL_FNDELAY,
-    AC_TRY_RUN([
-#define TESTING
-#define USE_FCNTL_O_NDELAY
-#include "fd_control.c"
-], pike_cv_sys_nonblock=USE_FCNTL_O_NDELAY,
-    AC_TRY_RUN([
-#define TESTING
-#define USE_FCNTL_O_NONBLOCK
-#include "fd_control.c"
-], pike_cv_sys_nonblock=USE_FCNTL_O_NONBLOCK,
-    AC_TRY_RUN([
+    pike_cv_sys_nonblock=UNKNOWN
+    for method in USE_FCNTL_FNDELAY USE_FCNTL_O_NDELAY USE_FCNTL_O_NONBLOCK \
+		  USE_IOCTL_FIONBIO USE_IOCTLSOCKET_FIONBIO; do
+      # Make sure we can run configure in a separate directory,
+      # and set the method to try.
+      CPPFLAGS="-I$srcdir $OCPPFLAGS -D$method"
+      AC_TRY_RUN([
 #define TESTING
-#define USE_IOCTL_FIONBIO
 #include "fd_control.c"
-], pike_cv_sys_nonblock=USE_IOCTL_FIONBIO,
-    AC_TRY_RUN([
+      ], [
+        pike_cv_sys_nonblock=$method
+	break;
+      ], [], [
+        AC_TRY_LINK([
 #define TESTING
-#define USE_IOCTLSOCKET_FIONBIO
 #include "fd_control.c"
-], pike_cv_sys_nonblock=USE_IOCTLSOCKET_FIONBIO,
-pike_cv_sys_nonblock=UNKNOWN,
-unset pike_cv_sys_nonblock),
-unset pike_cv_sys_nonblock),
-unset pike_cv_sys_nonblock),
-unset pike_cv_sys_nonblock),
-unset pike_cv_sys_nonblock)
+#define main dummy_main
+        ], [], [
+	  pike_cv_sys_nonblock=$method
+	  break;
+	])
+      ])
+    done
     # Restore CPPFLAGS
     CPPFLAGS="$OCPPFLAGS"
   fi
 ])
 
-if test "${pike_cv_sys_nonblock}" = ""; then
+if test "${pike_cv_sys_nonblock}" = "UNKNOWN"; then
   AC_MSG_RESULT(none found)
 else
  AC_MSG_RESULT($pike_cv_sys_nonblock)