1 /* $MirOS: src/usr.bin/oldroff/inv/inv5.c,v 1.2 2008/11/08 23:04:32 tg Exp $ */
2
3 /*-
4 * Copyright (c) 1979, 1980, 1981, 1986, 1988, 1990, 1991, 1992
5 * The Regents of the University of California.
6 * Copyright (C) Caldera International Inc. 2001-2002.
7 * Copyright (c) 2003, 2004
8 * Thorsten "mirabilos" Glaser <tg@mirbsd.org>
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms,
12 * with or without modification, are permitted provided
13 * that the following conditions are met:
14 *
15 * Redistributions of source code and documentation must retain
16 * the above copyright notice, this list of conditions and the
17 * following disclaimer. Redistributions in binary form must
18 * reproduce the above copyright notice, this list of conditions
19 * and the following disclaimer in the documentation and/or other
20 * materials provided with the distribution.
21 *
22 * All advertising materials mentioning features or use of this
23 * software must display the following acknowledgement:
24 * This product includes software developed or owned by
25 * Caldera International, Inc.
26 *
27 * Neither the name of Caldera International, Inc. nor the names
28 * of other contributors may be used to endorse or promote products
29 * derived from this software without specific prior written permission.
30 *
31 * USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
32 * INTERNATIONAL, INC. AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
33 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
35 * ARE DISCLAIMED. IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE
36 * LIABLE FOR ANY DIRECT, INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR
37 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
38 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
39 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
40 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
41 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
42 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
43 */
44
45 #ifndef lint
46 static char sccsid[] = "@(#)inv5.c 4.4 (Berkeley) 4/18/91";
47 #endif /* not lint */
48
49 #include <stdio.h>
50
recopy(ft,fb,fa,nhash)51 recopy (ft, fb, fa, nhash)
52 FILE *ft, *fb, *fa;
53 {
54 /* copy fb (old hash items/pointers) to ft (new ones) */
55 int n, i, iflong;
56 long getl();
57 int getw();
58 int *hpt_s;
59 long *hpt_l;
60 long k, lp;
61 if (fa==NULL)
62 {
63 err("No old pointers",0);
64 return;
65 }
66 fread(&n, sizeof(n), 1, fa);
67 fread(&iflong, sizeof(iflong), 1, fa);
68 if (iflong)
69 {
70 hpt_l = (long *) calloc(sizeof(*hpt_l), n+1);
71 n =fread(hpt_l, sizeof(*hpt_l), n, fa);
72 }
73 else
74 {
75 hpt_s = (int *) calloc(sizeof(*hpt_s), n+1);
76 n =fread(hpt_s, sizeof(*hpt_s), n, fa);
77 }
78 if (n!= nhash)
79 fprintf(stderr, "Changing hash value to old %d\n",n);
80 fclose(fa);
81 for(i=0; i<n; i++)
82 {
83 if (iflong) {
84 lp = hpt_l[i];
85 fseek(fb, lp, 0);
86 while ( (k= getl(fb) ) != -1)
87 fprintf(ft, "%04d %06ld\n",i,k);
88 } else {
89 lp = hpt_s[i];
90 fseek(fb, lp, 0);
91 while ( (k= getw(fb) ) != -1)
92 fprintf(ft, "%04d %06ld\n",i,k);
93 }
94 }
95 fclose(fb);
96 return(n);
97 }
98