Bell 32V development
[unix-history] / usr / src / cmd / refer / refer7.c
CommitLineData
2b1a705e
TL
1# include "refer..c"
2int newr[250];
3chkdup ( tag )
4 char *tag;
5{
6int i;
7for(i=1; i<=refnum; i++)
8 {
9 if (strcmp(reftable[i], tag)==0)
10 return(i);
11 }
12reftable[refnum+1] = rtp;
13if (refnum>=NRFTBL)
14 err("too many references (%d) for table", refnum);
15strcpy (rtp, tag);
16while (*rtp++);
17if (rtp > reftext + NRFTXT)
18 err("reftext too big (%d)", rtp-reftext);
19return(0);
20}
21dumpold()
22{
23FILE *fi;
24int c, g1 = 0, nr = 1;
25if (!endpush) return;
26fclose(fo);
27if (sort)
28 {
29 char comm[100];
30 sprintf(comm, "sort %s -o %s", tfile, tfile);
31 system(comm);
32 }
33fi = fopen(tfile, "r");
34if (fi==NULL) return;
35flout();
36fprintf(ftemp,".]<\n");
37while ( (c = getc(fi)) >0)
38 {
39 if (c=='\n')
40 {
41 nr++;
42 g1 = 0;
43 }
44 if (c==sep)
45 c = '\n';
46 if (c== FLAG)
47 {
48 /* make old-new ref number table */
49 char tb[20];
50 char *s = tb;
51 while ( (c=getc(fi)) != FLAG)
52 *s++ = c;
53 *s=0;
54 if (g1++ == 0)
55 newr[atoi(tb)] = nr;
56# if D1
57 fprintf(stderr, "nr %d assigned to atoi(tb) %d\n",nr,atoi(tb));
58# endif
59 fprintf(ftemp,"%d", nr);
60 continue;
61 }
62 putc(c, ftemp);
63 }
64fclose(fi);
65# ifndef D1
66unlink(tfile);
67# endif
68fprintf(ftemp, ".]>\n");
69}
70
71recopy (fnam)
72 char *fnam;
73{
74int c;
75fclose(ftemp);
76
77ftemp = fopen(fnam, "r");
78if (ftemp==NULL)
79 {
80 fprintf(stderr, "Can't reopen %s\n", fnam);
81 exit(1);
82 }
83while ( (c = getc(ftemp)) != EOF)
84 {
85 if (c == FLAG)
86 {
87 char tb[10];
88 char *s = tb;
89 while ( (c = getc(ftemp)) != FLAG)
90 *s++ = c;
91 *s=0;
92 printf("%d", newr[atoi(tb)]);
93 continue;
94 }
95 putchar(c);
96 }
97fclose(ftemp);
98unlink(fnam);
99}