diff --git a/WEGA/contrib/ingres/dbs/src/eql/getkey.c b/WEGA/contrib/ingres/dbs/src/eql/getkey.c new file mode 100644 index 0000000..5993617 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/src/eql/getkey.c @@ -0,0 +1,50 @@ +# include +# include "gen.h" +# include "constants.h" +# include "globals.h" + +/* +** GETKEY -- Get the optab entry for a keyword +** +** Performs a binary search through Kwrdtab +** for a given keyword. +** +** Parameters: +** key -- char * to the keywords character +** representation. +** +** Returns: +** a pointer to the optab struct node for that +** keyword, or 0 if not found. +*/ +struct optab *getkey(key) +char *key; +{ + register struct optab *op; + register int k; + register int top; + register int bot; + + op = Kwrdtab; + bot = 0; + top = Kwrdnum - 1; + do + { + k = (top + bot) / 2; + switch (AAscompare(key, 0, op[k].op_term, 0)) + { + + case 1 : + bot = k + 1; + break; + + case 0 : + return (&op[k]); + + case -1 : + top = k - 1; + break; + } + } while (bot <= top); + return (0); +}