/* $MirOS: src/usr.bin/oldroff/hunt/hunt2.c,v 1.3 2008/11/08 23:04:30 tg Exp $ */ /*- * Copyright (c) 1979, 1980, 1981, 1986, 1988, 1990, 1991, 1992 * The Regents of the University of California. * Copyright (C) Caldera International Inc. 2001-2002. * Copyright (c) 2003, 2004, 2005 * Thorsten "mirabilos" Glaser * All rights reserved. * * Redistribution and use in source and binary forms, * with or without modification, are permitted provided * that the following conditions are met: * * Redistributions of source code and documentation must retain * the above copyright notice, this list of conditions and the * following disclaimer. Redistributions in binary form must * reproduce the above copyright notice, this list of conditions * and the following disclaimer in the documentation and/or other * materials provided with the distribution. * * All advertising materials mentioning features or use of this * software must display the following acknowledgement: * This product includes software developed or owned by * Caldera International, Inc. * * Neither the name of Caldera International, Inc. nor the names * of other contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA * INTERNATIONAL, INC. AND CONTRIBUTORS "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE * LIABLE FOR ANY DIRECT, INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef lint static char sccsid[] = "@(#)hunt2.c 4.6 (Berkeley) 4/18/91"; #endif /* not lint */ #include "refer..c" static int *coord = 0; int hh[50]; extern int *hfreq, hfrflg, hcomp(), hexch(); extern int prfreqs; doquery(hpt, nhash, fb, nitem, qitem, master) long *hpt; FILE *fb; char *qitem[]; unsigned *master; { union ptr { unsigned *a; long *b; } umaster; long k; union ptr prevdrop; int nf = 0, best = 0, nterm = 0, i, g, j; int *prevcoord; long lp; extern int lmaster, colevel, reached; long getl(); extern int iflong; # if D1 fprintf(stderr, "entering doquery nitem %d\n",nitem); fprintf(stderr, "first few hashes are %ld %ld %ld %ld %ld\n", hpt[0],hpt[1],hpt[2],hpt[3],hpt[4]); fprintf(stderr, "and frequencies are %d %d %d %d %d\n",hfreq[0],hfreq[1],hfreq[2],hfreq[3],hfreq[4]); # endif if (iflong) umaster.b = (long *) master; else umaster.a = master; assert (lmaster>0); if (coord==0) coord = (int *) zalloc(lmaster, sizeof(lmaster)); if (colevel>0) { if (iflong) prevdrop.b = (long *) zalloc(lmaster, sizeof(long)); else prevdrop.a = (unsigned *) zalloc(lmaster, sizeof(int)); prevcoord = (int *) zalloc(lmaster, sizeof(lmaster)); } else { prevdrop.a=umaster.a; prevcoord=coord; } # if D1 fprintf(stderr, "nitem %d\n",nitem); # endif for(i=0; i0) { for(j=0; j=nf) break; if (j= nterm) { if (iflong) umaster.b[g]=k; else umaster.a[g]=k; coord[g++] = 1; } } # if D1 fprintf(stderr,"now have %d items\n",g); # endif if (colevel>0) for ( ; j nterm) { assert(g0) { best=0; for(j=0; jbest) best = coord[j]; # if D1 fprintf(stderr, "colevel %d best %d\n", colevel, best); # endif reached = best; for(g=j=0; j