static char *sccsid = "@(#)look.c 4.2 (Berkeley) 7/2/81"; #include #include FILE *dfile; char *filenam = "/usr/dict/words"; int fold; int dict; int tab; char entry[250]; char word[250]; char key[50]; main(argc,argv) char **argv; { register c; long top,bot,mid; long ftell(); while(argc>=2 && *argv[1]=='-') { for(;;) { switch(*++argv[1]) { case 'd': dict++; continue; case 'f': fold++; continue; case 't': tab = argv[1][1]; if(tab) ++argv[1]; continue; case 0: break; default: continue; } break; } argc --; argv++; } if(argc<=1) return; if(argc==2) { fold++; dict++; } else filenam = argv[2]; dfile = fopen(filenam,"r"); if(dfile==NULL) { fprintf(stderr,"look: can't open %s\n",filenam); exit(2); } canon(argv[1],key); bot = 0; fseek(dfile,0L,2); top = ftell(dfile); for(;;) { mid = (top+bot)/2; fseek(dfile,mid,0); do { c = getc(dfile); mid++; } while(c!=EOF && c!='\n'); if(!getword(entry)) break; canon(entry,word); switch(compare(key,word)) { case -2: case -1: case 0: if(top<=mid) break; top = mid; continue; case 1: case 2: bot = mid; continue; } break; } fseek(dfile,bot,0); while(ftell(dfile)