aboutsummaryrefslogtreecommitdiffstats
path: root/gtk
diff options
context:
space:
mode:
Diffstat (limited to 'gtk')
-rw-r--r--gtk/file_dlg.c24
-rw-r--r--gtk/main.c17
2 files changed, 16 insertions, 25 deletions
diff --git a/gtk/file_dlg.c b/gtk/file_dlg.c
index 908508d45b..afb59cb687 100644
--- a/gtk/file_dlg.c
+++ b/gtk/file_dlg.c
@@ -1,7 +1,7 @@
/* file_dlg.c
* Dialog boxes for handling files
*
- * $Id: file_dlg.c,v 1.124 2004/06/29 03:27:51 jmayer Exp $
+ * $Id: file_dlg.c,v 1.125 2004/06/29 20:59:23 ulfl Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -57,6 +57,7 @@
#include "range_utils.h"
#endif
#include "merge.h"
+#include "util.h"
static void file_open_ok_cb(GtkWidget *w, gpointer fs);
@@ -925,12 +926,13 @@ file_merge_cmd_cb(GtkWidget *widget, gpointer data _U_) {
static void
file_merge_ok_cb(GtkWidget *w, gpointer fs) {
gchar *cf_name, *rfilter, *s;
- gchar *cf_merged_name;
GtkWidget *filter_te, *rb;
dfilter_t *rfcode = NULL;
int err;
gboolean merge_ok;
char *in_filenames[2];
+ int out_fd;
+ char tmpname[128+1];
#if (GTK_MAJOR_VERSION == 2 && GTK_MINOR_VERSION >= 4) || GTK_MAJOR_VERSION > 2
cf_name = g_strdup(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(fs)));
@@ -956,8 +958,7 @@ file_merge_ok_cb(GtkWidget *w, gpointer fs) {
return;
}
- /*XXX should use temp file stuff in util routines? */
- cf_merged_name = g_strdup(tmpnam(NULL));
+ out_fd = create_tempfile(tmpname, sizeof tmpname, "ether");
/* merge or append the two files */
rb = OBJECT_GET_DATA(w, E_MERGE_CHRONO_KEY);
@@ -965,19 +966,19 @@ file_merge_ok_cb(GtkWidget *w, gpointer fs) {
/* chonological order */
in_filenames[0] = cfile.filename;
in_filenames[1] = cf_name;
- merge_ok = merge_n_files(cf_merged_name, 2, in_filenames, FALSE, &err);
+ merge_ok = merge_n_files(out_fd, 2, in_filenames, FALSE, &err);
} else {
rb = OBJECT_GET_DATA(w, E_MERGE_PREPEND_KEY);
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (rb))) {
/* prepend file */
in_filenames[0] = cfile.filename;
in_filenames[1] = cf_name;
- merge_ok = merge_n_files(cf_merged_name, 2, in_filenames, TRUE, &err);
+ merge_ok = merge_n_files(out_fd, 2, in_filenames, TRUE, &err);
} else {
/* append file */
in_filenames[0] = cf_name;
in_filenames[1] = cfile.filename;
- merge_ok = merge_n_files(cf_merged_name, 2, in_filenames, TRUE, &err);
+ merge_ok = merge_n_files(out_fd, 2, in_filenames, TRUE, &err);
}
}
@@ -990,7 +991,6 @@ file_merge_ok_cb(GtkWidget *w, gpointer fs) {
wtap_strerror(err));
if (rfcode != NULL)
dfilter_free(rfcode);
- g_free(cf_merged_name);
return;
}
@@ -1000,14 +1000,13 @@ file_merge_ok_cb(GtkWidget *w, gpointer fs) {
window_destroy(GTK_WIDGET (fs));
/* Try to open the merged capture file. */
- if ((err = cf_open(cf_merged_name, TRUE /* temporary file */, &cfile)) != 0) {
+ if ((err = cf_open(tmpname, TRUE /* temporary file */, &cfile)) != 0) {
/* We couldn't open it; don't dismiss the open dialog box,
just leave it around so that the user can, after they
dismiss the alert box popped up for the open error,
try again. */
if (rfcode != NULL)
dfilter_free(rfcode);
- g_free(cf_merged_name);
return;
}
@@ -1030,18 +1029,15 @@ file_merge_ok_cb(GtkWidget *w, gpointer fs) {
capture file has been closed - just free the capture file name
string and return (without changing the last containing
directory). */
- g_free(cf_merged_name);
return;
}
/* Save the name of the containing directory specified in the path name,
if any; we can write over cf_merged_name, which is a good thing, given that
"get_dirname()" does write over its argument. */
- s = get_dirname(cf_merged_name);
+ s = get_dirname(tmpname);
set_last_open_dir(s);
gtk_widget_grab_focus(packet_list);
-
- g_free(cf_merged_name);
}
static void
diff --git a/gtk/main.c b/gtk/main.c
index c83df15e93..592903b8c6 100644
--- a/gtk/main.c
+++ b/gtk/main.c
@@ -1,6 +1,6 @@
/* main.c
*
- * $Id: main.c,v 1.448 2004/06/29 03:27:51 jmayer Exp $
+ * $Id: main.c,v 1.449 2004/06/29 20:59:24 ulfl Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -1294,35 +1294,33 @@ dnd_uri2filename(gchar *cf_name)
static void
dnd_merge_files(int in_file_count, char **in_filenames)
{
- gchar *cf_merged_name;
+ int out_fd;
gboolean merge_ok;
int err;
+ char tmpname[128+1];
- /*XXX should use temp file stuff in util routines? */
- cf_merged_name = g_strdup(tmpnam(NULL));
+ out_fd = create_tempfile(tmpname, sizeof tmpname, "ether");
/* merge the files in chonological order */
- merge_ok = merge_n_files(cf_merged_name, in_file_count, in_filenames, FALSE, &err);
+ merge_ok = merge_n_files(out_fd, in_file_count, in_filenames, FALSE, &err);
if(!merge_ok) {
/* merge failed */
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
"An error occurred while merging the files: \"%s\".",
wtap_strerror(err));
- g_free(cf_merged_name);
return;
}
cf_close(&cfile);
/* Try to open the merged capture file. */
- if ((err = cf_open(cf_merged_name, TRUE /* temporary file */, &cfile)) != 0) {
+ if ((err = cf_open(tmpname, TRUE /* temporary file */, &cfile)) != 0) {
/* We couldn't open it; don't dismiss the open dialog box,
just leave it around so that the user can, after they
dismiss the alert box popped up for the open error,
try again. */
- g_free(cf_merged_name);
return;
}
@@ -1340,13 +1338,10 @@ dnd_merge_files(int in_file_count, char **in_filenames)
capture file has been closed - just free the capture file name
string and return (without changing the last containing
directory). */
- g_free(cf_merged_name);
return;
}
gtk_widget_grab_focus(packet_list);
-
- g_free(cf_merged_name);
}
/* open/merge the dnd file */