Changeset 20 for trunk/src/sh_getopt.c


Ignore:
Timestamp:
Feb 13, 2006, 11:54:42 PM (19 years ago)
Author:
rainer
Message:

Enable command-line parsing for prelude, and make prelude regression test safer.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/sh_getopt.c

    r1 r20  
    4040#endif
    4141
    42 extern int      sh_calls_set_bind_addr (char *);
     42extern int      sh_calls_set_bind_addr (const char *);
    4343
    4444#undef  FIL__
     
    5656  char * usage;
    5757  int          hasArg;
    58   int (*func)(char * opt);
     58  int (*func)(const char * opt);
    5959} opttable_t;
    6060
    6161/*@noreturn@*/
    62 static int sh_getopt_usage (char * dummy);
     62static int sh_getopt_usage (const char * dummy);
    6363#if defined (SH_WITH_CLIENT) || defined (SH_STANDALONE)
    64 static int sh_getopt_forever (char * dummy);
    65 #endif
    66 static int sh_getopt_copyright (char * dummy);
     64static int sh_getopt_forever (const char * dummy);
     65#endif
     66static int sh_getopt_copyright (const char * dummy);
    6767
    6868static opttable_t op_table[] = {
     
    258258    HAS_ARG_NO,
    259259    sh_getopt_usage },
     260#if defined(HAVE_LIBPRELUDE) && defined(HAVE_LIBPRELUDE_9)
     261  /* need to skip over these */
     262  { N_("prelude"), 
     263    '-',
     264    N_("Prelude generic options"), 
     265    HAS_ARG_NO,
     266    NULL },
     267  { N_("profile"), 
     268    '-',
     269    N_("Profile to use for this analyzer"), 
     270    HAS_ARG_YES,
     271    NULL },
     272  { N_("heartbeat-interval"), 
     273    '-',
     274    N_("Number of seconds between two heartbeats"), 
     275    HAS_ARG_YES,
     276    NULL },
     277  { N_("server-addr"), 
     278    '-',
     279    N_("Address where this sensor should report to"), 
     280    HAS_ARG_YES,
     281    NULL },
     282  { N_("analyzer-name"), 
     283    '-',
     284    N_("Name for this analyzer"), 
     285    HAS_ARG_YES,
     286    NULL },
     287#endif
    260288  /* last entry -- required !! -- */
    261289  { NULL,
     
    266294};
    267295
    268 static int sh_getopt_copyright (char * dummy)
     296static int sh_getopt_copyright (const char * dummy)
    269297{
    270298  fprintf (stdout,
     
    331359
    332360/*@noreturn@*/
    333 static int sh_getopt_usage (char * dummy)
     361static int sh_getopt_usage (const char * dummy)
    334362{
    335363  int  i;
     
    413441
    414442#if defined (SH_WITH_CLIENT) || defined (SH_STANDALONE)
    415 static int sh_getopt_forever (char * dummy)
     443static int sh_getopt_forever (const char * dummy)
    416444{
    417445  dummy = (void *) dummy;
     
    489517                              /* call function with argument */
    490518                              --argc; ++argv;
    491                               if (0 != (* op_table[i].func )(argv[1]))
     519                              if (NULL != op_table[i].func &&
     520                                  0 != (* op_table[i].func )(argv[1]))
    492521                                fprintf (stderr,
    493522                                         _("Error processing option -%c"),
     
    498527                      else
    499528                        {
    500                           if (0 != (* op_table[i].func )(NULL))
     529                          if (NULL != op_table[i].func &&
     530                              0 != (* op_table[i].func )(NULL))
    501531                            fprintf (stderr,
    502532                                     _("Error processing option -%c"),
     
    540570                      if ( (theequal = strchr(argv[1], '=')) == NULL)
    541571                        {
    542                           fprintf (stderr, _("Error: missing argument\n"));
    543                           /* argument required, but no avail */
    544                           (void) sh_getopt_usage(_("fail"));
     572                          if (argc < 3)
     573                            {
     574                              /* argument required, but no avail
     575                               */
     576                              fprintf (stderr, _("Error: missing argument\n"));
     577                              (void) sh_getopt_usage(_("fail"));
     578                            }
     579                          else
     580                            {
     581                              /* call function with argument */
     582                              --argc; ++argv;
     583                              if (NULL != op_table[i].func &&
     584                                  0 != (* op_table[i].func )(argv[1]))
     585                                fprintf (stderr,
     586                                         _("Error processing option -%s"),
     587                                         op_table[i].longopt);
     588                              break;
     589                            }
    545590                        }
    546591                      else
     
    550595                              ++theequal;
    551596                              /* call function with argument */
    552                               if (0 != (* op_table[i].func )(theequal))
     597                              if (NULL != op_table[i].func &&
     598                                  0 != (* op_table[i].func )(theequal))
    553599                                fprintf (stderr,
    554600                                         _("Error processing option -%s"),
     
    566612                  else
    567613                    {
    568                       if (0 != (* op_table[i].func )(NULL))
     614                      if (NULL != op_table[i].func &&
     615                          0 != (* op_table[i].func )(NULL))
    569616                        fprintf (stderr,
    570617                                 _("Error processing option -%s"),
Note: See TracChangeset for help on using the changeset viewer.