# 2.11BSD#431 - /usr/src/usr.bin/roff/common_source/n2.c

##### Functions

    casepi            X
    done              X
    done1             X
    done2             X
    done3             X
    edone             X
    flusho            X
    oput              X
    oputs             X
    pchar             X
    pchar1            X
    report            X

##### Variables

    error             X
    toolate           X

       1: #ifndef lint
       2: static char sccsid[] = "@(#)n2.c	4.1 6/7/82";
       3: #endif lint
       4:
       5: #include "tdef.h"
       6: #include <sgtty.h>
       7: extern
       8: #include "d.h"
       9: extern
      10: #include "v.h"
      11: #ifdef NROFF
      12: extern
      13: #include "tw.h"
      14: #endif
      15: #include "sdef.h"
      16: #include <setjmp.h>
      17: jmp_buf sjbuf;
      18:
      19: /*
      20: troff2.c
      21:
      22: output, cleanup
      23: */
      24:
      25: extern struct s *frame, *stk, *nxf;
      26: extern filep ip;
      27: extern filep offset;
      28: extern char *enda;
      29:
      30:
      31: extern char obuf[OBUFSZ];
      32: extern char *obufp;
      33: extern int dilev;
      34: extern int eschar;
      35: extern int tlss;
      36: extern int tflg;
      37: extern int ascii;
      38: extern int print;
      39: extern char trtab[];
      40: extern int waitf;
      41: extern char ptname[];
      42: extern int ptid;
      43: extern int em;
      44: extern int ds;
      45: extern int mflg;
      46: extern filep woff;
      47: extern int nflush;
      48: extern int lgf;
      49: extern int app;
      50: extern int nfo;
      51: extern int donef;
      52: extern int *pendw;
      53: extern int nofeed;
      54: extern int trap;
      55: extern struct sgttyb ttys;
      56: extern int ttysave;
      57: extern int quiet;
      58: extern int pendnf;
      59: extern int ndone;
      60: extern int lead;
      61: extern int ralss;
      62: extern int paper;
      63: extern int gflag;
      64: extern char *unlkp;
      65: extern char nextf[];
      66: extern int pipeflg;
      67: extern int ejf;
      68: extern int no_out;
      69: extern int level;
      70: extern int stopmesg;
      71: extern int xxx;
      72: int toolate;
      73: int error;
      74: #ifndef NROFF
      75: extern int acctf;
      76: #endif
      77:
      78: pchar(c)
      79: int c;
      80: {
      81:     register i, j;
      82:
      83:     if((i=c) & MOT){pchar1(i); return;}
      84:     switch(j = i & CMASK){
      85:         case 0:
      86:         case IMP:
      87:         case RIGHT:
      88:         case LEFT:
      89:             return;
      90:         case HX:
      91:             j = (tlss>>9) | ((i&~0777)>>3);
      92:             if(i & 040000){
      93:                 j &= ~(040000>>3);
      94:                 if(j > dip->blss)dip->blss = j;
      95:             }else{
      96:                 if(j > dip->alss)dip->alss = j;
      97:                 ralss = dip->alss;
      98:             }
      99:             tlss = 0;
     100:             return;
     101:         case LX:
     102:             tlss = i;
     103:             return;
     104:         case PRESC:
     105:             if(dip == &d[0])j = eschar;
     106:         default:
     107:             i = (trtab[j] & BMASK) | (i & ~CMASK);
     108:     }
     109:     pchar1(i);
     110: }
     111: pchar1(c)
     112: int c;
     113: {
     114:     register i, j, *k;
     115:     extern int chtab[];
     116:
     117:     j = (i = c) & CMASK;
     118:     if(dip != &d[0]){
     119:         wbf(i);
     120:         dip->op = offset;
     121:         return;
     122:     }
     123:     if(!tflg && !print){
     124:         if(j == '\n')dip->alss = dip->blss = 0;
     125:         return;
     126:     }
     127:     if(no_out || (j == FILLER))return;
     128: #ifndef NROFF
     129:     if(ascii){
     130:         if(i & MOT){
     131:             oput(' ');
     132:             return;
     133:         }
     134:         if(j < 0177){
     135:             oput(i);
     136:             return;
     137:         }
     138:         switch(j){
     139:             case 0200:
     140:             case 0210:
     141:                 oput('-');
     142:                 break;
     143:             case 0211:
     144:                 oputs("fi");
     145:                 break;
     146:             case 0212:
     147:                 oputs("fl");
     148:                 break;
     149:             case 0213:
     150:                 oputs("ff");
     151:                 break;
     152:             case 0214:
     153:                 oputs("ffi");
     154:                 break;
     155:             case 0215:
     156:                 oputs("ffl");
     157:                 break;
     158:             default:
     159:                 for(k=chtab; *++k != j; k++)
     160:                     if(*k == 0)return;
     161:                 oput('\\');
     162:                 oput('(');
     163:                 oput(*--k & BMASK);
     164:                 oput(*k >> BYTE);
     165:         }
     166:     }else
     167: #endif
     168:     ptout(i);
     169: }
     170: oput(i)
     171: char i;
     172: {
     173:     *obufp++ = i;
     174:     if(obufp == (obuf + OBUFSZ + ascii - 1))flusho();
     175: }
     176: oputs(i)
     177: char *i;
     178: {
     179:     while(*i != 0)oput(*i++);
     180: }
     181: flusho(){
     182:     if(!ascii)*obufp++ = 0;
     183:     if(!ptid){
     184:         while((ptid=open(ptname,1)) < 0){
     185:             if(++waitf <=2)prstr("Waiting for Typesetter.\n");
     186:             sleep(15);
     187:         }
     188:     }
     189:     if(no_out == 0){
     190:         if (!toolate) {
     191:             toolate++;
     192: #ifdef NROFF
     193:             if(t.bset || t.breset){
     194:                 if(ttysave == -1) {
     195:                     gtty(1, &ttys);
     196:                     ttysave = ttys.sg_flags;
     197:                 }
     198:                 ttys.sg_flags &= ~t.breset;
     199:                 ttys.sg_flags |= t.bset;
     200:                 stty(1, &ttys);
     201:             }
     202:             {
     203:             char *p = t.twinit;
     204:             while (*p++)
     205:                 ;
     206:             write(ptid, t.twinit, p-t.twinit-1);
     207:             }
     208: #endif
     209:         }
     210:         toolate += write(ptid, obuf, obufp-obuf);
     211:     }
     212:     obufp = obuf;
     213: }
     214: done(x) int x;{
     215:     register i;
     216:
     217:     error |= x;
     218:     level = 0;
     219:     app = ds = lgf = 0;
     220:     if(i=em){
     221:         donef = -1;
     222:         em = 0;
     223:         if(control(i,0))longjmp(sjbuf,1);
     224:     }
     225:     if(!nfo)done3(0);
     226:     mflg = 0;
     227:     dip = &d[0];
     228:     if(woff)wbt(0);
     229:     if(pendw)getword(1);
     230:     pendnf = 0;
     231:     if(donef == 1)done1(0);
     232:     donef = 1;
     233:     ip = 0;
     234:     frame = stk;
     235:     nxf = frame + 1;
     236:     if(!ejf)tbreak();
     237:     nflush++;
     238:     eject((struct s *)0);
     239:     longjmp(sjbuf,1);
     240: }
     241: done1(x) int x; {
     242:     error |= x;
     243:     if(v.nl){
     244:         trap = 0;
     245:         eject((struct s *)0);
     246:         longjmp(sjbuf,1);
     247:     }
     248:     if(nofeed){
     249:         ptlead();
     250:         flusho();
     251:         done3(0);
     252:     }else{
     253:         if(!gflag)lead += TRAILER;
     254:         done2(0);
     255:     }
     256: }
     257: done2(x) int x; {
     258:     register i;
     259:
     260:     ptlead();
     261: #ifndef NROFF
     262:     if(!ascii){
     263:         oput(T_INIT);
     264:         oput(T_STOP);
     265:         if(!gflag)for(i=8; i>0; i--)oput(T_PAD);
     266:         if(stopmesg)prstr("Troff finished.\n");
     267:     }
     268: #endif
     269:     flusho();
     270:     done3(x);
     271: }
     272: done3(x) int x;{
     273:     error |= x;
     274:     signal(SIGINT, SIG_IGN);
     275:     signal(SIGTERM, SIG_IGN);
     276:     unlink(unlkp);
     277: #ifdef NROFF
     278:     twdone();
     279: #endif
     280:     if(quiet){
     281:         ttys.sg_flags |= ECHO;
     282:         stty(0, &ttys);
     283:     }
     284:     if(ascii)mesg(1);
     285: #ifndef NROFF
     286:     report();
     287: #endif
     288:     exit(error);
     289: }
     290: edone(x) int x;{
     291:     frame = stk;
     292:     nxf = frame + 1;
     293:     ip = 0;
     294:     done(x);
     295: }
     296: #ifndef NROFF
     297: report(){
     298:     struct {int use; int uid;} a;
     299:
     300:     if((ptid != 1) && paper ){
     301:         lseek(acctf,0L,2);
     302:         a.use = paper;
     303:         a.uid = getuid();
     304:         write(acctf,(char *)&a,sizeof(a));
     305:         close(acctf);
     306:     }
     307: }
     308: #endif
     309: #ifdef NROFF
     310: casepi(){
     311:     register i;
     312:     int id[2];
     313:
     314:     if(toolate || skip() || !getname() || (pipe(id) == -1) ||
     315:        ((i=fork()) == -1)){
     316:         prstr("Pipe not created.\n");
     317:         return;
     318:     }
     319:     ptid = id[1];
     320:     if(i>0){
     321:         close(id[0]);
     322:         toolate++;
     323:         pipeflg++;
     324:         return;
     325:     }
     326:     close(0);
     327:     dup(id[0]);
     328:     close(id[1]);
     329:     execl(nextf,nextf,0);
     330:     prstr("Cannot exec: ");
     331:     prstr(nextf);
     332:     prstr("\n");
     333:     exit(-4);
     334: }
     335: #endif

