# 2.11BSD#431 - /usr/src/usr.bin/eqn/io.c

##### Functions

    eqn               X
    eqnexit           X
    error             X
    getline           X
    init              X
    inline            X
    main              X
    max               X
    nrwid             X
    oalloc            X
    ofree             X
    putout            X
    setfile           X
    setps             X
    yyerror           X

##### Variables

    in                X
    noeqn             X

##### Macros

    MAXLINE           X

       1: #ifndef lint
       2: static char sccsid[] = "@(#)io.c	4.4 9/3/83";
       3: #endif
       4:
       5: # include "e.h"
       6: #define MAXLINE 1200    /* maximum input line */
       7:
       8: char    in[MAXLINE];    /* input buffer */
       9: int eqnexit();
      10: int noeqn;
      11:
      12: main(argc,argv) int argc; char *argv[];{
      13:
      14:     eqnexit(eqn(argc, argv));
      15: }
      16:
      17: eqnexit(n) {
      18: #ifdef gcos
      19:     if (n)
      20:         fprintf(stderr, "run terminated due to eqn error\n");
      21:     exit(0);
      22: #endif
      23:     exit(n);
      24: }
      25:
      26: eqn(argc,argv) int argc; char *argv[];{
      27:     int i, type;
      28:
      29:     setfile(argc,argv);
      30:     init_tbl(); /* install keywords in tables */
      31:     while ((type=getline(in)) != EOF) {
      32:         eqline = linect;
      33:         if (in[0]=='.' && in[1]=='E' && in[2]=='Q') {
      34:             for (i=11; i<100; used[i++]=0);
      35:             printf("%s",in);
      36:             printf(".nr 99 \\n(.s\n.nr 98 \\n(.f\n");
      37:             markline = 0;
      38:             init();
      39:             yyparse();
      40:             if (eqnreg>0) {
      41:                 printf(".nr %d \\w'\\*(%d'\n", eqnreg, eqnreg);
      42:                 /* printf(".if \\n(%d>\\n(.l .tm too-long eqn, file %s, between lines %d-%d\n",	*/
      43:                 /*	eqnreg, svargv[ifile], eqline, linect);	*/
      44:                 printf(".nr MK %d\n", markline);    /* for -ms macros */
      45:                 printf(".if %d>\\n(.v .ne %du\n", eqnht, eqnht);
      46:                 printf(".rn %d 10\n", eqnreg);
      47:                 if(!noeqn)printf("\\*(10\n");
      48:             }
      49:             printf(".ps \\n(99\n.ft \\n(98\n");
      50:             printf(".EN");
      51:             if (lastchar == EOF) {
      52:                 putchar('\n');
      53:                 break;
      54:             }
      55:             if (putchar(lastchar) != '\n')
      56:                 while (putchar(gtc()) != '\n');
      57:         }
      58:         else if (type == lefteq)
      59:             inline();
      60:         else
      61:             printf("%s",in);
      62:     }
      63:     return(0);
      64: }
      65:
      66: getline(s) register char *s; {
      67:     register c;
      68:     while((*s++=c=gtc())!='\n' && c!=EOF && c!=lefteq)
      69:         if (s >= in+MAXLINE) {
      70:             error( !FATAL, "input line too long: %.20s\n", in);
      71:             in[MAXLINE] = '\0';
      72:             break;
      73:         }
      74:     if (c==lefteq)
      75:         s--;
      76:     *s++ = '\0';
      77:     return(c);
      78: }
      79:
      80: inline() {
      81:     int ds;
      82:
      83:     printf(".nr 99 \\n(.s\n.nr 98 \\n(.f\n");
      84:     ds = oalloc();
      85:     printf(".rm %d \n", ds);
      86:     do{
      87:         if (*in)
      88:             printf(".as %d \"%s\n", ds, in);
      89:         init();
      90:         yyparse();
      91:         if (eqnreg > 0) {
      92:             printf(".as %d \\*(%d\n", ds, eqnreg);
      93:             ofree(eqnreg);
      94:         }
      95:         printf(".ps \\n(99\n.ft \\n(98\n");
      96:     } while (getline(in) == lefteq);
      97:     if (*in)
      98:         printf(".as %d \"%s", ds, in);
      99:     printf(".ps \\n(99\n.ft \\n(98\n");
     100:     printf("\\*(%d\n", ds);
     101:     ofree(ds);
     102: }
     103:
     104: putout(p1) int p1; {
     105:     extern int gsize, gfont;
     106:     int before, after;
     107:     if(dbg)printf(".\tanswer <- S%d, h=%d,b=%d\n",p1, eht[p1], ebase[p1]);
     108:     eqnht = eht[p1];
     109:     printf(".ds %d \\x'0'", p1);
     110:     /* suppposed to leave room for a subscript or superscript */
     111: #ifndef NEQN
     112:     before = eht[p1] - ebase[p1] - VERT((ps*6*12)/10);
     113: #else NEQN
     114:     before = eht[p1] - ebase[p1] - VERT(3); /* 3 = 1.5 lines */
     115: #endif NEQN
     116:     if (before > 0)
     117:         printf("\\x'0-%du'", before);
     118:     printf("\\f%c\\s%d\\*(%d%s\\s\\n(99\\f\\n(98",
     119:         gfont, gsize, p1, rfont[p1] == ITAL ? "\\|" : "");
     120: #ifndef NEQN
     121:     after = ebase[p1] - VERT((ps*6*2)/10);
     122: #else NEQN
     123:     after = ebase[p1] - VERT(1);
     124: #endif NEQN
     125:     if (after > 0)
     126:         printf("\\x'%du'", after);
     127:     putchar('\n');
     128:     eqnreg = p1;
     129: }
     130:
     131: max(i,j) int i,j; {
     132:     return (i>j ? i : j);
     133: }
     134:
     135: oalloc() {
     136:     int i;
     137:     for (i=11; i<100; i++)
     138:         if (used[i]++ == 0) return(i);
     139:     error( FATAL, "no eqn strings left", i);
     140:     return(0);
     141: }
     142:
     143: ofree(n) int n; {
     144:     used[n] = 0;
     145: }
     146:
     147: setps(p) int p; {
     148:     printf(".ps %d\n", EFFPS(p));
     149: }
     150:
     151: nrwid(n1, p, n2) int n1, p, n2; {
     152:     printf(".nr %d \\w'\\s%d\\*(%d'\n", n1, EFFPS(p), n2);
     153: }
     154:
     155: setfile(argc, argv) int argc; char *argv[]; {
     156:     static char *nullstr = "-";
     157:
     158:     svargc = --argc;
     159:     svargv = argv;
     160:     while (svargc > 0 && svargv[1][0] == '-') {
     161:         switch (svargv[1][1]) {
     162:
     163:         case 'd': lefteq=svargv[1][2]; righteq=svargv[1][3]; break;
     164:         case 's': gsize = atoi(&svargv[1][2]); break;
     165:         case 'p': deltaps = atoi(&svargv[1][2]); break;
     166:         case 'f': gfont = svargv[1][2]; break;
     167:         case 'e': noeqn++; break;
     168:         case 0: goto endargs;
     169:         default: dbg = 1;
     170:         }
     171:         svargc--;
     172:         svargv++;
     173:     }
     174:   endargs:
     175:     ifile = 1;
     176:     linect = 1;
     177:     if (svargc <= 0) {
     178:         curfile = stdin;
     179:         svargv[1] = nullstr;
     180:     }
     181:     else
     182:         openinfile();   /* opens up the first input file */
     183: }
     184:
     185: yyerror() {;}
     186:
     187: init() {
     188:     ct = 0;
     189:     ps = gsize;
     190:     ft = gfont;
     191:     setps(ps);
     192:     printf(".ft %c\n", ft);
     193: }
     194:
     195: error(fatal, s1, s2) int fatal; char *s1, *s2; {
     196:     if (fatal>0)
     197:         printf("eqn fatal error: ");
     198:     printf(s1,s2);
     199:     printf("\nfile %s, between lines %d and %d\n",
     200:          svargv[ifile], eqline, linect);
     201:     fprintf(stderr, "eqn: ");
     202:     if (fatal>0)
     203:         fprintf(stderr, "fatal error: ");
     204:     fprintf(stderr, s1, s2);
     205:     fprintf(stderr, "\nfile %s, between lines %d and %d\n",
     206:          svargv[ifile], eqline, linect);
     207:     if (fatal > 0)
     208:         eqnexit(1);
     209: }

