Author: colossus
Date: 2007-08-27 13:21:12 +0000 (Mon, 27 Aug 2007)
New Revision: 26020
Modified:
xarchiver/trunk/src/archive.c
xarchiver/trunk/src/archive.h
xarchiver/trunk/src/extract_dialog.c
xarchiver/trunk/src/interface.c
xarchiver/trunk/src/window.c
Log:
Fixed crash when closing an only one loaded archive of RPM type.
Modified: xarchiver/trunk/src/archive.c
===================================================================
--- xarchiver/trunk/src/archive.c 2007-08-26 19:26:50 UTC (rev 26019)
+++ xarchiver/trunk/src/archive.c 2007-08-27 13:21:12 UTC (rev 26020)
@@ -74,11 +74,14 @@
archive->error_output = NULL;
}
- ioc = g_io_channel_unix_new ( archive->output_fd );
- g_io_channel_set_encoding (ioc, NULL , NULL);
- g_io_channel_set_flags ( ioc , G_IO_FLAG_NONBLOCK , NULL );
+ if (archive->parse_output)
+ {
+ ioc = g_io_channel_unix_new (archive->output_fd);
+ g_io_channel_set_encoding (ioc, NULL , NULL);
+ g_io_channel_set_flags ( ioc , G_IO_FLAG_NONBLOCK , NULL );
+ }
- if ( archive->parse_output )
+ if (archive->parse_output)
{
g_io_add_watch (ioc,
G_IO_IN|G_IO_PRI|G_IO_ERR|G_IO_HUP|G_IO_NVAL, xa_process_output, archive);
g_child_watch_add ( archive->child_pid,
(GChildWatchFunc)xa_watch_child, archive);
@@ -198,7 +201,8 @@
if (archive->tmp != NULL)
{
- xa_delete_temp_directory (archive->tmp,1);
+ xa_delete_temp_directory (archive,0);
+ gtk_widget_hide(viewport2);
g_free (archive->tmp);
}
@@ -223,19 +227,16 @@
g_free (archive);
}
-gboolean xa_delete_temp_directory (gchar *dir_name,gboolean flag)
+gboolean xa_delete_temp_directory (XArchive *archive,gboolean flag)
{
gchar *command;
gboolean result;
- gint current_page;
- gint idx;
+
+ chdir (archive->tmp);
- current_page = gtk_notebook_get_current_page(notebook);
- idx = xa_find_archive_index (current_page);
+ command = g_strconcat ("rm -rf ",archive->tmp,NULL);
- chdir (dir_name);
- command = g_strconcat ("rm -rf ",dir_name,NULL);
- result = xa_run_command (archive[idx],command,flag );
+ result = xa_run_command (archive,command,flag );
g_free (command);
return result;
}
@@ -253,15 +254,15 @@
return TRUE;
}
-gboolean xa_run_command (XArchive *archive,gchar *command , gboolean
watch_child_flag)
+gboolean xa_run_command (XArchive *archive,gchar *command,gboolean
watch_child_flag)
{
int status;
gboolean waiting = TRUE;
int ps;
archive->parse_output = 0;
- xa_spawn_async_process ( archive,command,0);
- if ( archive->child_pid == 0 )
+ xa_spawn_async_process (archive,command,0);
+ if (archive->child_pid == 0)
return FALSE;
gtk_widget_show (viewport2);
Modified: xarchiver/trunk/src/archive.h
===================================================================
--- xarchiver/trunk/src/archive.h 2007-08-26 19:26:50 UTC (rev 26019)
+++ xarchiver/trunk/src/archive.h 2007-08-27 13:21:12 UTC (rev 26020)
@@ -120,7 +120,7 @@
void xa_clean_archive_structure ( XArchive *archive);
gboolean xa_dump_child_error_messages (GIOChannel *ioc, GIOCondition cond,
gpointer data);
gboolean xa_create_temp_directory (gchar tmp_dir[]);
-gboolean xa_delete_temp_directory (gchar *dir_name, gboolean flag);
+gboolean xa_delete_temp_directory (XArchive *archive,gboolean flag);
gboolean xa_run_command (XArchive *archive,gchar *command , gboolean
watch_child_flag);
gint xa_find_archive_index (gint page_num);
gint xa_get_new_archive_idx();
Modified: xarchiver/trunk/src/extract_dialog.c
===================================================================
--- xarchiver/trunk/src/extract_dialog.c 2007-08-26 19:26:50 UTC (rev
26019)
+++ xarchiver/trunk/src/extract_dialog.c 2007-08-27 13:21:12 UTC (rev
26020)
@@ -767,8 +767,8 @@
case XARCHIVETYPE_LHA:
command = g_strconcat ("lha ", archive->full_path ? "x"
: "xi",
-
archive->overwrite ? "f" : "", "w=",
-
path, " ", archive->escaped_path , files->str, NULL);
+
archive->overwrite ? "f" : "", "w=",
+
path, " ", archive->escaped_path , files->str, NULL);
break;
default:
@@ -778,7 +778,7 @@
return command;
}
-gboolean xa_extract_tar_without_directories ( gchar *string, XArchive
*archive, gchar *extract_path,gboolean cpio_flag)
+gboolean xa_extract_tar_without_directories (gchar *string, XArchive *archive,
gchar *extract_path,gboolean cpio_flag)
{
gchar *command = NULL;
gchar *name = NULL;
Modified: xarchiver/trunk/src/interface.c
===================================================================
--- xarchiver/trunk/src/interface.c 2007-08-26 19:26:50 UTC (rev 26019)
+++ xarchiver/trunk/src/interface.c 2007-08-27 13:21:12 UTC (rev 26020)
@@ -519,6 +519,7 @@
/* Let's set the location entry */
if (archive[id]->location_entry_path != NULL)
gtk_entry_set_text(GTK_ENTRY(location_entry),archive[id]->location_entry_path);
+
gtk_widget_grab_focus (GTK_WIDGET(archive[id]->treeview));
}
}
Modified: xarchiver/trunk/src/window.c
===================================================================
--- xarchiver/trunk/src/window.c 2007-08-26 19:26:50 UTC (rev 26019)
+++ xarchiver/trunk/src/window.c 2007-08-27 13:21:12 UTC (rev 26020)
@@ -195,7 +195,7 @@
archive[current_page] = xa_new_archive_dialog (NULL,archive,FALSE);
- if (archive[current_page] == NULL)
+ if (archive[current_page] == NULL)
return;
xa_add_page (archive[current_page]);
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits