zsh-workers
 help / color / mirror / code / Atom feed
* PATCH: missing ioctl() prototype on cygwin
@ 2005-07-28 18:30 Thorsten Dahlheimer
  0 siblings, 0 replies; only message in thread
From: Thorsten Dahlheimer @ 2005-07-28 18:30 UTC (permalink / raw)
  To: zsh-workers

[-- Attachment #1: Type: text/plain, Size: 761 bytes --]

Currently no prototype for ioctl() is picked up when compiling on
cygwin:  The only prototype there is in <sys/ioctl.h> (which must
be included directly), but the zsh sources include that header only
if it defines TIOCGWINSZ (and <termios.h> doesn't), and cygwin's
<sys/ioctl.h> doesn't define TIOCGWINSZ (but <termios.h> does).

So I've changed configure.ac and Src/system.h (see attached patch)
such that configure now checks whether ioctl() is declared in
<sys/ioctl.h> but not in <unistd.h> or <termios.h>, and if this is
the case then <sys/ioctl.h> gets included.

Note that I removed the test for CLOBBERS_TYPEAHEAD in Src/system.h,
since I couldn't find any reference to that symbol anywhere else
(except in the ChangeLogs).

Regards,
Thorsten Dahlheimer

[-- Attachment #2: ioctl.patch --]
[-- Type: application/octet-stream, Size: 4939 bytes --]

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2005-07-28 18:22 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-07-28 18:30 PATCH: missing ioctl() prototype on cygwin Thorsten Dahlheimer

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).