#### Defined functions

eqn defined in line 26; used 1 times

- in line 14

eqnexit defined in line 17; used 3 times

- in line 9-14(2), 208

error defined in line 195; used 16 times

- in line 70, 139
- in /usr/src/usr.bin/eqn/e.y line 24
- in /usr/src/usr.bin/eqn/funny.c line 22
- in /usr/src/usr.bin/eqn/lex.c line 45, 58, 93-98(2), 152, 181, 197, 211, 217, 223
- in /usr/src/usr.bin/eqn/lookup.c line 212
- in /usr/src/usr.bin/eqn/text.c line 46

getline defined in line 66; used 2 times

- in line 31, 96

init defined in line 187; used 2 times

- in line 38, 89

inline defined in line 80; used 1 times

- in line 59

main defined in line 12; never used
max defined in line 131; used 18 times

- in /usr/src/usr.bin/eqn/diacrit.c line 18-22(2), 31, 39
- in /usr/src/usr.bin/eqn/eqnbox.c line 12-13(2)
- in /usr/src/usr.bin/eqn/matrix.c line 35-36(2)
- in /usr/src/usr.bin/eqn/paren.c line 15
- in /usr/src/usr.bin/eqn/shift.c line 36-37(2), 61, 67, 131-135(5)

nrwid defined in line 151; used 14 times

