Bug in Gnu Emacs 18.52 on 3b2

David Preisler dwp at mtune.ATT.COM
Thu Dec 15 12:35:05 AEST 1988


While trying to install GnuEmacs 18.52 on a 3b2 700 running Unix V 3.2.1
with "s-usg5-3.h" and "m-att3b.h" defined in config.h encountered a series 
of syntax errors in src/sysdep.c: i.e. ws_row and ws_col undefined.

Solution: In file src/sysdep.c in the #ifdef HAVE_TERMIO definition you 
*must* #undef TIOCGWINSZ.

Fix goes in this segment:

          >   #ifdef HAVE_TERMIO
          >   #include <sys/termio.h>
          >   #undef TIOCGETP
          >   #define TIOCGETP TCGETA
          >   #undef TIOCSETN
          >   #define TIOCSETN TCSETA
          >   #undef TIOCSETP
          >   #define TIOCSETP TCSETAF
          >   #define TERMINAL struct termio
          >   #define OSPEED(str) (str.c_cflag & CBAUD)
          >   #define OSPEED(str) (str.c_cflag & CBAUD)
          >   #define SETOSPEED(str,new) (str.c_cflag = (str.c_cfl > [more]
          >   #define TABS_OK(str) ((str.c_oflag & TABDLY) != TAB3)
Fix here: >   #undef TIOCGWINSZ
          >   #endif /* HAVE_TERMIO */


Without the fix TIOCGSZ is defined, but not the way we think it is 
so the below defs are never made when they should be

          >                          
          >   /* Define the 4.3 names in terms of the Sun names
          >      if the latter exist and the former do not.  */
          >   
          >   #ifdef TIOCGSIZE
          >   #ifndef TIOCGWINSZ
          >   #define TIOCGWINSZ TIOCGSIZE
          >   #define winsize ttysize
          >   #define ws_row ts_lines
          >   #define ws_col ts_cols
          >   #endif
          >   #endif /* Sun */
          >       
          
As a result of the 'confusion' about TIOCGWINSZ when we try to 
use ws_row/col ( and others ) we get sytax errors in the code 
segment below.
          
          >
          >   /* Do it using the 4.3 names if possible.  */
          >      #ifdef TIOCGWINSZ
          >     struct winsize size;
          >     *heightp = 0;
          >     if (ioctl (0, TIOCGWINSZ, &size) < 0)
          >       return;
          >     if ((unsigned) size.ws_col > MScreenWidth
          >         || (unsigned) size.ws_row > MScreenLength)
          >       return;
          >     *widthp = size.ws_col;
          >     *heightp = size.ws_row;
          >   #else /* not TIOCGWNSIZ */
          >   #ifdef VMS
          >     .....



Thanks to all those who responded!!!

David William Preisler                                
  System Administrator     

AT&T Bell Laboratories     Email: att!mtune!dwp.ATT.COM
     200 Laurel Avenue
Middletown,  NJ  07748     Phone: (201) 957-2594



More information about the Comp.bugs.sys5 mailing list