Have the routine that handles dissection options not exit.

Have it return TRUE if the option is OK and FALSE if it isn't, and let
its caller exit as appropriate.

Also, rename it - it's not adding something to a collection, it's just
handling the option.

Change-Id: I41863cbb67b7c257d900d3011609891b9b4a7467
Reviewed-on: https://code.wireshark.org/review/18587
Reviewed-by: Guy Harris <guy@alum.mit.edu>
This commit is contained in:
Guy Harris 2016-10-30 17:37:10 -07:00
parent 45a023f3d0
commit 706c106634
4 changed files with 16 additions and 9 deletions

View File

@ -1315,7 +1315,8 @@ main(int argc, char *argv[])
case LONGOPT_DISABLE_PROTOCOL: /* disable dissection of protocol */
case LONGOPT_ENABLE_HEURISTIC: /* enable heuristic dissection of protocol */
case LONGOPT_DISABLE_HEURISTIC: /* disable heuristic dissection of protocol */
dissect_opts_add_opt(opt, optarg);
if (!dissect_opts_handle_opt(opt, optarg))
return 1;
break;
default:

View File

@ -580,7 +580,8 @@ void commandline_other_options(int argc, char *argv[], gboolean opt_reset)
case LONGOPT_DISABLE_PROTOCOL: /* disable dissection of protocol */
case LONGOPT_ENABLE_HEURISTIC: /* enable heuristic dissection of protocol */
case LONGOPT_DISABLE_HEURISTIC: /* disable heuristic dissection of protocol */
dissect_opts_add_opt(opt, optarg);
if (!dissect_opts_handle_opt(opt, optarg))
exit(1);
break;
case LONGOPT_FULL_SCREEN:
global_commandline_info.full_screen = TRUE;

View File

@ -52,13 +52,13 @@ dissect_opts_init(void)
global_dissect_options.disable_heur_slist = NULL;
}
void
dissect_opts_add_opt(int opt, char *optarg_str_p)
gboolean
dissect_opts_handle_opt(int opt, char *optarg_str_p)
{
switch(opt) {
case 'd': /* Decode as rule */
if (!decode_as_command_option(optarg_str_p))
exit(1);
return FALSE;
break;
case 't': /* Time stamp type */
if (strcmp(optarg_str_p, "r") == 0)
@ -93,7 +93,7 @@ dissect_opts_add_opt(int opt, char *optarg_str_p)
"\t\"u\" for absolute UTC\n"
"\t\"ud\" for absolute UTC with YYYY-MM-DD date\n"
"\t\"udoy\" for absolute UTC with YYYY/DOY date");
exit(1);
return FALSE;
}
break;
case LONGOPT_DISABLE_PROTOCOL: /* disable dissection of protocol */
@ -109,6 +109,7 @@ dissect_opts_add_opt(int opt, char *optarg_str_p)
/* the caller is responsible to send us only the right opt's */
g_assert_not_reached();
}
return TRUE;
}
/*

View File

@ -82,9 +82,13 @@ extern dissect_options global_dissect_options;
extern void
dissect_opts_init(void);
/* set a command line option value */
extern void
dissect_opts_add_opt(int opt, char *optarg_str_p);
/*
* Handle a command line option.
* Returns TRUE if the option is valid, FALSE if not; an error message
* is reported with cmdarg_err() if it's not valid.
*/
extern gboolean
dissect_opts_handle_opt(int opt, char *optarg_str_p);
#ifdef __cplusplus
}