# 2.11BSD#431 - /usr/src/ucb/pascal/pxp/yymain.c

##### Functions

    copyfile          X
    magic             X
    magic2            X
    writef            X
    yymain            X

##### Variables

    line              X

       1: #
       2: /*
       3:  * pi - Pascal interpreter code translator
       4:  *
       5:  * Steven Schultz GTE
       6:  * Version 1.2.1 October 1996
       7:  *
       8:  * Charles Haley, Bill Joy UCB
       9:  * Version 1.2 January 1979
      10:  *
      11:  *
      12:  * pxp - Pascal execution profiler
      13:  *
      14:  * Bill Joy UCB
      15:  * Version 1.2 January 1979
      16:  */
      17:
      18: #include "0.h"
      19: #include "yy.h"
      20:
      21: int line = 1;
      22:
      23: /*
      24:  * Yymain initializes each of the utility
      25:  * clusters and then starts the processing
      26:  * by calling yyparse.
      27:  */
      28: yymain()
      29: {
      30:
      31:     /*
      32: 	 * Initialize the scanner
      33: 	 */
      34: #ifdef PXP
      35:     if (bracket == 0) {
      36: #endif
      37:         if (getline() == -1) {
      38:             Perror(filename, "No lines in file");
      39:             pexit(NOSTART);
      40:         }
      41: #ifdef PXP
      42:     } else
      43:         yyline = 0;
      44: #endif
      45:
      46: #ifdef PI
      47:     magic();
      48:
      49: #endif
      50:     /*
      51: 	 * Initialize the clusters
      52: 	 *
      53: 	initstring();
      54: 	 */
      55:     inithash();
      56:     inittree();
      57: #ifdef PI
      58:     initnl();
      59: #endif
      60:
      61:     /*
      62: 	 * Process the input
      63: 	 */
      64:     yyparse();
      65: #ifdef PI
      66:     magic2();
      67: #ifdef DEBUG
      68:     dumpnl(0);
      69: #endif
      70: #endif
      71: #ifdef PXP
      72:     prttab();
      73:     if (onefile) {
      74:         extern int outcol;
      75:
      76:         if (outcol)
      77:             putchar('\n');
      78:         flush();
      79:         if (eflg) {
      80:             writef(2, "File not rewritten because of errors\n");
      81:             pexit(ERRS);
      82:         }
      83:         signal(1, 1);
      84:         signal(2, 1);
      85:         copyfile();
      86:     }
      87: #endif
      88:     pexit(eflg ? ERRS : AOK);
      89: }
      90:
      91: #ifdef PXP
      92: copyfile()
      93: {
      94:     extern int fout[];
      95:     register int c;
      96:
      97:     close(1);
      98:     if (creat(firstname, 0644) != 1) {
      99:         perror(firstname);
     100:         pexit(ERRS);
     101:     }
     102:     lseek(fout[0], (long)0, 0);
     103:     while ((c = read(fout[0], &fout[3], 512)) > 0) {
     104:         if (write(1, &fout[3], c) != c) {
     105:             perror(firstname);
     106:             pexit(ERRS);
     107:         }
     108:     }
     109: }
     110: #endif
     111:
     112: static
     113: struct {
     114:     int magic;
     115:     int txt_size;
     116:     int data_size;
     117: } header;
     118:
     119: #ifdef PI
     120: magic()
     121: {
     122:     int buf[512];
     123:     register int hf, i;
     124:
     125:     hf = open("/usr/share/pascal/npx_header", 0);
     126:     if (hf >= 0 && read(hf, buf, 1024) > 16) {
     127:         header.magic = buf[0];
     128:         header.txt_size = buf[1];
     129:         header.data_size = buf[2];
     130:         for (i = 0; i < 512; i++)
     131:             word(buf[i]);
     132:     }
     133:     close(hf);
     134:     word(0404);
     135: }
     136:
     137: magic2()
     138: {
     139:     int i;
     140:
     141:     if (header.magic != 0407)
     142:         return;
     143:     pflush();
     144:     lseek(ofil, (long)0, 0);
     145:     header.data_size = lc - header.txt_size;
     146:     header.data_size -= 16;
     147:     write(ofil, &header, sizeof header);
     148:     lseek(ofil, (long)1022, 0);
     149:     i = ((int) lc) - 1024;
     150:     write(ofil, &i, 2);
     151: }
     152: #endif
     153:
     154: #ifdef PXP
     155: writef(i, cp)
     156: {
     157:
     158:     write(i, cp, strlen(cp));
     159: }
     160: #endif

#### Defined functions

copyfile defined in line 92; used 1 times

- in line 85

magic defined in line 120; used 4 times

- in line 47, 114, 127, 141

magic2 defined in line 137; used 1 times

- in line 66

writef defined in line 155; used 1 times

- in line 80

yymain defined in line 28; used 1 times

- in /usr/src/ucb/pascal/pxp/main.c line 199

#### Defined variables

line defined in line 21; never used

Last modified: 1996-10-24 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 837 |