From c000931794c2af38e263a91b10836b59f50f1296 Mon Sep 17 00:00:00 2001 From: Tom London Date: Sun, 10 Dec 1978 19:37:24 -0500 Subject: [PATCH] Bell 32V development Work on file usr/src/cmd/look.c Co-Authored-By: John Reiser Synthesized-from: 32v --- usr/src/cmd/look.c | 162 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 usr/src/cmd/look.c diff --git a/usr/src/cmd/look.c b/usr/src/cmd/look.c new file mode 100644 index 0000000000..b2a9980581 --- /dev/null +++ b/usr/src/cmd/look.c @@ -0,0 +1,162 @@ +#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; + 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)