optimization for normal masks requires keeping ptr to associated leaf,
[unix-history] / usr / src / usr.bin / spell / spellin.c
/*-
* Copyright (c) 1991, 1993
* The Regents of the University of California. All rights reserved.
*
* %sccs.include.proprietary.c%
*/
#ifndef lint
static char copyright[] =
"@(#) Copyright (c) 1991, 1993\n\
The Regents of the University of California. All rights reserved.\n";
#endif /* not lint */
#ifndef lint
static char sccsid[] = "@(#)spellin.c 8.1 (Berkeley) %G%";
#endif /* not lint */
#include "spell.h"
/* add entries to hash table for use by spell
preexisting hash table is first argument
words to be added are standard input
if no hash table is given, create one from scratch
*/
main(argc,argv)
int argc;
char **argv;
{
register i, j;
long h;
register long *lp;
char word[NW];
register char *wp;
if(!prime(argc,argv)) {
fprintf(stderr,
"spellin: cannot initialize hash table\n");
exit(1);
}
while (fgets(word, sizeof(word), stdin)) {
for (i=0; i<NP; i++) {
for (wp = word, h = 0, lp = pow2[i];
(j = *wp) != '\0'; ++wp, ++lp)
h += j * *lp;
h %= p[i];
set(h);
}
}
#ifdef gcos
freopen((char *)NULL, "wi", stdout);
#endif
if (fwrite((char *)tab, sizeof(*tab), TABSIZE, stdout) != TABSIZE) {
fprintf(stderr,
"spellin: trouble writing hash table\n");
exit(1);
}
return(0);
}