[Xfce4-commits] r26020 - xarchiver/trunk/src

Giuseppe Torelli colossus at xfce.org
Mon Aug 27 15:21:12 CEST 2007


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]);



More information about the Xfce4-commits mailing list