Include files from the "epan" directory and subdirectories thereof with
[obnox/wireshark/wip.git] / prefs.c
diff --git a/prefs.c b/prefs.c
index d0cf745757c707fc4a32e078254e9092a25ba407..c53092da5e0601b88e6cf720cb11437c19e4780d 100644 (file)
--- a/prefs.c
+++ b/prefs.c
@@ -1,7 +1,7 @@
 /* prefs.c
  * Routines for handling preferences
  *
- * $Id: prefs.c,v 1.75 2001/12/31 04:41:48 gerald Exp $
+ * $Id: prefs.c,v 1.80 2002/01/21 07:36:48 guy Exp $
  *
  * Ethereal - Network traffic analyzer
  * By Gerald Combs <gerald@ethereal.com>
 
 #include <glib.h>
 
-#include <filesystem.h>
+#include <epan/filesystem.h>
 #include "globals.h"
-#include "packet.h"
+#include <epan/resolv.h>
+#include <epan/packet.h>
 #include "file.h"
 #include "prefs.h"
-#include "proto.h"
+#include <epan/proto.h>
 #include "column.h"
 #include "print.h"
 
@@ -801,10 +802,11 @@ read_prefs(int *gpf_errno_return, char **gpf_path_return,
     prefs.gui_geometry_main_height   =        -1;
 
 /* set the default values for the capture dialog box */
+    prefs.capture_device      = NULL;
     prefs.capture_prom_mode   = TRUE;
     prefs.capture_real_time   = FALSE;
     prefs.capture_auto_scroll = FALSE;
-    prefs.name_resolve        = PREFS_RESOLV_ALL;
+    prefs.name_resolve        = RESOLV_ALL;
   }
 
   /* Construct the pathname of the global preferences file. */
@@ -1073,8 +1075,9 @@ prefs_set_pref(char *prefarg)
 #define PRS_CAP_NAME_RESOLVE "capture.name_resolve"
 
 /*  values for the capture dialog box */
-#define PRS_CAP_REAL_TIME "capture.real_time_update"
-#define PRS_CAP_PROM_MODE "capture.prom_mode"
+#define PRS_CAP_DEVICE      "capture.device"
+#define PRS_CAP_PROM_MODE   "capture.prom_mode"
+#define PRS_CAP_REAL_TIME   "capture.real_time_update"
 #define PRS_CAP_AUTO_SCROLL "capture.auto_scroll"
 
 #define RED_COMPONENT(x)   ((((x) >> 16) & 0xff) * 65535 / 255)
@@ -1090,9 +1093,9 @@ typedef struct {
 } name_resolve_opt_t;
 
 static name_resolve_opt_t name_resolve_opt[] = {
-  { 'm', PREFS_RESOLV_MAC },
-  { 'n', PREFS_RESOLV_NETWORK },
-  { 't', PREFS_RESOLV_TRANSPORT },
+  { 'm', RESOLV_MAC },
+  { 'n', RESOLV_NETWORK },
+  { 't', RESOLV_TRANSPORT },
 };
 
 #define N_NAME_RESOLVE_OPT     (sizeof name_resolve_opt / sizeof name_resolve_opt[0])
@@ -1105,7 +1108,7 @@ name_resolve_to_string(guint32 name_resolve)
   unsigned int i;
   gboolean all_opts_set = TRUE;
 
