xref: /csrg-svn/old/refer/inv/inv5.c (revision 12295)
1*12295Stut #ifndef lint
2*12295Stut static char *sccsid = "@(#)inv5.c	4.1 (Berkeley) 05/06/83";
3*12295Stut #endif
4*12295Stut 
5*12295Stut #include <stdio.h>
6*12295Stut 
7*12295Stut recopy (ft, fb, fa, nhash)
8*12295Stut FILE *ft, *fb, *fa;
9*12295Stut {
10*12295Stut 	/* copy fb (old hash items/pointers) to ft (new ones) */
11*12295Stut 	int n, i, iflong;
12*12295Stut 	long getl();
13*12295Stut 	int getw();
14*12295Stut 	int *hpt_s;
15*12295Stut 	int (*getfun)();
16*12295Stut 	long *hpt_l;
17*12295Stut 	long k, lp;
18*12295Stut 	if (fa==NULL)
19*12295Stut 	{
20*12295Stut 		err("No old pointers",0);
21*12295Stut 		return;
22*12295Stut 	}
23*12295Stut 	fread(&n, sizeof(n), 1, fa);
24*12295Stut 	fread(&iflong, sizeof(iflong), 1, fa);
25*12295Stut 	if (iflong)
26*12295Stut 	{
27*12295Stut 		hpt_l =  calloc(sizeof(*hpt_l), n+1);
28*12295Stut 		n =fread(hpt_l, sizeof(*hpt_l), n, fa);
29*12295Stut 	}
30*12295Stut 	else
31*12295Stut 	{
32*12295Stut 		hpt_s =  calloc(sizeof(*hpt_s), n+1);
33*12295Stut 		n =fread(hpt_s, sizeof(*hpt_s), n, fa);
34*12295Stut 	}
35*12295Stut 	if (n!= nhash)
36*12295Stut 		fprintf(stderr, "Changing hash value to old %d\n",n);
37*12295Stut 	fclose(fa);
38*12295Stut 	if (iflong)
39*12295Stut 		getfun = getl;
40*12295Stut 	else
41*12295Stut 		getfun = getw;
42*12295Stut 	for(i=0; i<n; i++)
43*12295Stut 	{
44*12295Stut 		if (iflong)
45*12295Stut 			lp = hpt_l[i];
46*12295Stut 		else
47*12295Stut 			lp = hpt_s[i];
48*12295Stut 		fseek(fb, lp, 0);
49*12295Stut 		while ( (k= (*getfun)(fb) ) != -1)
50*12295Stut 			fprintf(ft, "%04d %06ld\n",i,k);
51*12295Stut 	}
52*12295Stut 	fclose(fb);
53*12295Stut 	return(n);
54*12295Stut }
55