home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / mmdf / mmdf-IIb.43 / lib / util / cmdbsrch.c < prev    next >
Encoding:
C/C++ Source or Header  |  1986-10-02  |  756 b   |  38 lines

  1. #include "util.h"
  2. #include "cmd.h"
  3.  
  4. extern int errno;
  5.  
  6. cmdbsrch (str, argc, cmd, entries)        /* binary version of cmdsrch */
  7.     char *str;                  /* test string  */
  8.     int argc;                   /* number of available arguments        */
  9.     Cmd cmd[];                  /* table of known commands */
  10.     int entries;        /* size of cmd table */
  11. {
  12.     register int hi, lo, mid;
  13.     register int diff;
  14.  
  15.     hi = entries-1;
  16.     lo = 0;
  17.  
  18.     for (mid=(hi+lo)/2 ; hi >= lo; mid=(hi+lo)/2)
  19.     {
  20.     if ((diff = lexrel(str,cmd[mid].cmdname))==0)
  21.     {
  22.         if (argc < cmd[mid].cmdnargs)
  23.         {
  24.         errno = EINVAL;
  25.         return(NOTOK);
  26.         }
  27.         return(cmd[mid].cmdtoken);
  28.     }
  29.  
  30.     if (diff < 0)
  31.         hi = mid - 1;
  32.     else
  33.         lo = mid+1;
  34.     }
  35.  
  36.     return(NO);
  37. }
  38.