Bell 32V development
[unix-history] / usr / src / cmd / refer / inv5.c
CommitLineData
2b1a705e
TL
1# include "stdio.h"
2
3recopy (ft, fb, fa, nhash)
4 FILE *ft, *fb, *fa;
5{
6/* copy fb (old hash items/pointers) to ft (new ones) */
7int n, i, iflong;
8long getl();
9int getw();
10int *hpt_s;
11int (*getfun)();
12long *hpt_l;
13long k, lp;
14if (fa==NULL)
15 {
16 err("No old pointers",0);
17 return;
18 }
19fread(&n, sizeof(n), 1, fa);
20fread(&iflong, sizeof(iflong), 1, fa);
21if (iflong)
22 {
23 hpt_l = calloc(sizeof(*hpt_l), n+1);
24 n =fread(hpt_l, sizeof(*hpt_l), n, fa);
25 }
26else
27 {
28 hpt_s = calloc(sizeof(*hpt_s), n+1);
29 n =fread(hpt_s, sizeof(*hpt_s), n, fa);
30 }
31if (n!= nhash)
32 fprintf(stderr, "Changing hash value to old %d\n",n);
33fclose(fa);
34if (iflong)
35 getfun = getl;
36else
37 getfun = getw;
38for(i=0; i<n; i++)
39 {
40 if (iflong)
41 lp = hpt_l[i];
42 else
43 lp = hpt_s[i];
44 fseek(fb, lp, 0);
45 while ( (k= (*getfun)(fb) ) != -1)
46 fprintf(ft, "%04d %06ld\n",i,k);
47 }
48fclose(fb);
49return(n);
50}