]> diplodocus.org Git - nmh/blobdiff - sbr/terminal.c
Oops, should have offset file in showbuildenv rather than cat.
[nmh] / sbr / terminal.c
index f664d0cf90f0b0add699cf296101f86acf8bd662..5ba6dcd115dceb695a5de794812283aedb6283d3 100644 (file)
 #include <h/mh.h>
 #include <h/utils.h>
 
-#include <termios.h>
 #include <sys/ioctl.h>
 
 #include <curses.h>
 #include <term.h>
+#include <termios.h>
 
 #ifdef WINSIZE_IN_PTEM
 # include <sys/stream.h>
@@ -35,7 +35,7 @@ static char *termcbufp = NULL;           /* tputs() output buffer pointer          */
 static size_t termcbufsz = 0;     /* Size of termcbuf                       */
 
 static void initialize_terminfo(void);
-static int termbytes(int);
+static int termbytes(TPUTS_PUTC_ARG);
 
 /*
  * Initialize the terminfo library.
@@ -106,7 +106,7 @@ sc_length (void)
 
 
 static int
-outc (int c)
+outc (TPUTS_PUTC_ARG c)
 {
     return putchar(c);
 }
@@ -117,7 +117,7 @@ nmh_clear_screen (void)
 {
     initialize_terminfo ();
 
-    if (clear)
+    if (ti_clear)
        tputs (ti_clear, LI, outc);
     else {
        printf ("\f");
@@ -175,17 +175,63 @@ 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
  */
 
 static int
-termbytes(int c)
+termbytes(TPUTS_PUTC_ARG c)
 {
     size_t offset;