Format.
authorDavid Given <dg@cowlark.com>
Sat, 2 Jun 2018 18:57:43 +0000 (20:57 +0200)
committerDavid Given <dg@cowlark.com>
Sat, 2 Jun 2018 18:57:43 +0000 (20:57 +0200)
lang/cem/libcc.ansi/misc/termcap.c

index 41092c7..2916252 100644 (file)
  */
 /* $Id$ */
 
-#include       <stdio.h>
-#include       <stdlib.h>
-#include       <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
 
-#define CAPABLEN       2
+#define CAPABLEN 2
 
-#define ISSPACE(c)     ((c) == ' ' || (c) == '\t' || (c) == '\r' || (c) == '\n')
-#define ISDIGIT(x)     ((x) >= '0' && (x) <= '9')
+#define ISSPACE(c) ((c) == ' ' || (c) == '\t' || (c) == '\r' || (c) == '\n')
+#define ISDIGIT(x) ((x) >= '0' && (x) <= '9')
 
-short  ospeed;         /* output speed */
-char   PC;             /* padding character */
-char   *BC;            /* back cursor movement */
-char   *UP;            /* up cursor movement */
+short ospeed; /* output speed */
+char PC; /* padding character */
+char* BC; /* back cursor movement */
+char* UP; /* up cursor movement */
 
-static const char      *capab;         /* the capability itself */
-static int     check_for_tc(void);
-static int     match_name(const char *buf, const char *name);
+static const char* capab; /* the capability itself */
+static int check_for_tc(void);
+static int match_name(const char* buf, const char* name);
 
 /*
  *     tgetent - get the termcap entry for terminal name, and put it
  *     in bp (which must be an array of 1024 chars). Returns 1 if
  *     termcap entry found, 0 if not found, and -1 if file not found.
  */
