home *** CD-ROM | disk | FTP | other *** search
- # include "refer..c"
- int newr[250];
- chkdup ( tag )
- char *tag;
- {
- int i;
- for(i=1; i<=refnum; i++)
- {
- if (strcmp(reftable[i], tag)==0)
- return(i);
- }
- reftable[refnum+1] = rtp;
- if (refnum>=NRFTBL)
- err("too many references (%d) for table", refnum);
- strcpy (rtp, tag);
- while (*rtp++);
- if (rtp > reftext + NRFTXT)
- err("reftext too big (%d)", rtp-reftext);
- return(0);
- }
- dumpold()
- {
- FILE *fi;
- int c, g1 0, nr 1;
- if (!endpush) return;
- fclose(fo);
- fo=NULL;
- if (sort)
- {
- char comm[100];
- sprintf(comm, "sort %s -o %s", tfile, tfile);
- system(comm);
- }
- fi = fopen(tfile, "r");
- if (fi==NULL) return;
- flout();
- fprintf(ftemp,".]<\n");
- while ( (c = getc(fi)) >0)
- {
- if (c=='\n')
- {
- nr++;
- g1 = 0;
- }
- if (c==sep)
- c = '\n';
- if (c== FLAG)
- {
- /* make old-new ref number table */
- char tb[20];
- char *s tb;
- while ( (c=getc(fi)) != FLAG)
- *s++ = c;
- *s=0;
- if (g1++ == 0)
- newr[atoi(tb)] = nr;
- # if D1
- fprintf(stderr, "nr %d assigned to atoi(tb) %d\n",nr,atoi(tb));
- # endif
- fprintf(ftemp,"%d", nr);
- continue;
- }
- putc(c, ftemp);
- }
- fclose(fi);
- # ifndef D1
- unlink(tfile);
- # endif
- fprintf(ftemp, ".]>\n");
- }
-
- recopy (fnam)
- char *fnam;
- {
- int c;
- fclose(ftemp);
-
- ftemp = fopen(fnam, "r");
- if (ftemp==NULL)
- {
- fprintf(stderr, "Can't reopen %s\n", fnam);
- exit(1);
- }
- while ( (c = getc(ftemp)) != EOF)
- {
- if (c == FLAG)
- {
- char tb[10];
- char *s tb;
- while ( (c = getc(ftemp)) != FLAG)
- *s++ = c;
- *s=0;
- printf("%d", newr[atoi(tb)]);
- continue;
- }
- putchar(c);
- }
- fclose(ftemp);
- unlink(fnam);
- }
-