Index: configure.ac
===================================================================
RCS file: /cvsroot/zsh/zsh/configure.ac,v
retrieving revision 1.35
diff -u -r1.35 configure.ac
--- configure.ac	20 Jul 2005 16:08:18 -0000	1.35
+++ configure.ac	28 Jul 2005 15:55:55 -0000
@@ -575,18 +575,15 @@
   fi
 fi
 
-AC_CACHE_CHECK(POSIX termios, zsh_cv_sys_posix_termios,
-[AC_TRY_LINK([#include <sys/types.h>
-#include <unistd.h>
-#include <termios.h>],
-[/* SunOS 4.0.3 has termios.h but not the library calls.  */
-tcgetattr(0, 0);],
-  zsh_cv_sys_posix_termios=yes, zsh_cv_sys_posix_termios=no)])
-
-if test $zsh_cv_sys_posix_termios = yes; then
+AH_TEMPLATE([GWINSZ_IN_SYS_IOCTL],
+[Define if TIOCGWINSZ is defined in sys/ioctl.h but not in termios.h.])
+if test $ac_cv_header_termios_h = yes; then
   AC_CACHE_CHECK(TIOCGWINSZ in termios.h,
   zsh_cv_header_termios_h_tiocgwinsz,
-  [AC_TRY_LINK([#include <sys/types.h>
+  [AC_TRY_LINK([
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
 #include <termios.h>],
   [int x = TIOCGWINSZ;],
   zsh_cv_header_termios_h_tiocgwinsz=yes,
@@ -594,13 +591,13 @@
 else
   zsh_cv_header_termios_h_tiocgwinsz=no
 fi
- 
-AH_TEMPLATE([GWINSZ_IN_SYS_IOCTL],
-[Define if your system defines TIOCGWINSZ in sys/ioctl.h.])
 if test $zsh_cv_header_termios_h_tiocgwinsz = no; then
   AC_CACHE_CHECK(TIOCGWINSZ in sys/ioctl.h,
   zsh_cv_header_sys_ioctl_h_tiocgwinsz,
-  [AC_TRY_LINK([#include <sys/types.h>
+  [AC_TRY_LINK([
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
 #include <sys/ioctl.h>],
   [int x = TIOCGWINSZ;],
   zsh_cv_header_sys_ioctl_h_tiocgwinsz=yes,
@@ -1694,24 +1691,12 @@
   AC_DEFINE(HAVE_SBRK_PROTO)
 fi
 
-dnl ----------------------------------
-dnl ioctl and mknod prototypes for OSF
-dnl ----------------------------------
-
-AH_TEMPLATE([HAVE_IOCTL_PROTO],
-[Define to 1 if there is a prototype defined for ioctl() on your system])
+dnl -----------------------
+dnl mknod prototype for OSF
+dnl -----------------------
 AH_TEMPLATE([HAVE_MKNOD_PROTO],
-[Define to 1 if there is a prototype defined for mknod() on your system])
+[Define to 1 if there is a prototype defined for mknod() on your system.])
 if test "$ac_cv_prog_cc_stdc" != no; then
-  AC_CACHE_CHECK(for ioctl prototype in <sys/ioctl.h>,
-  zsh_cv_header_sys_ioctl_h_ioctl_proto,
-  [AC_TRY_COMPILE([#include <sys/ioctl.h>
-   int ioctl(double x);], [int i;],
-  zsh_cv_header_sys_ioctl_h_ioctl_proto=no,
-  zsh_cv_header_sys_ioctl_h_ioctl_proto=yes)])
-  if test $zsh_cv_header_sys_ioctl_h_ioctl_proto = yes; then
-    AC_DEFINE(HAVE_IOCTL_PROTO)
-  fi
   AC_CACHE_CHECK(for mknod prototype in <sys/stat.h>,
   zsh_cv_header_sys_stat_h_mknod_proto,
   [AC_TRY_COMPILE([#include <sys/stat.h>
@@ -1723,6 +1708,45 @@
   fi
 fi
 
+dnl ----------------------------------------
+dnl presence and location of ioctl prototype
+dnl ----------------------------------------
+AC_CACHE_CHECK(for ioctl prototype in <unistd.h> or <termios.h>,
+zsh_cv_header_unistd_h_termios_h_ioctl_proto,
+[AC_TRY_COMPILE([
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#ifdef HAVE_TERMIOS_H
+# include <termios.h>
+#endif
+double ioctl();], [int i;],
+zsh_cv_header_unistd_h_termios_h_ioctl_proto=no,
+zsh_cv_header_unistd_h_termios_h_ioctl_proto=yes)])
+
+if test $zsh_cv_header_unistd_h_termios_h_ioctl_proto = no; then
+  AC_CACHE_CHECK(for ioctl prototype in <sys/ioctl.h>,
+  zsh_cv_header_sys_ioctl_h_ioctl_proto,
+  [AC_TRY_COMPILE([#include <sys/ioctl.h>
+  double ioctl();], [int i;],
+  zsh_cv_header_sys_ioctl_h_ioctl_proto=no,
+  zsh_cv_header_sys_ioctl_h_ioctl_proto=yes)])
+else
+  zsh_cv_header_sys_ioctl_h_ioctl_proto=no
+fi
+
+AH_TEMPLATE([HAVE_IOCTL_PROTO],
+[Define to 1 if there is a prototype defined for ioctl() on your system.])
+if test $zsh_cv_header_unistd_h_termios_h_ioctl_proto = yes || \
+   test $zsh_cv_header_sys_ioctl_h_ioctl_proto = yes; then
+  AC_DEFINE(HAVE_IOCTL_PROTO)
+fi
+AH_TEMPLATE([IOCTL_IN_SYS_IOCTL],
+[Define to 1 if we must include <sys/ioctl.h> to get a prototype for ioctl().])
+if test $zsh_cv_header_sys_ioctl_h_ioctl_proto = yes; then
+  AC_DEFINE(IOCTL_IN_SYS_IOCTL)
+fi
+
 dnl -------------------
 dnl select() defined in <sys/socket.h>, ie BeOS R4.51
 dnl -------------------
Index: Src/system.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/system.h,v
retrieving revision 1.31
diff -u -r1.31 system.h
--- Src/system.h	23 May 2005 14:41:38 -0000	1.31
+++ Src/system.h	28 Jul 2005 15:56:55 -0000
@@ -337,7 +337,7 @@
 # endif  /* HAVE_TERMIO_H  */
 #endif   /* HAVE_TERMIOS_H */
 
-#if defined(GWINSZ_IN_SYS_IOCTL) || defined(CLOBBERS_TYPEAHEAD)
+#if defined(GWINSZ_IN_SYS_IOCTL) || defined(IOCTL_IN_SYS_IOCTL)
 # include <sys/ioctl.h>
 #endif
 #ifdef WINSIZE_IN_PTEM
