aboutsummaryrefslogtreecommitdiffstats
path: root/capture_opts.h
diff options
context:
space:
mode:
authormorriss <morriss@f5534014-38df-0310-8fa8-9805f1628bb7>2007-08-22 16:30:16 +0000
committermorriss <morriss@f5534014-38df-0310-8fa8-9805f1628bb7>2007-08-22 16:30:16 +0000
commit94d4a3a89ddc2982d28b43465e0e85da638f8ff9 (patch)
tree2c5d954d066dd1bc7b7b81af5e15b2ebea283dcd /capture_opts.h
parent7e467dcdec10219e01ddc7e0806b9b190bc4d9e8 (diff)
Fix bug http://bugs.wireshark.org/bugzilla/show_bug.cgi?id=1757 :
Try to call get_interface_descriptive_name() as little as possible (storing the result in capture_opts) to avoid a performance hit during live capture (especially if you have lots of interfaces) and to avoid leaking memory. One issue with this is that capture_opts.c cannot (without adding significant dependencies) set the iface_descr so readers of that field (only gtk/main.c and tshark.c) use a macro to (set if not already set and) get the value of that field. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@22587 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'capture_opts.h')
-rw-r--r--capture_opts.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/capture_opts.h b/capture_opts.h
index 8d1d5600ea..fc0c92a16c 100644
--- a/capture_opts.h
+++ b/capture_opts.h
@@ -48,6 +48,12 @@ typedef struct capture_options_tag {
gboolean has_cfilter; /**< TRUE if capture filter specified on command line */
gchar *cfilter; /**< Capture filter string */
gchar *iface; /**< the network interface to capture from */
+ gchar *iface_descr; /**< A human readable description of iface.
+ *< NOTE: capture_opts.c is not able to
+ *< set this field because doing so
+ *< requires too many dependencies.
+ *< Readers of this field should use
+ *< GET_IFACE_DESCR to access it. */
#ifdef _WIN32
int buffer_size; /**< the capture buffer size (MB) */
@@ -99,6 +105,14 @@ typedef struct capture_options_tag {
gboolean output_to_pipe; /**< save_file is a pipe (named or stdout) */
} capture_options;
+/* Get iface_descr (and set it if it's not set already).
+ * It is assumed the caller includes capture_ui_utils.h (ugh, but what else
+ * can we do?)
+ */
+#define GET_IFACE_DESCR(capture_opts) capture_opts->iface_descr ? \
+ capture_opts->iface_descr : \
+ capture_opts->iface_descr = get_interface_descriptive_name(capture_opts->iface)
+
/* initialize the capture_options with some reasonable values */
extern void