diff --git a/configure b/configure
index 358ef93..187009b 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.in Revision: 84368 .
+# From configure.in Revision: 84585 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.65 for python 2.7.
 #
@@ -9740,56 +9740,45 @@
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for flock" >&5
-$as_echo_n "checking for flock... " >&6; }
-have_flock=no
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for flock declaration" >&5
+$as_echo_n "checking for flock declaration... " >&6; }
+if test "${ac_cv_flock_decl+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
 #include <sys/file.h>
-
 int
 main ()
 {
 void* p = flock
+
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-
-$as_echo "#define HAVE_FLOCK 1" >>confdefs.h
-
-   have_flock=yes
+  ac_cv_flock_decl=yes
+else
+  ac_cv_flock_decl=no
 
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_flock" >&5
-$as_echo "$have_flock" >&6; }
 
-if test "$have_flock" = yes ; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if flock requires additional libraries." >&5
-$as_echo_n "checking if flock requires additional libraries.... " >&6; }
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-  #include <sys/file.h>
-
-int
-main ()
-{
-void *p = flock; flock(0, 0)
-  ;
-  return 0;
-}
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_flock_decl" >&5
+$as_echo "$ac_cv_flock_decl" >&6; }
+if test "x${ac_cv_flock_decl}" = xyes; then
+  for ac_func in flock
+do :
+  ac_fn_c_check_func "$LINENO" "flock" "ac_cv_func_flock"
+if test "x$ac_cv_func_flock" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FLOCK 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for flock in -lbsd" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for flock in -lbsd" >&5
 $as_echo_n "checking for flock in -lbsd... " >&6; }
 if test "${ac_cv_lib_bsd_flock+set}" = set; then :
   $as_echo_n "(cached) " >&6
@@ -9826,6 +9815,7 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_flock" >&5
 $as_echo "$ac_cv_lib_bsd_flock" >&6; }
 if test "x$ac_cv_lib_bsd_flock" = x""yes; then :
+  $as_echo "#define HAVE_FLOCK 1" >>confdefs.h
 
 
 $as_echo "#define FLOCK_NEEDS_LIBBSD 1" >>confdefs.h
@@ -9835,8 +9825,8 @@
 
 
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
+done
+
 fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpagesize" >&5
diff --git a/configure.in b/configure.in
index 1d13b18..2c0bf4f 100644
--- a/configure.in
+++ b/configure.in
@@ -2774,27 +2774,23 @@
   [AC_MSG_RESULT(no)
 ])
 
-AC_MSG_CHECKING(for flock)
-have_flock=no
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-#include <sys/file.h>
-]], [[void* p = flock]])],
-  [AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
-   have_flock=yes
+AC_CACHE_CHECK([for flock declaration], [ac_cv_flock_decl],
+  [AC_COMPILE_IFELSE(
+    [AC_LANG_PROGRAM(
+      [#include <sys/file.h>],
+      [void* p = flock]
+    )],
+    [ac_cv_flock_decl=yes],
+    [ac_cv_flock_decl=no]
+  )
 ])
-AC_MSG_RESULT($have_flock)
-
-if test "$have_flock" = yes ; then
-  AC_MSG_CHECKING(if flock requires additional libraries.)
-  AC_LINK_IFELSE([AC_LANG_PROGRAM([[
-  #include <sys/file.h>
-  ]], [[void *p = flock; flock(0, 0)]])],
-    [AC_MSG_RESULT(no)],
-    [AC_MSG_RESULT(yes)
-     AC_CHECK_LIB(bsd,flock, [
-      AC_DEFINE(FLOCK_NEEDS_LIBBSD, 1, Define if flock needs to be linked with bsd library.)
-      ])
-  ])
+if test "x${ac_cv_flock_decl}" = xyes; then
+  AC_CHECK_FUNCS(flock,,
+    AC_CHECK_LIB(bsd,flock,
+      [AC_DEFINE(HAVE_FLOCK)
+       AC_DEFINE(FLOCK_NEEDS_LIBBSD, 1, Define if flock needs to be linked with bsd library.)
+    ])
+  )
 fi
 
 AC_MSG_CHECKING(for getpagesize)