-  if (name_resolve == PREFS_RESOLV_NONE)
+  if (name_resolve == RESOLV_NONE)
     return "FALSE";
   p = &string[0];
   for (i = 0; i < N_NAME_RESOLVE_OPT; i++) {
@@ -1322,12 +1325,14 @@ set_pref(gchar *pref_name, gchar *value)
     prefs.gui_geometry_main_height = strtol(value, NULL, 10);
 
 /* handle the capture options */ 
+  } else if (strcmp(pref_name, PRS_CAP_DEVICE) == 0) {
+    if (prefs.capture_device != NULL)
+      g_free(prefs.capture_device);
+    prefs.capture_device = g_strdup(value);
   } else if (strcmp(pref_name, PRS_CAP_PROM_MODE) == 0) {
     prefs.capture_prom_mode = ((strcasecmp(value, "true") == 0)?TRUE:FALSE); 
   } else if (strcmp(pref_name, PRS_CAP_REAL_TIME) == 0) {
     prefs.capture_real_time = ((strcasecmp(value, "true") == 0)?TRUE:FALSE); 
-
   } else if (strcmp(pref_name, PRS_CAP_AUTO_SCROLL) == 0) {
     prefs.capture_auto_scroll = ((strcasecmp(value, "true") == 0)?TRUE:FALSE); 
  
@@ -1336,16 +1341,16 @@ set_pref(gchar *pref_name, gchar *value)
             strcmp(pref_name, PRS_CAP_NAME_RESOLVE) == 0) {
     /*
      * "TRUE" and "FALSE", for backwards compatibility, are synonyms for
-     * PREFS_RESOLV_ALL and PREFS_RESOLV_NONE.
+     * RESOLV_ALL and RESOLV_NONE.
      *
      * Otherwise, we treat it as a list of name types we want to resolve.
      */
     if (strcasecmp(value, "true") == 0)
-      prefs.name_resolve = PREFS_RESOLV_ALL;
+      prefs.name_resolve = RESOLV_ALL;
     else if (strcasecmp(value, "false") == 0)
-      prefs.name_resolve = PREFS_RESOLV_NONE;
+      prefs.name_resolve = RESOLV_NONE;
     else {
-      prefs.name_resolve = PREFS_RESOLV_NONE;  /* start out with none set */
+      prefs.name_resolve = RESOLV_NONE;        /* start out with none set */
       if (string_to_name_resolve(value, &prefs.name_resolve) != '\0')
         return PREFS_SET_SYNTAX_ERR;
     }
@@ -1442,6 +1447,20 @@ set_pref(gchar *pref_name, gchar *value)
           /* Otherwise it's from the command line, and we don't bother
              mapping it. */
        }
+      } else if (strncmp(pref_name, "smb.", 4) == 0) {
+        /* Handle old names for SMB preferences. */
+        if (strcmp(dotp, "smb.trans.reassembly") == 0)
+          pref = find_preference(module, "trans_reassembly");
+        else if (strcmp(dotp, "smb.dcerpc.reassembly") == 0)
+          pref = find_preference(module, "dcerpc_reassembly");
+      } else if (strncmp(pref_name, "ndmp.", 5) == 0) {
+        /* Handle old names for NDMP preferences. */
+        if (strcmp(dotp, "ndmp.desegment") == 0)
+          pref = find_preference(module, "desegment");
+      } else if (strncmp(pref_name, "diameter.", 9) == 0) {
+        /* Handle old names for Diameter preferences. */
+        if (strcmp(dotp, "diameter.desegment") == 0)
+          pref = find_preference(module, "desegment");
       }
     }
     if (pref == NULL)
@@ -1738,6 +1757,11 @@ write_prefs(const char **pf_path_return)
                  name_resolve_to_string(prefs.name_resolve));
 
 /* write the capture options */
+  if (prefs.capture_device != NULL) {
+    fprintf(pf, "\n# Default capture device\n");
+    fprintf(pf, PRS_CAP_DEVICE ": %s\n", prefs.capture_device);
+  }
+
   fprintf(pf, "\n# Capture in promiscuous mode? TRUE/FALSE\n");
   fprintf(pf, PRS_CAP_PROM_MODE ": %s\n",
                  prefs.capture_prom_mode == TRUE ? "TRUE" : "FALSE");
@@ -1801,6 +1825,7 @@ copy_prefs(e_prefs *dest, e_prefs *src)
   dest->gui_geometry_main_width = src->gui_geometry_main_width;
   dest->gui_geometry_main_height = src->gui_geometry_main_height;
 /*  values for the capture dialog box */
+  dest->capture_device = g_strdup(src->capture_device);
   dest->capture_prom_mode = src->capture_prom_mode;
   dest->capture_real_time = src->capture_real_time;
   dest->capture_auto_scroll = src->capture_auto_scroll;
@@ -1825,6 +1850,10 @@ free_prefs(e_prefs *pr)
     g_free(pr->gui_font_name);
     pr->gui_font_name = NULL;
   }
+  if (pr->capture_device != NULL) {
+    g_free(pr->capture_device);
+    pr->capture_device = NULL;
+  }
 }
 
 static void