#### Defined functions

casepi defined in line 310; used 2 times

- in /usr/src/usr.bin/roff/common_source/ni.c line 71, 169

done defined in line 214; used 10 times

- in line 294
- in /usr/src/usr.bin/roff/common_source/n1.c line 729, 785, 792, 886, 917
- in /usr/src/usr.bin/roff/common_source/ni.c line 68, 147
- in /usr/src/usr.bin/roff/troff/svt6.c line 511
- in /usr/src/usr.bin/roff/troff/t6.c line 522

done1 defined in line 241; used 3 times

- in line 231
- in /usr/src/usr.bin/roff/common_source/n7.c line 427, 486

done2 defined in line 257; used 9 times

- in line 254
- in /usr/src/usr.bin/roff/common_source/n3.c line 188, 335, 392
- in /usr/src/usr.bin/roff/common_source/n4.c line 159
- in /usr/src/usr.bin/roff/common_source/n5.c line 425, 823
- in /usr/src/usr.bin/roff/common_source/n7.c line 463
- in /usr/src/usr.bin/roff/troff/t10.c line 266

done3 defined in line 272; used 8 times

- in line 225, 251, 270
- in /usr/src/usr.bin/roff/common_source/n1.c line 252, 322, 330, 379, 953

edone defined in line 290; used 7 times

