URI:
       tt9.c - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tt9.c (1578B)
       ---
            1 /* t9.c: write lines for tables over 200 lines */
            2 # include "t.h"
            3 static int useln;
            4 
            5 void
            6 yetmore(void)
            7 {
            8         for (useln = 0; useln < MAXLIN && table[useln] == 0; useln++)
            9                 ;
           10         if (useln >= MAXLIN)
           11                 error("Wierd.  No data in table.");
           12         table[0] = table[useln];
           13         for (useln = nlin - 1; useln >= 0 && (fullbot[useln] || instead[useln]); useln--)
           14                 ;
           15         if (useln < 0)
           16                 error("Wierd.  No real lines in table.");
           17         domore(leftover);
           18         while (gets1(cstore = cspace, MAXCHS) && domore(cstore))
           19                 ;
           20         last = cstore;
           21         return;
           22 }
           23 
           24 
           25 int
           26 domore(char *dataln)
           27 {
           28         int        icol, ch;
           29 
           30         if (prefix(".TE", dataln))
           31                 return(0);
           32         if (dataln[0] == '.' && !isdigit((uchar)dataln[1])) {
           33                 Bprint(&tabout, "%s\n", dataln);
           34                 return(1);
           35         }
           36         fullbot[0] = 0;
           37         instead[0] = (char *)0;
           38         if (dataln[1] == 0)
           39                 switch (dataln[0]) {
           40                 case '_':
           41                         fullbot[0] = '-';
           42                         putline(useln, 0);
           43                         return(1);
           44                 case '=':
           45                         fullbot[0] = '=';
           46                         putline(useln, 0);
           47                         return(1);
           48                 }
           49         for (icol = 0; icol < ncol; icol++) {
           50                 table[0][icol].col = dataln;
           51                 table[0][icol].rcol = 0;
           52                 for (; (ch = *dataln) != '\0' && ch != tab; dataln++)
           53                         ;
           54                 *dataln++ = '\0';
           55                 switch (ctype(useln, icol)) {
           56                 case 'n':
           57                         table[0][icol].rcol = maknew(table[0][icol].col);
           58                         break;
           59                 case 'a':
           60                         table[0][icol].rcol = table[0][icol].col;
           61                         table[0][icol].col = "";
           62                         break;
           63                 }
           64                 while (ctype(useln, icol + 1) == 's') /* spanning */
           65                         table[0][++icol].col = "";
           66                 if (ch == '\0')
           67                         break;
           68         }
           69         while (++icol < ncol)
           70                 table[0][icol].col = "";
           71         putline(useln, 0);
           72         exstore = exspace;                 /* reuse space for numerical items */
           73         return(1);
           74 }