home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume23 / sps2 / part03 / termwidth.c < prev    next >
C/C++ Source or Header  |  1991-01-08  |  978b  |  52 lines

  1. # ifndef lint
  2. static char SccsId[] =  "@(#)termwidth.c    1.3\t8/6/90" ;
  3. # endif
  4.  
  5. # include    <sys/ioctl.h>
  6.  
  7. /*
  8. ** TERMWIDTH - Sets the external variable `Termwidth' to the # of columns
  9. ** on the terminal.
  10. */
  11. termwidth ()
  12. {
  13.     register char           *termtype ;
  14.     register int            twidth ;
  15. # ifdef TIOCGWINSZ
  16.     struct winsize        w ;
  17. # else
  18. # ifdef TIOCGSIZE
  19.     struct ttysize          w ;
  20. # endif
  21. # endif
  22.     char                    buf[ 1025 ] ;
  23.     extern unsigned         Termwidth ;
  24.     char                    *getenv() ;
  25.  
  26. # ifdef TIOCGWINSZ
  27.     w.ws_col = 0 ;
  28.     if ( !ioctl( 0, TIOCGWINSZ, &w ) && w.ws_col )
  29.     {
  30.         Termwidth = w.ws_col ;
  31.         return ;
  32.     }
  33. # else
  34. # ifdef TIOCGSIZE
  35.     w.ts_cols = 0 ;
  36.     if ( !ioctl( 0, TIOCGSIZE, &w ) && w.ts_cols )
  37.     {
  38.         Termwidth = w.ts_cols ;
  39.         return ;
  40.     }
  41. # endif
  42. # endif
  43.     Termwidth = 80 ;
  44.     if ( !(termtype = getenv( "TERM" )) )
  45.         return ;
  46.     if ( tgetent( buf, termtype ) != 1 )
  47.         return ;
  48.     twidth = tgetnum( "co" ) ;
  49.     if ( twidth > 40 )
  50.         Termwidth = twidth ;
  51. }
  52.