From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9668 invoked from network); 13 Apr 2001 03:51:16 -0000 Received: from sunsite.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 13 Apr 2001 03:51:16 -0000 Received: (qmail 19304 invoked by alias); 13 Apr 2001 03:51:16 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 13972 Received: (qmail 19289 invoked from network); 13 Apr 2001 03:51:15 -0000 From: "Bart Schaefer" Message-Id: <1010413035101.ZM981@candle.brasslantern.com> Date: Fri, 13 Apr 2001 03:51:01 +0000 In-Reply-To: Comments: In reply to Wayne Davison "Re: PATCH: Re: Build Failures on SunOS-4.1 and 5.5" (Apr 12, 6:13pm) References: X-Mailer: Z-Mail (5.0.0 30July97) To: Subject: Re: PATCH: Re: Build Failures on SunOS-4.1 and 5.5 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii On Apr 12, 6:13pm, Wayne Davison wrote: } } The underlying problem here is that curses.h omits including termio.h } if VINTR is defined, and while termios.h defines VINTR, it doesn't } define the termio struct, and term.h puts a termio struct into its } term struct. The solution wouldn't happen to be the same as the one for __sco that's already in Src/system.h, would it? I suppose not, since it seems to be the opposite problem. } I can get terminfo.c to compile by either including termio.h before I } include term.h, or by undefining VINTR before including curses.h. Any } ideas on what is a good, portable solution? I suppose we can insert between the #includes of and in terminfo.c (relative to my patch in 13968), but my concern is that including both (there) and (from system.h) will choke on some other operating system. } Can we stomache adding this before the curses.h include: } } # ifdef VINTR } # undef VINTR } # endif If that's isolated to Src/Modules/terminfo.c, I don't see any reason why not. } On a slightly related note, anyone know what the "offsetof" define is } doing in system.h? It doesn't appear to be used anywhere, and the new } include of term.h causes it to be redefined (on Solaris). It's not in the 3.0 sources, but it's been in the 3.1 sources for as long as I've been keeping track of them (which is only since 3.1.4, I guess). Might as well #undef offsetof at the same time as #undef VINTR. Here's another shot at a complete patch (including what was in 13968): Index: Src/prototypes.h =================================================================== RCS file: /cvsroot/zsh/zsh/Src/prototypes.h,v retrieving revision 1.3 diff -u -r1.3 prototypes.h --- Src/prototypes.h 2001/04/12 17:11:40 1.3 +++ Src/prototypes.h 2001/04/13 03:49:17 @@ -33,7 +33,7 @@ char *calloc _((size_t, size_t)); #endif -#if !(defined(HAVE_TERMCAP_H) || defined(HAVE_TERM_H)) +#if !(defined(USES_TERMCAP_H) || defined(USES_TERM_H)) extern int tgetent _((char *bp, char *name)); extern int tgetnum _((char *id)); extern int tgetflag _((char *id)); Index: Src/system.h =================================================================== RCS file: /cvsroot/zsh/zsh/Src/system.h,v retrieving revision 1.13 diff -u -r1.13 system.h --- Src/system.h 2001/04/12 17:11:39 1.13 +++ Src/system.h 2001/04/13 03:49:22 @@ -310,14 +310,6 @@ # endif /* HAVE_TERMIO_H */ #endif /* HAVE_TERMIOS_H */ -#ifdef HAVE_TERMCAP_H -# include -#else -# ifdef HAVE_TERM_H -# include -# endif -#endif - #if defined(GWINSZ_IN_SYS_IOCTL) || defined(CLOBBERS_TYPEAHEAD) # include #endif Index: Src/Modules/termcap.c =================================================================== RCS file: /cvsroot/zsh/zsh/Src/Modules/termcap.c,v retrieving revision 1.3 diff -u -r1.3 termcap.c --- Src/Modules/termcap.c 2001/04/09 15:58:55 1.3 +++ Src/Modules/termcap.c 2001/04/13 03:49:24 @@ -27,12 +27,16 @@ * */ +#define USES_TERMCAP_H 1 #include "termcap.mdh" #include "termcap.pro" /* echotc: output a termcap */ #ifdef HAVE_TGETENT +# ifdef HAVE_TERMCAP_H +# include +# endif /**/ static int Index: Src/Modules/terminfo.c =================================================================== RCS file: /cvsroot/zsh/zsh/Src/Modules/terminfo.c,v retrieving revision 1.13 diff -u -r1.13 terminfo.c --- Src/Modules/terminfo.c 2001/04/12 17:11:40 1.13 +++ Src/Modules/terminfo.c 2001/04/13 03:49:28 @@ -27,6 +27,7 @@ * */ +#define USES_TERM_H 1 #include "terminfo.mdh" #include "terminfo.pro" @@ -34,8 +35,20 @@ /**/ #ifdef HAVE_TIGETSTR + +/* The following two undefs are needed for Solaris 2.6 */ +# ifdef VINTR +# undef VINTR +# endif +# ifdef offsetof +# undef offsetof +# endif + # ifdef HAVE_CURSES_H # include +# endif +# ifdef HAVE_TERM_H +# include # endif static Param terminfo_pm; -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.brasslantern.com Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net