diff --git a/configure b/configure
index 5b08c3a..c802c4b 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.in Revision: 80728 .
+# From configure.in Revision: 80834 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.65 for python 3.2.
 #
@@ -5337,7 +5337,7 @@
 int
 main ()
 {
-int main() { return 0; }
+
   ;
   return 0;
 }
@@ -5350,11 +5350,11 @@
            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-
+	       void f(int **x) {}
 int
 main ()
 {
-void f(int **x) {} int main() { double *x; f((int **) &x); return 0; }
+double *x; f((int **) &x);
   ;
   return 0;
 }
@@ -5557,7 +5557,7 @@
 int
 main ()
 {
-int main() { return 0; }
+
   ;
   return 0;
 }
@@ -5599,7 +5599,7 @@
 int
 main ()
 {
-int main() { return 0; }
+
   ;
   return 0;
 }
@@ -9548,7 +9548,6 @@
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#include "confdefs.h"
 #include <stdio.h>
 
 int
@@ -9577,7 +9576,6 @@
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#include "confdefs.h"
 #include <sys/file.h>
 
 int
@@ -9606,7 +9604,6 @@
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#include "confdefs.h"
 #include <unistd.h>
 
 int
@@ -9926,7 +9923,6 @@
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#include "confdefs.h"
 #include <netdb.h>
 
 int
@@ -9956,7 +9952,6 @@
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
@@ -9989,7 +9984,6 @@
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
@@ -10022,7 +10016,6 @@
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#include "confdefs.h"
 #include <unistd.h>
 #ifdef HAVE_GRP_H
 #include <grp.h>
diff --git a/configure.in b/configure.in
index 5993e05..c9ff87b 100644
--- a/configure.in
+++ b/configure.in
@@ -916,14 +916,14 @@
      AC_CACHE_VAL(ac_cv_no_strict_aliasing,
        AC_COMPILE_IFELSE(
          [
-	   AC_LANG_PROGRAM([[]], [[int main() { return 0; }]])
+	   AC_LANG_PROGRAM([[]], [[]])
 	 ],[
 	   CC="$ac_save_cc -fstrict-aliasing"
            CFLAGS="$CFLAGS -Werror -Wstrict-aliasing"
            AC_COMPILE_IFELSE(
 	     [
-	       AC_LANG_PROGRAM([[]],
-	         [[void f(int **x) {} int main() { double *x; f((int **) &x); return 0; }]])
+	       AC_LANG_PROGRAM([[void f(int **x) {}]],
+	         [[double *x; f((int **) &x);]])
 	     ],[
 	       ac_cv_no_strict_aliasing=no
 	     ],[
@@ -1099,7 +1099,7 @@
 [ac_save_cc="$CC"
 CC="$CC -OPT:Olimit=0"
 AC_COMPILE_IFELSE(
-  [AC_LANG_PROGRAM([[]], [[int main() { return 0; }]])],
+  [AC_LANG_PROGRAM([[]], [[]])],
   [ac_cv_opt_olimit_ok=yes],
   [ac_cv_opt_olimit_ok=no]
   )
@@ -1122,7 +1122,7 @@
   [ac_save_cc="$CC"
   CC="$CC -Olimit 1500"
   AC_COMPILE_IFELSE(
-    [AC_LANG_PROGRAM([[]], [[int main() { return 0; }]])],
+    [AC_LANG_PROGRAM([[]], [[]])],
     [ac_cv_olimit_ok=yes],
     [ac_cv_olimit_ok=no]
     )
@@ -2663,7 +2663,6 @@
 
 AC_MSG_CHECKING(for ctermid_r)
 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-#include "confdefs.h" 
 #include <stdio.h>
 ]], [[void* p = ctermid_r]])],
   [AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
@@ -2673,7 +2672,6 @@
 
 AC_MSG_CHECKING(for flock)
 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-#include "confdefs.h" 
 #include <sys/file.h>
 ]], [[void* p = flock]])],
   [AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
@@ -2683,7 +2681,6 @@
 
 AC_MSG_CHECKING(for getpagesize)
 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-#include "confdefs.h" 
 #include <unistd.h>
 ]], [[void* p = getpagesize]])],
   [AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
@@ -2774,7 +2771,6 @@
 
 AC_MSG_CHECKING(for hstrerror)
 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
-#include "confdefs.h" 
 #include <netdb.h>
 ]], [[void* p = hstrerror; hstrerror(0)]])],
   [AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
@@ -2784,7 +2780,6 @@
 
 AC_MSG_CHECKING(for inet_aton)
 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
-#include "confdefs.h" 
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
@@ -2797,7 +2792,6 @@
 
 AC_MSG_CHECKING(for inet_pton)
 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-#include "confdefs.h" 
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
@@ -2811,7 +2805,6 @@
 # On some systems, setgroups is in unistd.h, on others, in grp.h
 AC_MSG_CHECKING(for setgroups)
 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-#include "confdefs.h" 
 #include <unistd.h>
 #ifdef HAVE_GRP_H
 #include <grp.h>
