home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / listings / v_02_06 / 2n06027a < prev    next >
Text File  |  1991-04-30  |  2KB  |  71 lines

  1. /* ----------------------------------------------------------
  2.  *  Turbo C++
  3.  * ------------------------------------------------------- */
  4.  
  5. #include <stdio.h>
  6. #include <string.h>
  7. #include <conio.h>
  8. #include <stdlib.h>
  9. #include "snooper.h"
  10.  
  11. #define  strequ(a,b)         (strcmp(a,b) == 0 ? 1 : 0)
  12.  
  13. /* ------------------------------------------------------- */
  14. static void print_help(DEBUG_ARGS *argtab)
  15. {
  16.    /* Print debug help messages ..... */
  17.     int i;
  18.  
  19.     for( i = 0; argtab[i].arg; i++ )
  20.             cprintf( "<%s>: %s\r\n",
  21.                        argtab[i].arg, argtab[i].help );
  22.     exit(0);
  23. }
  24.  
  25. static void findarg(const char *p, DEBUG_ARGS *argtab)
  26. {
  27.        /* Attempt to find p in argtab[]. If found, set
  28.         * corresponding variable to 1.
  29.         */
  30.  
  31.         register int i;
  32.  
  33.         for( i = 0; argtab[i].arg; i++ )    {
  34.                 if( strequ( argtab[i].arg, p ) )    {
  35.                         *(argtab[i].var) = 1;
  36.                         return ;        /* ok return */
  37.                 }
  38.         }
  39.  
  40.         cprintf( "\r\n'%s' argument not found\r\n", p );
  41.         exit(1);
  42. }
  43.  
  44. void d_getargs( int *argc, char **argv, DEBUG_ARGS *argtab)
  45. {
  46.     register int i, n;
  47.     char *p;
  48.  
  49.     for( n = 0; argv[n]; ) {
  50.         if( argv[n][0] == '+' ) {
  51.                /* process debugger argument ....... */
  52.                 p = &argv[n][1];
  53.  
  54.                 if( strequ( p, "help" ) )
  55.                         print_help(argtab);
  56.  
  57.                 findarg(p,argtab);
  58.  
  59.                /* Strip argument from argv[], update argc */
  60.                 *argc -= 1;
  61.  
  62.                 for( i = n; argv[i]; i++ )
  63.                         argv[i] = argv[i+1];
  64.         }
  65.         else
  66.                 ++n;
  67.     }
  68. }
  69.  
  70. /* ------------------------------------------------------- */
  71.