int searchword( pat, cd )
char *pat;
ControlDict cd;
{ int i, j, m, hi, lo;
extern int hits;
lo = -1; hi = K;
for( m=hi; m-lo > 1; ) {
j = (m+lo) / 2;
for( i=0; pat[i] != EOS && cd[j][i] != EOS &&
cd[j][i] == pat[i]; );
if( pat[i] != EOS && cd[j][i] 1; ) {
j = (hi+m) / 2;
for( i=0; pat[i] != EOS && cd[j][i] != EOS &&
cd[j][i] == pat[i]; );
if( pat[i] != EOS && cd[j][i] > pat[i] ) hi = j;
else m = j;
}
hits = hi-lo-1;
return( hits > 0 ? lo+1 : -1 );
}
|