Research V7 development
[unix-history] / usr / src / cmd / refer / refer7.c
CommitLineData
52960f2f
ML
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);
27fo=NULL;
28if (sort)
29 {
30 char comm[100];
31 sprintf(comm, "sort %s -o %s", tfile, tfile);
32 system(comm);
33 }
34fi = fopen(tfile, "r");
35if (fi==NULL) return;
36flout();
37fprintf(ftemp,".]<\n");
38while ( (c = getc(fi)) >0)
39 {
40 if (c=='\n')
41 {
42 nr++;
43 g1 = 0;
44 }
45 if (c==sep)
46 c = '\n';
47 if (c== FLAG)
48 {
49 /* make old-new ref number table */
50 char tb[20];
51 char *s tb;
52 while ( (c=getc(fi)) != FLAG)
53 *s++ = c;
54 *s=0;
55 if (g1++ == 0)
56 newr[atoi(tb)] = nr;
57# if D1
58 fprintf(stderr, "nr %d assigned to atoi(tb) %d\n",nr,atoi(tb));
59# endif
60 fprintf(ftemp,"%d", nr);
61 continue;
62 }
63 putc(c, ftemp);
64 }
65fclose(fi);
66# ifndef D1
67unlink(tfile);
68# endif
69fprintf(ftemp, ".]>\n");
70}
71
72recopy (fnam)
73 char *fnam;
74{
75int c;
76fclose(ftemp);
77
78ftemp = fopen(fnam, "r");
79if (ftemp==NULL)
80 {
81 fprintf(stderr, "Can't reopen %s\n", fnam);
82 exit(1);
83 }
84while ( (c = getc(ftemp)) != EOF)
85 {
86 if (c == FLAG)
87 {
88 char tb[10];
89 char *s tb;
90 while ( (c = getc(ftemp)) != FLAG)
91 *s++ = c;
92 *s=0;
93 printf("%d", newr[atoi(tb)]);
94 continue;
95 }
96 putchar(c);
97 }
98fclose(ftemp);
99unlink(fnam);
100}