-int
-tgetent(char *bp, const char *name)
+int tgetent(char* bp, const char* name)
 {
-       FILE    *fp;
-       char    *file;
-       char    *cp;
-       char    buf[1024];
+       FILEfp;
+       charfile;
+       charcp;
+       char buf[1024];
 
        capab = bp;
-       if ((file = getenv("TERMCAP")) != (char *) NULL) {
-               if (*file != '/' &&
-                   (cp = getenv("TERM")) != NULL && strcmp(name, cp) == 0) {
-                       (void) strcpy(bp, file);
-                       return(1);
+       if ((file = getenv("TERMCAP")) != (char*)NULL)
+       {
+               if (*file != '/' && (cp = getenv("TERM")) != NULL && strcmp(name, cp) == 0)
+               {
+                       (void)strcpy(bp, file);
+                       return (1);
                }
-               else file = "/etc/termcap";
-       } else
+               else
+                       file = "/etc/termcap";
+       }
+       else
                file = "/etc/termcap";
-       if ((fp = fopen(file, "r")) == (FILE *) NULL)
-               return(-1); 
-       while (fgets(buf, 1024, fp) != NULL) {
-               if (buf[0] == '#') continue;
+       if ((fp = fopen(file, "r")) == (FILE*)NULL)
+               return (-1);
+       while (fgets(buf, 1024, fp) != NULL)
+       {
+               if (buf[0] == '#')
+                       continue;
                while (*(cp = &buf[strlen(buf) - 2]) == '\\')
                        if (fgets(cp, 1024, fp) == NULL)
                                return (0);
-               if (match_name(buf, name)) {
+               if (match_name(buf, name))
+               {
                        strcpy(bp, buf);
                        fclose(fp);
-                       return(check_for_tc());
+                       return (check_for_tc());
                }
        }
        fclose(fp);
-       return(0);
+       return (0);
 }
 
 /*
@@ -78,17 +83,22 @@ tgetent(char *bp, const char *name)
  *     match is found.
  */
 static int
-match_name(const char *buf, const char *name)
+match_name(const char* buf, const char* name)
 {
-       register const char *tp = buf;
-       register const char *np;
+       register const chartp = buf;
+       register const charnp;
 
-       for (;;) {
-               for (np = name; *np && *tp == *np; np++, tp++) { }
+       for (;;)
+       {
+               for (np = name; *np && *tp == *np; np++, tp++)
+               {
+               }
                if (*np == 0 && (*tp == '|' || *tp == ':' || *tp == 0))
-                       return(1);
-               while (*tp != 0 && *tp != '|' && *tp != ':') tp++;
-               if (*tp++ != '|') return (0);
+                       return (1);
+               while (*tp != 0 && *tp != '|' && *tp != ':')
+                       tp++;
+               if (*tp++ != '|')
+                       return (0);
        }
 }
 
@@ -98,65 +108,71 @@ match_name(const char *buf, const char *name)
 static int
 check_for_tc(void)
 {
-       static int      count = 0;
-       const char      *savcapab = capab;
-       char            buf[1024];
-       char            terminalname[128];
-       register char   *p = (char *)capab + strlen(capab) - 2, *q;
+       static int count = 0;
+       const charsavcapab = capab;
+       char buf[1024];
+       char terminalname[128];
+       register char *p = (char*)capab + strlen(capab) - 2, *q;
 
        while (*p != ':')
-               if (--p < (char *)capab)
-                       return(0);      /* no : in termcap entry */
+               if (--p < (char*)capab)
+                       return (0); /* no : in termcap entry */
        if (p[1] != 't' || p[2] != 'c')
-               return(1);
-       if (count > 16) return(0);      /* recursion in tc= definitions */
+               return (1);
+       if (count > 16)
+               return (0); /* recursion in tc= definitions */
        count++;
        strcpy(terminalname, &p[4]);
        q = terminalname;
-       while (*q && *q != ':') q++;
+       while (*q && *q != ':')
+               q++;
        *q = 0;
-       if (tgetent(buf, terminalname) != 1) {
+       if (tgetent(buf, terminalname) != 1)
+       {
                --count;
-               return(0);
+               return (0);
        }
        --count;
-       for (q = buf; *q && *q != ':'; q++) { }
+       for (q = buf; *q && *q != ':'; q++)
+       {
+       }
        strcpy(p, q);
        capab = savcapab;
-       return(1);
+       return (1);
 }
 
 /*
  *     tgetnum - get the numeric terminal capability corresponding
  *     to id. Returns the value, -1 if invalid.
  */
-int
-tgetnum(const char *id)
+int tgetnum(const char* id)
 {
-       const char      *cp;
-       int     ret;
+       const charcp;
+       int ret;
 
        if ((cp = capab) == NULL || id == NULL)
-               return(-1);
+               return (-1);
        while (*++cp != ':')
                ;
-       while (*cp) {
+       while (*cp)
+       {
                cp++;
                while (ISSPACE(*cp))
                        cp++;
-               if (strncmp(cp, id, CAPABLEN) == 0) {
+               if (strncmp(cp, id, CAPABLEN) == 0)
+               {
                        while (*cp && *cp != ':' && *cp != '#')
                                cp++;
                        if (*cp != '#')
-                               return(-1);
-                       for (ret = 0, cp++ ; *cp && ISDIGIT(*cp) ; cp++)
+                               return (-1);
+                       for (ret = 0, cp++; *cp && ISDIGIT(*cp); cp++)
                                ret = ret * 10 + *cp - '0';
-                       return(ret);
+                       return (ret);
                }
                while (*cp && *cp != ':')
                        cp++;
        }
-       return(-1);
+       return (-1);
 }
 
 /*
@@ -164,25 +180,25 @@ tgetnum(const char *id)
  *     if invalid, 0 if the flag is not in termcap entry, or 1 if it is
  *     present.
  */
-int
-tgetflag(const char *id)
+int tgetflag(const char* id)
 {
-       const char      *cp;
+       const charcp;
 
        if ((cp = capab) == NULL || id == NULL)
-               return(-1);
+               return (-1);
        while (*++cp != ':')
                ;
-       while (*cp) {
+       while (*cp)
+       {
                cp++;
                while (ISSPACE(*cp))
                        cp++;
                if (strncmp(cp, id, CAPABLEN) == 0)
-                       return(1);
+                       return (1);
                while (*cp && *cp != ':')
                        cp++;
        }
-       return(0);
+       return (0);
 }
 
 /*
@@ -190,76 +206,79 @@ tgetflag(const char *id)
  *     it in area (advancing area at same time). Expand escape sequences
  *     etc. Returns the string, or NULL if it can't do it.
  */
-char *
-tgetstr(const char *id, char ** const area)
+char* tgetstr(const char* id, char** const area)
 {
-       const char      *cp;
-       char    *ret;
-       int     i;
+       const charcp;
+       charret;
+       int i;
 
        if ((cp = capab) == NULL || id == NULL)
-               return(NULL);
+               return (NULL);
        while (*++cp != ':')
                ;
-       while (*cp) {
+       while (*cp)
+       {
                cp++;
                while (ISSPACE(*cp))
                        cp++;
-               if (strncmp(cp, id, CAPABLEN) == 0) {
+               if (strncmp(cp, id, CAPABLEN) == 0)
+               {
                        while (*cp && *cp != ':' && *cp != '=')
                                cp++;
                        if (*cp != '=')
-                               return(NULL);
-                       for (ret = *area, cp++; *cp && *cp != ':' ; (*area)++, cp++)
-                               switch(*cp) {
-                               case '^' :
-                                       **area = *++cp - 'A' + 1;
-                                       break;
-                               case '\\' :
-                                       switch(*++cp) {
-                                       case 'E' :
-                                               **area = '\033';
-                                               break;
-                                       case 'n' :
-                                               **area = '\n';
-                                               break;
-                                       case 'r' :
-                                               **area = '\r';
+                               return (NULL);
+                       for (ret = *area, cp++; *cp && *cp != ':'; (*area)++, cp++)
+                               switch (*cp)
+                               {
+                                       case '^':
+                                               **area = *++cp - 'A' + 1;
                                                break;
-                                       case 't' :
-                                               **area = '\t';
+                                       case '\\':
+                                               switch (*++cp)
+                                               {
+                                                       case 'E':
+                                                               **area = '\033';
+                                                               break;
+                                                       case 'n':
+                                                               **area = '\n';
+                                                               break;
+                                                       case 'r':
+                                                               **area = '\r';
+                                                               break;
+                                                       case 't':
+                                                               **area = '\t';
+                                                               break;
+                                                       case 'b':
+                                                               **area = '\b';
+                                                               break;
+                                                       case 'f':
+                                                               **area = '\f';
+                                                               break;
+                                                       case '0':
+                                                       case '1':
+                                                       case '2':
+                                                       case '3':
+                                                               for (i = 0; *cp && ISDIGIT(*cp); cp++)
+                                                                       i = i * 8 + *cp - '0';
+                                                               **area = i;
+                                                               cp--;
+                                                               break;
+                                                       case '^':
+                                                       case '\\':
+                                                               **area = *cp;
+                                                               break;
+                                               }
                                                break;
-                                       case 'b' :
-                                               **area = '\b';
-                                               break;
-                                       case 'f' :
-                                               **area = '\f';
-                                               break;
-                                       case '0' :
-                                       case '1' :
-                                       case '2' :
-                                       case '3' :
-                                               for (i=0 ; *cp && ISDIGIT(*cp) ; cp++)
-                                                       i = i * 8 + *cp - '0';
-                                               **area = i;
-                                               cp--;
-                                               break;
-                                       case '^' :
-                                       case '\\' :
+                                       default:
                                                **area = *cp;
-                                               break;
-                                       }
-                                       break;
-                               default :
-                                       **area = *cp;
                                }
                        *(*area)++ = '\0';
-                       return(ret);
+                       return (ret);
                }
                while (*cp && *cp != ':')
                        cp++;
        }
-       return(NULL);
+       return (NULL);
 }
 
 /*
@@ -267,159 +286,173 @@ tgetstr(const char *id, char ** const area)
  *     for the cursor to go to (destcol, destline), and return the string.
  *     Returns "OOPS" if something's gone wrong, or the string otherwise.
  */
-char *
-tgoto(const char *cm, int destcol, int destline)
+char* tgoto(const char* cm, int destcol, int destline)
 {
-       register char   *rp;
-       static char     ret[24];
-       char            added[16];
-       int             *dp = &destline;
-       int             numval;
-       int             swapped = 0;
+       register charrp;
+       static char ret[24];
+       char added[16];
+       intdp = &destline;
+       int numval;
+       int swapped = 0;
 
        added[0] = 0;
-       for (rp = ret ; *cm ; cm++) {
-               if (*cm == '%') {
-                       switch(*++cm) {
-                       case '>' :
-                               if (dp == NULL)
-                                       return("OOPS");
-                               cm++;
-                               if (*dp > *cm++) {
-                                       *dp += *cm;
-                               }
-                               break;
-                       case '+' :
-                       case '.' :
-                               if (dp == NULL)
-                                       return("OOPS");
-                               if (*cm == '+') *dp = *dp + *++cm;
-                               for (;;) {
-                                   switch(*dp) {
-                                   case 0:
-                                   case 04:
-                                   case '\t':
-                                   case '\n':
-                                       /* filter these out */
-                                       if (dp == &destcol || swapped || UP) {
-                                               strcat(added, dp == &destcol || swapped ?
-                                                       (BC ? BC : "\b") :
-                                                       UP);
-                                               (*dp)++;
-                                               continue;
+       for (rp = ret; *cm; cm++)
+       {
+               if (*cm == '%')
+               {
+                       switch (*++cm)
+                       {
+                               case '>':
+                                       if (dp == NULL)
+                                               return ("OOPS");
+                                       cm++;
+                                       if (*dp > *cm++)
+                                       {
+                                               *dp += *cm;
                                        }
-                                   }
-                                   break;
-                               }
-                               *rp++ = *dp;
-                               dp = (dp == &destline) ? &destcol : NULL;
-                               break;
+                                       break;
+                               case '+':
+                               case '.':
+                                       if (dp == NULL)
+                                               return ("OOPS");
+                                       if (*cm == '+')
+                                               *dp = *dp + *++cm;
+                                       for (;;)
+                                       {
+                                               switch (*dp)
+                                               {
+                                                       case 0:
+                                                       case 04:
+                                                       case '\t':
+                                                       case '\n':
+                                                               /* filter these out */
+                                                               if (dp == &destcol || swapped || UP)
+                                                               {
+                                                                       strcat(added, dp == &destcol || swapped ? (BC ? BC : "\b") : UP);
+                                                                       (*dp)++;
+                                                                       continue;
+                                                               }
+                                               }
+                                               break;
+                                       }
+                                       *rp++ = *dp;
+                                       dp = (dp == &destline) ? &destcol : NULL;
+                                       break;
 
-                       case 'r' : {
-                               int tmp = destline;
+                               case 'r':
+                               {
+                                       int tmp = destline;
 
-                               destline = destcol;
-                               destcol = tmp;
-                               swapped = 1 - swapped;
-                               break;
-                       }
-                       case 'n' :
-                               destcol ^= 0140;
-                               destline ^= 0140;
-                               break;
+                                       destline = destcol;
+                                       destcol = tmp;
+                                       swapped = 1 - swapped;
+                                       break;
+                               }
+                               case 'n':
+                                       destcol ^= 0140;
+                                       destline ^= 0140;
+                                       break;
 
-                       case '%' :
-                               *rp++ = '%';
-                               break;
+                               case '%':
+                                       *rp++ = '%';
+                                       break;
 
-                       case 'i' :
-                               destcol++;
-                               destline++;
-                               break;
+                               case 'i':
+                                       destcol++;
+                                       destline++;
+                                       break;
 
-                       case 'B' :
-                               if (dp == NULL)
-                                       return("OOPS");
-                               *dp = 16 * (*dp / 10) + *dp % 10;
-                               break;
+                               case 'B':
+                                       if (dp == NULL)
+                                               return ("OOPS");
+                                       *dp = 16 * (*dp / 10) + *dp % 10;
+                                       break;
 
-                       case 'D' :
-                               if (dp == NULL)
-                                       return("OOPS");
-                               *dp = *dp - 2 * (*dp % 16);
-                               break;
+                               case 'D':
+                                       if (dp == NULL)
+                                               return ("OOPS");
+                                       *dp = *dp - 2 * (*dp % 16);
+                                       break;
 
-                       case 'd' :
-                       case '2' :
-                       case '3' :
-                               if (dp == NULL)
-                                       return("OOPS");
-                               numval = *dp;
-                               dp = (dp == &destline) ? &destcol : NULL;
-                               if (numval >= 100) {
-                                       *rp++ = '0' + numval / 100;
-                               }
-                               else if (*cm == '3') {
-                                       *rp++ = ' ';
-                               }
-                               if (numval >= 10) {
-                                       *rp++ = '0' + ((numval%100)/10);
-                               }
-                               else if (*cm == '3' || *cm == '2') {
-                                       *rp++ = ' ';
-                               }
-                               *rp++ = '0' + (numval%10);
-                               break;
-                       default :
-                               return("OOPS");
+                               case 'd':
+                               case '2':
+                               case '3':
+                                       if (dp == NULL)
+                                               return ("OOPS");
+                                       numval = *dp;
+                                       dp = (dp == &destline) ? &destcol : NULL;
+                                       if (numval >= 100)
+                                       {
+                                               *rp++ = '0' + numval / 100;
+                                       }
+                                       else if (*cm == '3')
+                                       {
+                                               *rp++ = ' ';
+                                       }
+                                       if (numval >= 10)
+                                       {
+                                               *rp++ = '0' + ((numval % 100) / 10);
+                                       }
+                                       else if (*cm == '3' || *cm == '2')
+                                       {
+                                               *rp++ = ' ';
+                                       }
+                                       *rp++ = '0' + (numval % 10);
+                                       break;
+                               default:
+                                       return ("OOPS");
                        }
                }
-               else *rp++ = *cm;
+               else
+                       *rp++ = *cm;
        }
        *rp = '\0';
        strcpy(rp, added);
-       return(ret);
+       return (ret);
 }
 
-static int tens_of_ms_p_char[] = {     /* index as returned by gtty */
-                                       /* assume 10 bits per char */
+static int tens_of_ms_p_char[] = { /* index as returned by gtty */
+       /* assume 10 bits per char */
        0, 2000, 1333, 909, 743, 666, 500, 333, 166, 83, 55, 41, 20, 10, 5, 2
 };
 /*
  *     tputs - put the string cp out onto the terminal, using the function
  *     outc. Also handle padding.
  */
-int
-tputs(register const char *cp, int affcnt, int (*outc)(int))
+int tputs(register const char* cp, int affcnt, int (*outc)(int))
 {
        int delay = 0;
        if (cp == NULL)
-               return(1);
-       while (ISDIGIT(*cp)) {
+               return (1);
+       while (ISDIGIT(*cp))
+       {
                delay = delay * 10 + (*cp++ - '0');
        }
        delay *= 10;
-       if (*cp == '.') {
+       if (*cp == '.')
+       {
                cp++;
-               if (ISDIGIT(*cp)) {
+               if (ISDIGIT(*cp))
+               {
                        delay += *cp++ - '0';
                }
-               while (ISDIGIT(*cp)) cp++;
+               while (ISDIGIT(*cp))
+                       cp++;
        }
-       if (*cp == '*') {
+       if (*cp == '*')
+       {
                delay *= affcnt;
                cp++;
        }
        while (*cp)
                (*outc)(*cp++);
-       if (delay != 0 &&
-           ospeed > 0 &&
-           ospeed < (sizeof tens_of_ms_p_char / sizeof tens_of_ms_p_char[0])) {
-               delay = (delay + tens_of_ms_p_char[ospeed] - 1) / 
-                                 tens_of_ms_p_char[ospeed];
-               while (delay--) (*outc)(PC);
+       if (delay != 0 && ospeed > 0 && ospeed < (sizeof tens_of_ms_p_char / sizeof tens_of_ms_p_char[0]))
+       {
+               delay = (delay + tens_of_ms_p_char[ospeed] - 1) / tens_of_ms_p_char[ospeed];
+               while (delay--)
+                       (*outc)(PC);
        }
-       return(1);
+       return (1);
 }
 
 /*