1: /* $Header$ */
   2: 
   3: /*
   4:  * Author: Peter J. Nicklin
   5:  */
   6: #include "yesno.h"
   7: 
   8: static char **STRINGS;          /* pointer array containing strings */
   9: static int NSTRINGS;            /* number of strings in STRINGS */
  10: 
  11: /*
  12:  * bininit() initializes and sorts the STRINGS pointer array.
  13:  */
  14: void
  15: bininit(argc, argv)
  16:     int argc;
  17:     char **argv;
  18: {
  19:     int qsort();            /* quicker sort */
  20:     int strpcmp();          /* pointed-to string comparison */
  21: 
  22:     NSTRINGS = argc;
  23:     STRINGS = argv;
  24:     qsort((char *) STRINGS, NSTRINGS, sizeof(char *), strpcmp);
  25: }
  26: 
  27: 
  28: 
  29: /*
  30:  * binsearch() returns integer YES if string is found in sorted pointer
  31:  * array STRINGS, otherwise NO. Uses binary search.
  32:  */
  33: binsearch(string)
  34:     char *string;           /* string to be matched */
  35: {
  36:     int comp;           /* compare string values */
  37:     int high;           /* upper limit of array */
  38:     int low;            /* lower limit of array */
  39:     int mid;            /* middle of search range */
  40:     int strcmp();           /* string comparison */
  41: 
  42:     low = 0;
  43:     high = NSTRINGS - 1;
  44:     while (low <= high)
  45:         {
  46:         mid = (low+high) / 2;
  47:         if ((comp = strcmp(string, STRINGS[mid])) < 0)
  48:             high = mid - 1;
  49:         else if (comp > 0)
  50:             low = mid + 1;
  51:         else
  52:             return(YES);
  53:         }
  54:     return(NO);
  55: }
  56: 
  57: 
  58: 
  59: /*
  60:  * strpcmp() compares strings in a pointer array. Returns whatever strcmp()
  61:  * returns.
  62:  */
  63: static int
  64: strpcmp(s1, s2)
  65:     char **s1;
  66:     char **s2;
  67: {
  68:     int strcmp();           /* string comparison */
  69: 
  70:     return(strcmp(*s1, *s2));
  71: }

Defined functions

bininit defined in line 14; used 2 times
binsearch defined in line 33; used 2 times
strpcmp defined in line 63; used 2 times

Defined variables

NSTRINGS defined in line 9; used 3 times
STRINGS defined in line 8; used 3 times
Last modified: 1985-07-03
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 770
Valid CSS Valid XHTML 1.0 Strict