|
|
1.1 root 1: # include "refer..c"
2: # define NRS 500
3: int newr[NRS];
4: chkdup ( tag )
5: char *tag;
6: {
7: int i;
8: for(i=1; i<=refnum; i++)
9: {
10: if (strcmp(reftable[i], tag)==0)
11: return(i);
12: }
13: reftable[refnum+1] = rtp;
14: if (refnum>=NRFTBL)
15: err("too many references (%d) for table", refnum);
16: strcpy (rtp, tag);
17: while (*rtp++);
18: if (rtp > reftext + NRFTXT)
19: err("reftext too big (%d)", rtp-reftext);
20: return(0);
21: }
22: dumpold()
23: {
24: FILE *fi;
25: int c, g1 = 0, nr = 1;
26: if (!endpush) return;
27: fclose(fo);
28: # ifdef D1
29: fprintf(stderr, "closing %o\n",fo);
30: # endif
31: fo=NULL;
32: # if D1
33: fprintf(stderr, "dumpold for %s ftemp is %o stdout %o\n", tfile, ftemp, stdout);
34: # endif
35: if (sort)
36: {
37: char comm[100];
38: sprintf(comm, "sort -fd %s -o %s", tfile, tfile);
39: system(comm);
40: }
41: fi = fopen(tfile, "r");
42: # if D1
43: fprintf(stderr, "reopened %s as %o\n",tfile,fi);
44: # endif
45: if (fi==NULL) return;
46: flout();
47: fprintf(ftemp,".]<\n");
48: while ( (c = getc(fi)) >=0)
49: {
50: if (c=='\n')
51: {
52: nr++;
53: g1 = 0;
54: }
55: if (c==sep)
56: c = '\n';
57: if (c== FLAG)
58: {
59: /* make old-new ref number table */
60: char tb[20];
61: int irr;
62: char *s = tb;
63: while ( (c=getc(fi)) != FLAG)
64: *s++ = c;
65: *s=0;
66: if (g1++ == 0)
67: {
68: irr = atoi(tb);
69: if (irr>=NRS)
70: err("too many references to renumber",0);
71: newr[irr]=nr;
72: }
73: # if D1
74: fprintf(stderr, "nr %d assigned to atoi(tb) %d\n",nr,irr);
75: # endif
76: if (!labels)
77: fprintf(ftemp,"%d", nr);
78: else
79: expkey (irr, nr, ftemp);
80: continue;
81: }
82: putc(c, ftemp);
83: }
84: fclose(fi);
85: # ifndef D1
86: unlink(tfile);
87: # endif
88: widelab();
89: fprintf(ftemp, ".]>\n");
90: }
91:
92: recopy (fnam)
93: char *fnam;
94: {
95: int c;
96: fclose(ftemp);
97: # if D1
98: fprintf(stderr, "recopy, fnam %s\n",fnam);
99: # endif
100:
101: ftemp = fopen(fnam, "r");
102: if (ftemp==NULL)
103: {
104: fprintf(stderr, "Can't reopen %s\n", fnam);
105: exit(1);
106: }
107: # if D1
108: fprintf(stderr, "open ok ftemp %o\n",ftemp);
109: # endif
110: while ( 1)
111: {
112: c = fgetc(ftemp);
113: # if D1
114: fprintf(stderr, "read char %o /%c/\n",c,c);
115: # endif
116: if (c == FLAG)
117: {
118: char tb[10];
119: char *s = tb;
120: int tbx;
121: while ( (c = getc(ftemp)) != FLAG && c != EOF)
122: *s++ = c;
123: *s=0;
124: tbx = atoi(tb);
125: # if D1
126: fprintf(stderr, "prelim number is %d\n",tbx);
127: # endif
128: if (!labels)
129: printf("%d", newr[tbx]);
130: else
131: expkey (tbx, newr[tbx], stdout);
132: continue;
133: }
134: if (c==EOF) break;
135: putchar(c);
136: }
137: # if D1
138: fprintf(stderr, "finished reading file \n");
139: # endif
140: fclose(ftemp);
141: unlink(fnam);
142: # if D1
143: fprintf(stderr, "le&aving recopy\n");
144: # endif
145: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.