Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: PATCH: Re: Build Failures on SunOS-4.1 and 5.5



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 <termio.h> between the #includes of <curses.h> and
<term.h> in terminfo.c (relative to my patch in 13968), but my concern is
that including both <termio.h> (there) and <termios.h> (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 <termcap.h>
-#else
-# ifdef HAVE_TERM_H
-#  include <term.h>
-# endif
-#endif
-
 #if defined(GWINSZ_IN_SYS_IOCTL) || defined(CLOBBERS_TYPEAHEAD)
 # include <sys/ioctl.h>
 #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 <termcap.h>
+# 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 <curses.h>
+# endif
+# ifdef HAVE_TERM_H
+#  include <term.h>
 # 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   



Messages sorted by: Reverse Date, Date, Thread, Author