8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / cmd / refer / inv2.c
blob526b4852d0243440eeda50099ecbc1f78a07ad02
1 /*
2 * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
3 * Use is subject to license terms.
4 */
6 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
7 /* All Rights Reserved */
9 /*
10 * Copyright (c) 1980 Regents of the University of California.
11 * All rights reserved. The Berkeley software License Agreement
12 * specifies the terms and conditions for redistribution.
15 #pragma ident "%Z%%M% %I% %E% SMI"
17 #include <stdio.h>
18 #include <assert.h>
19 #define LINESIZ 1250
21 extern int hash();
23 int
24 newkeys(FILE *outf, FILE *inf, FILE *recf, int nhash, FILE *fd, int *iflong)
27 * reads key lines from inf; hashes and writes on outf;
28 * writes orig key on recf, records pointer on outf too.
29 * format of outf is : hash code space record pointer
32 long lp, ftell();
33 long ld = 0;
34 int ll = 0, lt = 0;
35 char line[LINESIZ];
36 char key[30], bkeys[40];
37 char *p, *s;
38 char *keyv[500];
39 int i, nk, ndoc = 0, more = 0, c;
41 lp = ftell(recf);
42 while (fgets(line, LINESIZ, inf)) {
43 p = line;
44 while (*p != '\t') p++;
45 *p++ = 0;
46 fputs(line, recf);
47 if (fd) {
48 sprintf(bkeys, ";%ld", ld);
49 ll = strlen(p);
50 lt = strlen(bkeys);
51 fputs(bkeys, recf);
52 sprintf(bkeys, ",%d", ll);
53 lt += strlen(bkeys);
54 fputs(bkeys, recf);
55 ld += ll;
56 fputs(p, fd);
58 putc('\n', recf);
59 for (s = p; *s; s++)
61 if (*--s == '\n') {
62 more = 0;
63 *s = 0;
64 } else
65 more = 1;
66 assert(fd == 0 || more == 0);
67 nk = getargs(p, keyv);
68 if (more)
69 nk--;
70 for (i = 0; i < nk; i++)
71 fprintf(outf, "%04d %06ld\n", hash(keyv[i])%nhash, lp);
72 #if D1
73 for (i = 0; i < nk; i++)
74 printf("key %s hash %d\n",
75 keyv[i], hash(keyv[i])%nhash);
76 #endif
77 if (more) { /* allow more than LINESIZ keys */
78 strcpy(key, keyv[nk]);
79 for (s = key; *s; s++)
81 while ((c = getc(inf)) != '\n') {
82 if (c != ' ') {
83 *s++ = c;
84 continue;
86 *s = 0;
87 if (s > key)
88 fprintf(outf, "%04d %06ld\n",
89 hash(key)%nhash, lp);
90 s = key;
93 lp += (strlen(line)+lt+1);
94 ndoc++;
96 *iflong = (lp >= 65536L);
97 if (sizeof (int) > 2) *iflong = 1; /* force long on VAX */
98 fclose(recf);
99 return (ndoc);
103 void
104 trimnl(char *p)
106 while (*p) p++;
107 p--;
108 if (*p == '\n') *p = 0;