|
|
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, oc, 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: lim512(tfile);
39: sprintf(comm, "sort -fd %s -o %s", tfile, tfile);
40: system(comm);
41: }
42: fi = fopen(tfile, "r");
43: # if D1
44: fprintf(stderr, "reopened %s as %o\n",tfile,fi);
45: # endif
46: if (fi==NULL) return;
47: flout();
48: fprintf(ftemp,".]<\n");
49: while ( (c = getc(fi)) >=0)
50: {
51: if (c=='\n')
52: {
53: if (oc==sep) continue;
54: nr++;
55: g1 = 0;
56: }
57: oc=c;
58: if (c==sep)
59: c = '\n';
60: if (c== FLAG)
61: {
62: /* make old-new ref number table */
63: char tb[20];
64: int irr;
65: char *s = tb;
66: while ( (c=getc(fi)) != FLAG)
67: *s++ = c;
68: *s=0;
69: if (g1++ == 0)
70: {
71: irr = atoi(tb);
72: if (irr>=NRS)
73: err("too many references to renumber",0);
74: newr[irr]=nr;
75: }
76: # if D1
77: fprintf(stderr, "nr %d assigned to atoi(tb) %d\n",nr,irr);
78: # endif
79: if (!labels)
80: fprintf(ftemp,"%d", nr);
81: else
82: expkey (irr, nr, ftemp);
83: continue;
84: }
85: putc(c, ftemp);
86: }
87: fclose(fi);
88: # ifndef D1
89: unlink(tfile);
90: # endif
91: widelab();
92: fprintf(ftemp, ".]>\n");
93: }
94:
95: recopy (fnam)
96: char *fnam;
97: {
98: int c;
99: fclose(ftemp);
100: # if D1
101: fprintf(stderr, "recopy, fnam %s\n",fnam);
102: # endif
103:
104: ftemp = fopen(fnam, "r");
105: if (ftemp==NULL)
106: {
107: fprintf(stderr, "Can't reopen %s\n", fnam);
108: exit(1);
109: }
110: # if D1
111: fprintf(stderr, "open ok ftemp %o\n",ftemp);
112: # endif
113: while ( 1)
114: {
115: c = fgetc(ftemp);
116: # if D1
117: fprintf(stderr, "read char %o /%c/\n",c,c);
118: # endif
119: if (c == FLAG)
120: {
121: char tb[10];
122: char *s = tb;
123: int tbx;
124: while ( (c = getc(ftemp)) != FLAG && c != EOF)
125: *s++ = c;
126: *s=0;
127: tbx = atoi(tb);
128: # if D1
129: fprintf(stderr, "prelim number is %d\n",tbx);
130: # endif
131: if (!labels)
132: printf("%d", newr[tbx]);
133: else
134: expkey (tbx, newr[tbx], stdout);
135: continue;
136: }
137: if (c==EOF) break;
138: putchar(c);
139: }
140: # if D1
141: fprintf(stderr, "finished reading file \n");
142: # endif
143: fclose(ftemp);
144: unlink(fnam);
145: # if D1
146: fprintf(stderr, "leaving recopy\n");
147: # endif
148: }
149: lim512(tfile)
150: char *tfile;
151: {
152: /* this stupid program merely breaks up very long citations
153: into lines of 512 bytes */
154: FILE *f1, *f2;
155: char *zline, *p, *q;
156: extern char one[];
157: int ln, no;
158: zline=one;
159: f1 = fopen(tfile, "r");
160: f2 = fopen(tdfile, "w");
161: # ifdef D1
162: fprintf(stderr,"in lim512 %s is %o, %s is %o\n", tfile, f1, tdfile, f2);
163: # endif
164: while (fgets(zline, ANSLEN, f1))
165: {
166: if (strlen(zline)<512)
167: {
168: fputs(zline, f2);
169: continue;
170: }
171: no='a';
172: for(p=zline; *p!=sep; p++)
173: ;
174: *p++ = 0;
175: ln = 500 - strlen(zline);
176: while (strlen(p)>ln)
177: {
178: for(q=p+ln; q>p && *q!=sep; q--)
179: ;
180: *q++ = 0;
181: fprintf(f2, "%s%c%c%s%c\n",zline,no++,sep,p,sep);
182: p=q;
183: }
184: fprintf(f2, "%s%c%c%s", zline, no, sep, p);
185: }
186: fclose(f1); fclose(f2);
187: # ifdef D1
188: fprintf(stderr, "unlinking in lim512\n");
189: # endif
190: unlink(tfile); link(tdfile, tfile); unlink(tdfile);
191: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.