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

Reply via email to