use the applications name (currently "ethereal" or "tethereal") in capture_opts, instead of hardcoded "ethereal" for both.

svn path=/trunk/; revision=13476
This commit is contained in:
Ulf Lamping 2005-02-23 08:34:12 +00:00
parent 105e5bd617
commit 72547c8d02
4 changed files with 33 additions and 75 deletions

View File

@ -93,7 +93,7 @@ extern void
capture_opts_init(capture_options *capture_opts, void *cfile);
extern void
capture_opt_add(capture_options *capture_opts, int opt, const char *optarg, gboolean *start_capture);
capture_opts_add_opt(capture_options *capture_opts, const char *appname, int opt, const char *optarg, gboolean *start_capture);
/**
* Open a specified file, or create a temporary file, and start a capture

View File

@ -81,25 +81,25 @@ capture_opts_init(capture_options *capture_opts, void *cfile)
}
static int
get_natural_int(const char *string, const char *name)
get_natural_int(const char *appname, const char *string, const char *name)
{
long number;
char *p;
number = strtol(string, &p, 10);
if (p == string || *p != '\0') {
fprintf(stderr, "ethereal: The specified %s \"%s\" isn't a decimal number\n",
name, string);
fprintf(stderr, "%s: The specified %s \"%s\" isn't a decimal number\n",
appname, name, string);
exit(1);
}
if (number < 0) {
fprintf(stderr, "ethereal: The specified %s \"%s\" is a negative number\n",
name, string);
fprintf(stderr, "%s: The specified %s \"%s\" is a negative number\n",
appname, name, string);
exit(1);
}
if (number > INT_MAX) {
fprintf(stderr, "ethereal: The specified %s \"%s\" is too large (greater than %d)\n",
name, string, INT_MAX);
fprintf(stderr, "%s: The specified %s \"%s\" is too large (greater than %d)\n",
appname, name, string, INT_MAX);
exit(1);
}
return number;
@ -107,15 +107,15 @@ get_natural_int(const char *string, const char *name)
static int
get_positive_int(const char *string, const char *name)
get_positive_int(const char *appname, const char *string, const char *name)
{
long number;
number = get_natural_int(string, name);
number = get_natural_int(appname, string, name);
if (number == 0) {
fprintf(stderr, "ethereal: The specified %s is zero\n",
name);
fprintf(stderr, "%s: The specified %s is zero\n",
appname, name);
exit(1);
}
@ -130,7 +130,7 @@ get_positive_int(const char *string, const char *name)
* in some fashion.
*/
static gboolean
set_autostop_criterion(capture_options *capture_opts, const char *autostoparg)
set_autostop_criterion(capture_options *capture_opts, const char *appname, const char *autostoparg)
{
gchar *p, *colonp;
@ -159,14 +159,14 @@ set_autostop_criterion(capture_options *capture_opts, const char *autostoparg)
}
if (strcmp(autostoparg,"duration") == 0) {
capture_opts->has_autostop_duration = TRUE;
capture_opts->autostop_duration = get_positive_int(p,"autostop duration");
capture_opts->autostop_duration = get_positive_int(appname, p,"autostop duration");
} else if (strcmp(autostoparg,"filesize") == 0) {
capture_opts->has_autostop_filesize = TRUE;
capture_opts->autostop_filesize = get_positive_int(p,"autostop filesize");
capture_opts->autostop_filesize = get_positive_int(appname, p,"autostop filesize");
} else if (strcmp(autostoparg,"files") == 0) {
capture_opts->multi_files_on = TRUE;
capture_opts->has_autostop_files = TRUE;
capture_opts->autostop_files = get_positive_int(p,"autostop files");
capture_opts->autostop_files = get_positive_int(appname, p,"autostop files");
} else {
return FALSE;
}
@ -181,7 +181,7 @@ set_autostop_criterion(capture_options *capture_opts, const char *autostoparg)
* in some fashion.
*/
static gboolean
get_ring_arguments(capture_options *capture_opts, const char *arg)
get_ring_arguments(capture_options *capture_opts, const char *appname, const char *arg)
{
gchar *p = NULL, *colonp;
@ -193,7 +193,7 @@ get_ring_arguments(capture_options *capture_opts, const char *arg)
}
capture_opts->ring_num_files =
get_natural_int(arg, "number of ring buffer files");
get_natural_int(appname, arg, "number of ring buffer files");
if (colonp == NULL)
return TRUE;
@ -216,7 +216,7 @@ get_ring_arguments(capture_options *capture_opts, const char *arg)
}
capture_opts->has_file_duration = TRUE;
capture_opts->file_duration = get_positive_int(p,
capture_opts->file_duration = get_positive_int(appname, p,
"ring buffer duration");
*colonp = ':'; /* put the colon back */
@ -225,7 +225,7 @@ get_ring_arguments(capture_options *capture_opts, const char *arg)
void
capture_opt_add(capture_options *capture_opts, int opt, const char *optarg, gboolean *start_capture)
capture_opts_add_opt(capture_options *capture_opts, const char *appname, int opt, const char *optarg, gboolean *start_capture)
{
#ifdef _WIN32
int i;
@ -233,22 +233,22 @@ capture_opt_add(capture_options *capture_opts, int opt, const char *optarg, gboo
switch(opt) {
case 'a': /* autostop criteria */
if (set_autostop_criterion(capture_opts, optarg) == FALSE) {
fprintf(stderr, "ethereal: Invalid or unknown -a flag \"%s\"\n", optarg);
if (set_autostop_criterion(capture_opts, appname, optarg) == FALSE) {
fprintf(stderr, "%s: Invalid or unknown -a flag \"%s\"\n", appname, optarg);
exit(1);
}
break;
case 'b': /* Ringbuffer option */
capture_opts->multi_files_on = TRUE;
capture_opts->has_ring_num_files = TRUE;
if (get_ring_arguments(capture_opts, optarg) == FALSE) {
fprintf(stderr, "ethereal: Invalid or unknown -b arg \"%s\"\n", optarg);
if (get_ring_arguments(capture_opts, appname, optarg) == FALSE) {
fprintf(stderr, "%s: Invalid or unknown -b arg \"%s\"\n", appname, optarg);
exit(1);
}
break;
case 'c': /* Capture xxx packets */
capture_opts->has_autostop_packets = TRUE;
capture_opts->autostop_packets = get_positive_int(optarg, "packet count");
capture_opts->autostop_packets = get_positive_int(appname, optarg, "packet count");
break;
case 'f': /* capture filter */
if (capture_opts->cfilter)
@ -274,7 +274,7 @@ capture_opt_add(capture_options *capture_opts, int opt, const char *optarg, gboo
break;
case 's': /* Set the snapshot (capture) length */
capture_opts->has_snaplen = TRUE;
capture_opts->snaplen = get_positive_int(optarg, "snapshot length");
capture_opts->snaplen = get_positive_int(appname, optarg, "snapshot length");
break;
case 'S': /* "Sync" mode: used for following file ala tail -f */
capture_opts->sync_mode = TRUE;
@ -289,8 +289,8 @@ capture_opt_add(capture_options *capture_opts, int opt, const char *optarg, gboo
#ifdef HAVE_PCAP_DATALINK_NAME_TO_VAL
capture_opts->linktype = pcap_datalink_name_to_val(optarg);
if (capture_opts->linktype == -1) {
fprintf(stderr, "ethereal: The specified data link type \"%s\" isn't valid\n",
optarg);
fprintf(stderr, "%s: The specified data link type \"%s\" isn't valid\n",
appname, optarg);
exit(1);
}
#else /* HAVE_PCAP_DATALINK_NAME_TO_VAL */
@ -304,7 +304,7 @@ capture_opt_add(capture_options *capture_opts, int opt, const char *optarg, gboo
/* associate stdout with pipe */
i = atoi(optarg);
if (dup2(i, 1) < 0) {
fprintf(stderr, "Unable to dup pipe handle\n");
fprintf(stderr, "%s: Unable to dup pipe handle\n", appname);
exit(1);
}
break;

View File

@ -1877,7 +1877,7 @@ main(int argc, char *argv[])
case 'Z': /* Write to pipe FD XXX */
#endif /* _WIN32 */
#ifdef HAVE_LIBPCAP
capture_opt_add(capture_opts, opt, optarg, &start_capture);
capture_opts_add_opt(capture_opts, "ethereal", opt, optarg, &start_capture);
#else
capture_option_specified = TRUE;
arg_error = TRUE;
@ -1888,7 +1888,7 @@ main(int argc, char *argv[])
* the error flags for the user in the non-libpcap case.
*/
case 'W': /* Write to capture file FD xxx */
capture_opt_add(capture_opts, opt, optarg, &start_capture);
capture_opts_add_opt(capture_opts, "ethereal", opt, optarg, &start_capture);
break;
#endif

View File

@ -169,51 +169,8 @@ typedef struct _loop_data {
static loop_data ld;
#ifdef HAVE_LIBPCAP
#if 0
typedef struct {
gchar *cfilter; /* Capture filter string */
gchar *iface; /* the network interface to capture from */
int snaplen; /* Maximum captured packet length */
int promisc_mode; /* Capture in promiscuous mode */
int autostop_packets; /* Maximum packet count */
gboolean has_autostop_duration; /* TRUE if maximum capture duration
is specified */
gint32 autostop_duration; /* Maximum capture duration */
gboolean has_autostop_filesize; /* TRUE if maximum capture file size
is specified */
gint32 autostop_filesize; /* Maximum capture file size */
gboolean multi_files_on; /* TRUE if ring buffer in use */
guint32 ring_num_files; /* Number of ring buffer files */
gboolean has_file_duration; /* TRUE if ring duration specified */
gint32 file_duration; /* Switch file after n seconds */
int linktype; /* Data link type to use, or -1 for
"use default" */
} capture_options;
static capture_options capture_opts = {
"", /* No capture filter string specified */
NULL, /* Default is "pick the first interface" */
WTAP_MAX_PACKET_SIZE, /* snapshot length - default is
infinite, in effect */
TRUE, /* promiscuous mode is the default */
0, /* max packet count - default is 0,
meaning infinite */
FALSE, /* maximum capture duration not
specified by default */
0, /* maximum capture duration */
FALSE, /* maximum capture file size not
specified by default */
0, /* maximum capture file size */
FALSE, /* ring buffer off by default */
RINGBUFFER_MIN_NUM_FILES, /* default number of ring buffer files */
FALSE, /* Switch ring file after some */
0, /* specified time is off by default */
-1 /* Default to not change link type */
};
#endif /* 0 */
static capture_options capture_opts;
static gboolean list_link_layer_types;
#ifdef SIGINFO
static gboolean infodelay; /* if TRUE, don't print capture info in SIGINFO handler */
@ -704,6 +661,7 @@ main(int argc, char *argv[])
char *p;
gchar err_str[PCAP_ERRBUF_SIZE];
gchar *cant_get_if_list_errstr;
gboolean list_link_layer_types;
#else
gboolean capture_option_specified = FALSE;
#endif
@ -846,7 +804,7 @@ main(int argc, char *argv[])
case 's': /* Set the snapshot (capture) length */
case 'y': /* Set the pcap data link type */
#ifdef HAVE_LIBPCAP
capture_opt_add(&capture_opts, opt, optarg, &start_capture);
capture_opts_add_opt(&capture_opts, "tethereal", opt, optarg, &start_capture);
#else
capture_option_specified = TRUE;
arg_error = TRUE;