- in /usr/src/usr.bin/roff/common_source/n3.c line 190, 460, 580, 623
- in /usr/src/usr.bin/roff/common_source/n4.c line 159
- in /usr/src/usr.bin/roff/common_source/n5.c line 425, 448

flusho defined in line 181; used 15 times

- in line 174, 250, 269
- in /usr/src/usr.bin/roff/common_source/n1.c line 438, 910, 922
- in /usr/src/usr.bin/roff/common_source/n5.c line 406
- in /usr/src/usr.bin/roff/common_source/n7.c line 485
- in /usr/src/usr.bin/roff/nroff/n10.c line 78, 162, 260
- in /usr/src/usr.bin/roff/troff/t10.c line 214, 287, 299, 309

oput defined in line 170; used 34 times

- in line 131-135(2), 141, 161-164(4), 179, 263-265(3)
- in /usr/src/usr.bin/roff/common_source/n1.c line 921
- in /usr/src/usr.bin/roff/nroff/n10.c line 151-152(2), 158, 166, 187, 237
- in /usr/src/usr.bin/roff/troff/t10.c line 65-70(2), 199-205(3), 219, 241, 253, 260, 277, 300-308(6)

oputs defined in line 176; used 21 times

- in line 144-156(5)
- in /usr/src/usr.bin/roff/nroff/n10.c line 77, 101, 142-146(2), 157-160(2), 175, 186, 213-218(2), 225, 244-252(5)

pchar defined in line 78; used 10 times

- in /usr/src/usr.bin/roff/common_source/n1.c line 297
- in /usr/src/usr.bin/roff/common_source/n3.c line 650, 674-679(3)
- in /usr/src/usr.bin/roff/common_source/n7.c line 199, 205, 220, 239, 631

pchar1 defined in line 111; used 9 times

- in line 83, 109
- in /usr/src/usr.bin/roff/common_source/n7.c line 392-403(6), 419

report defined in line 297; used 2 times

- in line 286
- in /usr/src/usr.bin/roff/troff/t10.c line 313

#### Defined variables

error defined in line 73; used 5 times

- in line 217, 242, 273, 288
- in /usr/src/usr.bin/roff/common_source/n5.c line 425

sccsid defined in line 2; never used
toolate defined in line 72; used 5 times

- in line 190-191(2), 210, 314, 322

Last modified: 1982-08-05 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 2120 |