* 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).