1 /* 2 * Copyright 2003 Sun Microsystems, Inc. All rights reserved. 3 * Use is subject to license terms. 4 */ 5 6 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 7 /* All Rights Reserved */ 8 9 10 /* 11 * Copyright (c) 1980 Regents of the University of California. 12 * All rights reserved. The Berkeley software License Agreement 13 * specifies the terms and conditions for redistribution. 14 */ 15 16 #pragma ident "%Z%%M% %I% %E% SMI" 17 18 /* t9.c: write lines for tables over 200 lines */ 19 # include "t..c" 20 21 static int useln; 22 23 void 24 yetmore(void) 25 { 26 for(useln=0; useln<MAXLIN && table[useln]==0; useln++); 27 if (useln>=MAXLIN) 28 error(gettext("Weird. No data in table.")); 29 table[0]=table[useln]; 30 for(useln=nlin-1; useln>=0 && (fullbot[useln] || instead[useln]); useln--); 31 if (useln<0) 32 error(gettext("Weird. No real lines in table.")); 33 domore(leftover); 34 while (gets1(cstore=cspace, MAXSTR) && domore(cstore)) 35 ; 36 last =cstore; 37 return; 38 } 39 40 int 41 domore(char *dataln) 42 { 43 int icol, ch; 44 if (prefix(".TE", dataln)) 45 return(0); 46 if (dataln[0] == '.' && !isdigit((unsigned char)dataln[1])) 47 { 48 puts(dataln); 49 return(1); 50 } 51 instead[0]=0; 52 fullbot[0]=0; 53 if (dataln[1]==0) 54 switch(dataln[0]) 55 { 56 case '_': fullbot[0]= '-'; putline(useln,0); return(1); 57 case '=': fullbot[0]= '='; putline(useln, 0); return(1); 58 } 59 for (icol = 0; icol <ncol; icol++) 60 { 61 table[0][icol].col = dataln; 62 table[0][icol].rcol=0; 63 for(; (ch= *dataln) != '\0' && ch != tab; dataln++) 64 ; 65 *dataln++ = '\0'; 66 switch(ctype(useln,icol)) 67 { 68 case 'n': 69 table[0][icol].rcol = maknew(table[0][icol].col); 70 break; 71 case 'a': 72 table[0][icol].rcol = table[0][icol].col; 73 table[0][icol].col= ""; 74 break; 75 } 76 while (ctype(useln,icol+1)== 's') /* spanning */ 77 table[0][++icol].col = ""; 78 if (ch == '\0') break; 79 } 80 while (++icol <ncol) 81 table[0][icol].col = ""; 82 putline(useln,0); 83 return(1); 84 } 85