/* J. Dean Brock, 1998 Written for UNCA CSCI 343 Main user-level routine for searching the B+-tree Call as bsearch [-f btree-file] key */ #include #include #include #include #include #include "btree.h" #define DEFAULTBEG 0 #define DEFAULTEND -1 #define DEFAULTFILENAME "/usr/local/csci/343/testdata/prog02.bt" main(int argc, char *argv[]) { int rc ; int errflg = 0 ; char *filArg = NULL ; char *keyArg ; FILE *dbFile ; int valRes ; char usage[] = "bsearch [-f file-name] key\n" ; optarg = NULL ; while ((rc = getopt(argc, argv, "f:")) != -1) switch (rc) { case 'f': filArg = optarg ; break ; default: errflg = 1 ; } if (optind == argc-1) { keyArg = argv[optind] ; } else errflg = 1 ; if (errflg) { (void) fputs(usage, stderr) ; exit(1) ; } if (filArg == NULL) filArg = DEFAULTFILENAME ; if ((dbFile = fopen(filArg, "r")) == (FILE *)NULL) { (void) fprintf(stderr, "Unable to open %s\n", filArg) ; perror("fopen") ; exit(1) ; } if (btreeSearch(dbFile, keyArg, &valRes)) (void) fprintf(stdout, "Record for key %s has value %d\n", keyArg, valRes) ; else (void) fprintf(stdout, "No record found for key %s\n", keyArg) ; (void) fclose(dbFile) ; }