Add a comment.
[obnox/wireshark/wip.git] / prefs.c
diff --git a/prefs.c b/prefs.c
index 4afa481779ff2b527be42334118a9ed458664af2..f1556b835b0b84bef98199b6393a0bf851c7f442 100644 (file)
--- a/prefs.c
+++ b/prefs.c
@@ -1,7 +1,7 @@
 /* prefs.c
  * Routines for handling preferences
  *
- * $Id: prefs.c,v 1.16 1999/03/01 18:57:01 gram Exp $
+ * $Id: prefs.c,v 1.19 1999/07/13 02:52:57 gram Exp $
  *
  * Ethereal - Network traffic analyzer
  * By Gerald Combs <gerald@zing.org>
 #include <sys/types.h>
 #endif
 
+#ifdef HAVE_DIRECT_H
+#include <direct.h>
+#endif
+
 #include <gtk/gtk.h>
 
 #include <stdlib.h>
 #include <ctype.h>
 #include <errno.h>
+
+#ifdef HAVE_UNISTD_H
 #include <unistd.h>
+#endif
+
 #include <sys/stat.h>
 
 #include "ethereal.h"
@@ -139,7 +147,7 @@ prefs_cb(GtkWidget *w, gpointer sp) {
   gtk_widget_show(bbox);
   
   ok_bt = gtk_button_new_with_label ("OK");
-  gtk_signal_connect_object(GTK_OBJECT(ok_bt), "clicked",
+  gtk_signal_connect(GTK_OBJECT(ok_bt), "clicked",
     GTK_SIGNAL_FUNC(prefs_main_ok_cb), GTK_OBJECT(prefs_w));
   GTK_WIDGET_SET_FLAGS(ok_bt, GTK_CAN_DEFAULT);
   gtk_box_pack_start (GTK_BOX (bbox), ok_bt, TRUE, TRUE, 0);
@@ -147,14 +155,14 @@ prefs_cb(GtkWidget *w, gpointer sp) {
   gtk_widget_show(ok_bt);
 
   save_bt = gtk_button_new_with_label ("Save");
-  gtk_signal_connect_object(GTK_OBJECT(save_bt), "clicked",
+  gtk_signal_connect(GTK_OBJECT(save_bt), "clicked",
     GTK_SIGNAL_FUNC(prefs_main_save_cb), GTK_OBJECT(prefs_w));
   GTK_WIDGET_SET_FLAGS(save_bt, GTK_CAN_DEFAULT);
   gtk_box_pack_start (GTK_BOX (bbox), save_bt, TRUE, TRUE, 0);
   gtk_widget_show(save_bt);
   
   cancel_bt = gtk_button_new_with_label ("Cancel");
-  gtk_signal_connect_object(GTK_OBJECT(cancel_bt), "clicked",
+  gtk_signal_connect(GTK_OBJECT(cancel_bt), "clicked",
     GTK_SIGNAL_FUNC(prefs_main_cancel_cb), GTK_OBJECT(prefs_w));
   GTK_WIDGET_SET_FLAGS(cancel_bt, GTK_CAN_DEFAULT);
   gtk_box_pack_start (GTK_BOX (bbox), cancel_bt, TRUE, TRUE, 0);
@@ -164,38 +172,30 @@ prefs_cb(GtkWidget *w, gpointer sp) {
 }
 
 void
-prefs_main_ok_cb(GtkWidget *w, gpointer win) {
-
-#ifdef GTK_HAVE_FEATURES_1_1_0
-  win = w;
-#endif
-  printer_prefs_ok(gtk_object_get_data(GTK_OBJECT(win), E_PRINT_PAGE_KEY));
-  filter_prefs_ok(gtk_object_get_data(GTK_OBJECT(win), E_FILTER_PAGE_KEY));
-  column_prefs_ok(gtk_object_get_data(GTK_OBJECT(win), E_COLUMN_PAGE_KEY));
-  gtk_widget_destroy(GTK_WIDGET(win));
+prefs_main_ok_cb(GtkWidget *ok_bt, gpointer parent_w)
+{
+  printer_prefs_ok(gtk_object_get_data(GTK_OBJECT(parent_w), E_PRINT_PAGE_KEY));
+  filter_prefs_ok(gtk_object_get_data(GTK_OBJECT(parent_w), E_FILTER_PAGE_KEY));
+  column_prefs_ok(gtk_object_get_data(GTK_OBJECT(parent_w), E_COLUMN_PAGE_KEY));
+  gtk_widget_destroy(GTK_WIDGET(parent_w));
 }
 
 void
-prefs_main_save_cb(GtkWidget *w, gpointer win) {
-#ifdef GTK_HAVE_FEATURES_1_1_0
-  win = w;
-#endif
-  printer_prefs_save(gtk_object_get_data(GTK_OBJECT(win), E_PRINT_PAGE_KEY));
-  filter_prefs_save(gtk_object_get_data(GTK_OBJECT(win), E_FILTER_PAGE_KEY));
-  column_prefs_save(gtk_object_get_data(GTK_OBJECT(win), E_COLUMN_PAGE_KEY));
+prefs_main_save_cb(GtkWidget *save_bt, gpointer parent_w)
+{
+  printer_prefs_save(gtk_object_get_data(GTK_OBJECT(parent_w), E_PRINT_PAGE_KEY));
+  filter_prefs_save(gtk_object_get_data(GTK_OBJECT(parent_w), E_FILTER_PAGE_KEY));
+  column_prefs_save(gtk_object_get_data(GTK_OBJECT(parent_w), E_COLUMN_PAGE_KEY));
   write_prefs();
 }
 
 void
-prefs_main_cancel_cb(GtkWidget *w, gpointer win) {
-
-#ifdef GTK_HAVE_FEATURES_1_1_0
-  win = w;
-#endif
-  printer_prefs_cancel(gtk_object_get_data(GTK_OBJECT(win), E_PRINT_PAGE_KEY));
-  filter_prefs_cancel(gtk_object_get_data(GTK_OBJECT(win), E_FILTER_PAGE_KEY));
-  column_prefs_cancel(gtk_object_get_data(GTK_OBJECT(win), E_COLUMN_PAGE_KEY));
-  gtk_widget_destroy(GTK_WIDGET(win));
+prefs_main_cancel_cb(GtkWidget *cancel_bt, gpointer parent_w)
+{
+  printer_prefs_cancel(gtk_object_get_data(GTK_OBJECT(parent_w), E_PRINT_PAGE_KEY));
+  filter_prefs_cancel(gtk_object_get_data(GTK_OBJECT(parent_w), E_FILTER_PAGE_KEY));
+  column_prefs_cancel(gtk_object_get_data(GTK_OBJECT(parent_w), E_COLUMN_PAGE_KEY));
+  gtk_widget_destroy(GTK_WIDGET(parent_w));
 }
 
 /* Parse through a list of comma-separated, quoted strings.  Return a
@@ -274,7 +274,7 @@ print.file: /a/very/long/path/
 #define MAX_VAL_LEN  1024
 #define DEF_NUM_COLS    6
 e_prefs *
-read_prefs() {
+read_prefs(char **pf_path_return) {
   enum { START, IN_VAR, PRE_VAL, IN_VAL, IN_SKIP };
   FILE     *pf;
   gchar     cur_var[MAX_VAR_LEN], cur_val[MAX_VAL_LEN];
@@ -311,11 +311,10 @@ read_prefs() {
     sprintf(pf_path, "%s/%s/%s", getenv("HOME"), PF_DIR, PF_NAME);
   }
     
+  *pf_path_return = NULL;
   if ((pf = fopen(pf_path, "r")) == NULL) {
-    if (errno != ENOENT) {
-      simple_dialog(ESD_TYPE_WARN, NULL,
-        "Can't open preferences file\n\"%s\".", pf_path);
-    }
+    if (errno != ENOENT)
+      *pf_path_return = pf_path;
     return &prefs;
   }
     
@@ -493,7 +492,11 @@ write_prefs() {
 
   sprintf(pf_path, "%s/%s", getenv("HOME"), PF_DIR);
   if (stat(pf_path, &s_buf) != 0)
+#ifdef WIN32
+    mkdir(pf_path);
+#else
     mkdir(pf_path, 0755);
+#endif
 
   sprintf(pf_path, "%s/%s/%s", getenv("HOME"), PF_DIR, PF_NAME);
   if ((pf = fopen(pf_path, "w")) == NULL) {