X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/33d422c45419bacc9e3042c508c443815271053d..29db9a64a:/sbr/terminal.c?ds=inline diff --git a/sbr/terminal.c b/sbr/terminal.c index fe7619be..51dd1298 100644 --- a/sbr/terminal.c +++ b/sbr/terminal.c @@ -1,6 +1,4 @@ - -/* - * termsbr.c -- termcap support +/* terminal.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 @@ -10,11 +8,11 @@ #include #include -#include #include #include #include +#include #ifdef WINSIZE_IN_PTEM # include @@ -25,7 +23,7 @@ static int initLI = 0; static int initCO = 0; static int LI = 40; /* number of lines */ -static int CO = 80; /* number of colums */ +static int CO = 80; /* number of columns */ static char *ti_clear = NULL; /* terminfo string to clear screen */ static char *ti_standend = NULL; /* terminfo string to end standout mode */ static char *ti_standbegin = NULL; /* terminfo string to begin standout mode */ @@ -54,9 +52,8 @@ initialize_terminfo(void) if (rc != 0 || errret != 1) { termstatus = -1; return; - } else { - termstatus = 1; } + termstatus = 1; if (!initCO && (CO = tigetnum ("cols")) <= 0) CO = 80; @@ -120,7 +117,7 @@ nmh_clear_screen (void) if (ti_clear) tputs (ti_clear, LI, outc); else { - printf ("\f"); + putchar('\f'); } fflush (stdout); @@ -175,11 +172,57 @@ get_term_stringcap(char *capability) tputs(parm, 1, termbytes); - termcbufp = '\0'; + *termcbufp = '\0'; + + return termcbuf; +} + +/* + * Return a parameterized terminfo capability + */ + +char * +get_term_stringparm(char *capability, long arg1, long arg2) +{ + char *parm; + + initialize_terminfo(); + + if (termstatus == -1) + return NULL; + + termcbufp = termcbuf; + + parm = tigetstr(capability); + + if (parm == (char *) -1 || parm == NULL) { + return NULL; + } + + parm = tparm(parm, arg1, arg2, 0, 0, 0, 0, 0, 0, 0); + + tputs(parm, 1, termbytes); + + *termcbufp = '\0'; return termcbuf; } +/* + * Return the value of the specified numeric capability + */ + +int +get_term_numcap(char *capability) +{ + initialize_terminfo(); + + if (termstatus == -1) + return -1; + + return tigetnum(capability); +} + /* * Store a sequence of characters in our local buffer */