X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Ftermsbr.c;h=fbf5f1620a32d92edf3356c008e56f09be7604f3;hp=a1b8ebf102b9f7fac71d21d92c1ad3856f329f8d;hb=6e9577f324bef90765a5edc02044eb111ec48072;hpb=c79c37f2b6e647212c36b63841a4628af01c774a diff --git a/uip/termsbr.c b/uip/termsbr.c index a1b8ebf..fbf5f16 100644 --- a/uip/termsbr.c +++ b/uip/termsbr.c @@ -1,25 +1,14 @@ - /* - * termsbr.c -- termcap support - * - * $Id$ - * - * This code is Copyright (c) 2002, by the authors of nmh. See the - * COPYRIGHT file in the root directory of the nmh distribution for - * complete copyright information. - */ +** termsbr.c -- termcap support +** +** This code is Copyright (c) 2002, by the authors of nmh. See the +** COPYRIGHT file in the root directory of the nmh distribution for +** complete copyright information. +*/ #include -#ifdef HAVE_TERMIOS_H -# include -#else -# ifdef HAVE_TERMIO_H -# include -# else -# include -# endif -#endif +#include #ifdef HAVE_TERMCAP_H # include @@ -39,198 +28,68 @@ #endif #if BUFSIZ<2048 -# define TXTSIZ 2048 +# define TXTSIZ 2048 #else # define TXTSIZ BUFSIZ #endif -/* - * These variables are sometimes defined in, - * and needed by the termcap library. - */ -#ifdef HAVE_OSPEED -# ifdef MUST_DEFINE_OSPEED -extern short ospeed; -extern char PC; -# endif -#else -short ospeed; -char PC; -#endif - static long speedcode; -static int initLI = 0; static int initCO = 0; -static int HC = 0; /* are we on a hardcopy terminal? */ -static int LI = 40; /* number of lines */ -static int CO = 80; /* number of colums */ -static char *CL = NULL; /* termcap string to clear screen */ -static char *SE = NULL; /* termcap string to end standout mode */ -static char *SO = NULL; /* termcap string to begin standout mode */ - -static char termcap[TXTSIZ]; +static int CO = 80; /* number of colums */ static void read_termcap(void) { - char *bp, *cp; - char *term; + char *term; #ifndef TGETENT_ACCEPTS_NULL - char termbuf[TXTSIZ]; -#endif - -#ifdef HAVE_TERMIOS_H - struct termios tio; -#else -# ifdef HAVE_TERMIO_H - struct termio tio; -# else - struct sgttyb tio; -# endif + char termbuf[TXTSIZ]; #endif - static int inited = 0; + struct termios tio; + static int inited = 0; - if (inited++) - return; + if (inited++) + return; - if (!(term = getenv ("TERM"))) - return; + if (!(term = getenv("TERM"))) + return; /* - * If possible, we let tgetent allocate its own termcap buffer - */ +** If possible, we let tgetent allocate its own termcap buffer +*/ #ifdef TGETENT_ACCEPTS_NULL - if (tgetent (NULL, term) != TGETENT_SUCCESS) - return; + if (tgetent(NULL, term) != TGETENT_SUCCESS) + return; #else - if (tgetent (termbuf, term) != TGETENT_SUCCESS) - return; + if (tgetent(termbuf, term) != TGETENT_SUCCESS) + return; #endif -#ifdef HAVE_TERMIOS_H - speedcode = cfgetospeed(&tio); -#else -# ifdef HAVE_TERMIO_H - speedcode = ioctl(fileno(stdout), TCGETA, &tio) != NOTOK ? tio.c_cflag & CBAUD : 0; -# else - speedcode = ioctl(fileno(stdout), TIOCGETP, (char *) &tio) != NOTOK ? tio.sg_ospeed : 0; -# endif -#endif + speedcode = cfgetospeed(&tio); - HC = tgetflag ("hc"); - - if (!initCO && (CO = tgetnum ("co")) <= 0) - CO = 80; - if (!initLI && (LI = tgetnum ("li")) <= 0) - LI = 24; - - cp = termcap; - CL = tgetstr ("cl", &cp); - if ((bp = tgetstr ("pc", &cp))) - PC = *bp; - if (tgetnum ("sg") <= 0) { - SE = tgetstr ("se", &cp); - SO = tgetstr ("so", &cp); - } + if (!initCO && (CO = tgetnum("co")) <= 0) + CO = 80; } int -sc_width (void) +sc_width(void) { #ifdef TIOCGWINSZ - struct winsize win; - int width; - - if (ioctl (fileno (stderr), TIOCGWINSZ, &win) != NOTOK - && (width = win.ws_col) > 0) { - CO = width; - initCO++; - } else + struct winsize win; + int width; + + if (ioctl(fileno(stderr), TIOCGWINSZ, &win) != NOTOK + && (width = win.ws_col) > 0) { + CO = width; + initCO++; + } else #endif /* TIOCGWINSZ */ - read_termcap(); - - return CO; -} - - -int -sc_length (void) -{ -#ifdef TIOCGWINSZ - struct winsize win; - - if (ioctl (fileno (stderr), TIOCGWINSZ, &win) != NOTOK - && (LI = win.ws_row) > 0) - initLI++; - else -#endif /* TIOCGWINSZ */ - read_termcap(); - - return LI; -} + read_termcap(); - -static int -outc (int c) -{ - return putchar(c); -} - - -void -clear_screen (void) -{ - read_termcap (); - - if (CL && speedcode) - tputs (CL, LI, outc); - else { - printf ("\f"); - if (speedcode) - printf ("\200"); - } - - fflush (stdout); -} - - -/* - * print in standout mode - */ -int -SOprintf (char *fmt, ...) -{ - va_list ap; - - read_termcap (); - if (!(SO && SE)) - return NOTOK; - - tputs (SO, 1, outc); - - va_start(ap, fmt); - vprintf (fmt, ap); - va_end(ap); - - tputs (SE, 1, outc); - - return OK; + return CO; } - -/* - * Is this a hardcopy terminal? - */ - -int -sc_hardcopy(void) -{ - read_termcap(); - return HC; -} -