- in /usr/src/usr.bin/eqn/diacrit.c line 17-21(2), 81
- in /usr/src/usr.bin/eqn/font.c line 43
- in /usr/src/usr.bin/eqn/fromto.c line 16-19(2), 25
- in /usr/src/usr.bin/eqn/over.c line 22-23(2)
- in /usr/src/usr.bin/eqn/pile.c line 38-41(2)
- in /usr/src/usr.bin/eqn/shift.c line 142, 149
- in /usr/src/usr.bin/eqn/sqrt.c line 21

oalloc defined in line 135; used 12 times

- in line 84
- in /usr/src/usr.bin/eqn/diacrit.c line 14-15(2)
- in /usr/src/usr.bin/eqn/fromto.c line 9
- in /usr/src/usr.bin/eqn/funny.c line 11
- in /usr/src/usr.bin/eqn/integral.c line 29
- in /usr/src/usr.bin/eqn/mark.c line 17
- in /usr/src/usr.bin/eqn/matrix.c line 53
- in /usr/src/usr.bin/eqn/over.c line 10
- in /usr/src/usr.bin/eqn/pile.c line 9
- in /usr/src/usr.bin/eqn/shift.c line 99
- in /usr/src/usr.bin/eqn/text.c line 21

ofree defined in line 143; used 16 times

- in line 93, 101
- in /usr/src/usr.bin/eqn/diacrit.c line 104(2)
- in /usr/src/usr.bin/eqn/eqnbox.c line 28
- in /usr/src/usr.bin/eqn/fromto.c line 50-52(3)
- in /usr/src/usr.bin/eqn/matrix.c line 62
- in /usr/src/usr.bin/eqn/over.c line 44-45(2)
- in /usr/src/usr.bin/eqn/pile.c line 72
- in /usr/src/usr.bin/eqn/shift.c line 84, 168(3)

putout defined in line 104; used 1 times

- in /usr/src/usr.bin/eqn/e.y line 23

setfile defined in line 155; used 1 times

- in line 29

setps defined in line 147; used 2 times

- in line 191
- in /usr/src/usr.bin/eqn/size.c line 44

yyerror defined in line 185; never used

#### Defined variables

in defined in line 8; used 14 times

- in line 31-35(5), 61, 69-71(3), 87-88(2), 96-98(3)

noeqn defined in line 10; used 2 times

- in line 47, 167

sccsid defined in line 2; never used

#### Defined macros

MAXLINE defined in line 6; used 3 times

- in line 8, 69-71(2)

Last modified: 1987-02-17 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 1405 |