diff options
author | Guy Harris <guy@alum.mit.edu> | 2016-06-19 16:36:57 -0700 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2016-06-19 23:37:08 +0000 |
commit | e79e834ecf8b62d50817a48f9aa56a67930517c1 (patch) | |
tree | 499207e7552f4ebcd2870648289468aa6517aca9 /ui/commandline.c | |
parent | fb9a7d43cde773a0f006db580c5907dd2c4a4d98 (diff) | |
download | wireshark-e79e834ecf8b62d50817a48f9aa56a67930517c1.tar.gz |
Move some option checking to common code.
Change-Id: Icff9dacd73ea933c59ed664db05098dd8cb3dbf5
Reviewed-on: https://code.wireshark.org/review/16029
Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'ui/commandline.c')
-rw-r--r-- | ui/commandline.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/ui/commandline.c b/ui/commandline.c index a7a164c0fb..38c6f386e8 100644 --- a/ui/commandline.c +++ b/ui/commandline.c @@ -652,6 +652,54 @@ void commandline_other_options(int argc, char *argv[], commandline_param_info_t* commandline_print_usage(FALSE); exit(1); } + + if (param_info->start_capture && param_info->list_link_layer_types) { + /* Specifying *both* is bogus. */ + cmdarg_err("You can't specify both -L and a live capture."); + exit(1); + } + + if (param_info->list_link_layer_types) { + /* We're supposed to list the link-layer types for an interface; + did the user also specify a capture file to be read? */ + if (param_info->cf_name) { + /* Yes - that's bogus. */ + cmdarg_err("You can't specify -L and a capture file to be read."); + exit(1); + } + /* No - did they specify a ring buffer option? */ + if (global_capture_opts.multi_files_on) { + cmdarg_err("Ring buffer requested, but a capture isn't being done."); + exit(1); + } + } else { + /* We're supposed to do a live capture; did the user also specify + a capture file to be read? */ + if (param_info->start_capture && param_info->cf_name) { + /* Yes - that's bogus. */ + cmdarg_err("You can't specify both a live capture and a capture file to be read."); + exit(1); + } + + /* No - was the ring buffer option specified and, if so, does it make + sense? */ + if (global_capture_opts.multi_files_on) { + /* Ring buffer works only under certain conditions: + a) ring buffer does not work with temporary files; + b) real_time_mode and multi_files_on are mutually exclusive - + real_time_mode takes precedence; + c) it makes no sense to enable the ring buffer if the maximum + file size is set to "infinite". */ + if (global_capture_opts.save_file == NULL) { + cmdarg_err("Ring buffer requested, but capture isn't being saved to a permanent file."); + global_capture_opts.multi_files_on = FALSE; + } + if (!global_capture_opts.has_autostop_filesize && !global_capture_opts.has_file_duration) { + cmdarg_err("Ring buffer requested, but no maximum capture file size or duration were specified."); + /* XXX - this must be redesigned as the conditions changed */ + } + } + } } /* |