[Xfce4-commits] r23563 - in xarchiver/branches/xarchiver-psybsd: libxarchiver src

Stephan Arts stephan at xfce.org
Mon Oct 30 22:23:46 CET 2006


Author: stephan
Date: 2006-10-30 21:23:41 +0000 (Mon, 30 Oct 2006)
New Revision: 23563

Modified:
   xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-zip.c
   xarchiver/branches/xarchiver-psybsd/libxarchiver/internals.c
   xarchiver/branches/xarchiver-psybsd/src/archive_store.c
   xarchiver/branches/xarchiver-psybsd/src/archive_store.h
   xarchiver/branches/xarchiver-psybsd/src/extract_dialog.c
   xarchiver/branches/xarchiver-psybsd/src/main_window.c
Log:
Fixed PathBar (does not segfault app anylonger)
Fixed extract of selected files with zip


Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-zip.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-zip.c	2006-10-30 19:29:48 UTC (rev 23562)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-zip.c	2006-10-30 21:23:41 UTC (rev 23563)
@@ -239,7 +239,7 @@
 			if(!g_strcasecmp((gchar *)lxa_mime_info_get_name(archive->mime_info), "application/x-zip") || 
 		     !g_strcasecmp((gchar *)lxa_mime_info_get_name(archive->mime_info), "application/zip"))
 			{
-				command = g_strconcat("unzip -o ", archive->path, " -d ", dest_path, " ", files, NULL);
+				command = g_strconcat("unzip -o ", archive->path, " ", files, " -d ", dest_path, NULL);
 				g_debug("Extracting archive '%s' to '%s'", archive->path, dest_path);
 				lxa_execute(command, archive, NULL, NULL, NULL, NULL);
 			}	

Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/internals.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/internals.c	2006-10-30 19:29:48 UTC (rev 23562)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/internals.c	2006-10-30 21:23:41 UTC (rev 23563)
@@ -161,7 +161,7 @@
 	while(_filenames)
 	{
 		_concat_str = concat_str;
-		concat_str = g_strconcat(concat_str, " \"", _filenames->data,"\"",  NULL);
+		concat_str = g_strconcat(concat_str, g_shell_quote(_filenames->data) , NULL);
 		_filenames = _filenames->next;
 		LXA_FREE(_concat_str);
 	}

Modified: xarchiver/branches/xarchiver-psybsd/src/archive_store.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/archive_store.c	2006-10-30 19:29:48 UTC (rev 23562)
+++ xarchiver/branches/xarchiver-psybsd/src/archive_store.c	2006-10-30 21:23:41 UTC (rev 23563)
@@ -1181,7 +1181,7 @@
 {
 	g_return_val_if_fail(store, NULL);
 
-	GValue basename;
+	GValue *basename = g_new0(GValue, 1);
 	GSList *iter = store->current_entry;
 	GSList *path = NULL;
 
@@ -1191,12 +1191,14 @@
 	/* we don't want to include de archive rootentry */
 	while(iter->next)
 	{
-		lxa_archive_iter_get_prop_value(store->archive, (LXAArchiveIter*)iter->data, LXA_ARCHIVE_PROP_FILENAME, &basename);
-		path = g_slist_prepend(path, g_value_dup_string(&basename));
-		g_value_unset(&basename);
+		lxa_archive_iter_get_prop_value(store->archive, (LXAArchiveIter*)iter->data, LXA_ARCHIVE_PROP_FILENAME, basename);
+		path = g_slist_prepend(path, g_value_dup_string(basename));
+		g_value_unset(basename);
 		iter = iter->next;
 	}
 
+	g_free(basename);
+
 	return path;
 }
 
@@ -1327,3 +1329,18 @@
 		xa_archive_store_refresh(store, prev_size);
 	}
 }
+
+gchar *
+xa_archive_store_get_filename(XAArchiveStore *store, GtkTreeIter *iter)
+{
+	LXAArchiveIter *entry = iter->user_data;
+
+	GValue *value = g_new0(GValue, 1);
+	
+	lxa_archive_iter_get_prop_value(store->archive, entry, LXA_ARCHIVE_PROP_FILENAME, value);
+
+	if(lxa_archive_iter_is_directory(store->archive, entry))
+		return g_strconcat(g_value_get_string(value), "/", NULL);
+	else
+		return g_value_dup_string(value);
+}

Modified: xarchiver/branches/xarchiver-psybsd/src/archive_store.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/archive_store.h	2006-10-30 19:29:48 UTC (rev 23562)
+++ xarchiver/branches/xarchiver-psybsd/src/archive_store.h	2006-10-30 21:23:41 UTC (rev 23563)
@@ -97,4 +97,6 @@
 void xa_archive_store_set_sort_case_sensitive(XAArchiveStore *, gboolean);
 void xa_archive_store_set_sort_folders_first(XAArchiveStore *, gboolean);
 
+gchar *
+xa_archive_store_get_filename(XAArchiveStore *store, GtkTreeIter *iter);
 #endif /* __XARCHIVER_ARCHIVE_STORE_H__ */

Modified: xarchiver/branches/xarchiver-psybsd/src/extract_dialog.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/extract_dialog.c	2006-10-30 19:29:48 UTC (rev 23562)
+++ xarchiver/branches/xarchiver-psybsd/src/extract_dialog.c	2006-10-30 21:23:41 UTC (rev 23563)
@@ -131,7 +131,7 @@
 					g_signal_connect(G_OBJECT(test), "toggled", G_CALLBACK(xa_extract_dialog_option_toggled), (void *)g_param_spec_get_name(G_PARAM_SPEC(extract_options->data)));
 					gtk_box_pack_start(GTK_BOX(r_vbox), test, FALSE, FALSE, 0);
 					break;
-				case (G_TYPE_STRING): /* TODO: Add text-field */
+				case (G_TYPE_STRING):
 					hbox = gtk_hbox_new(FALSE, 4);
 					test = gtk_label_new(g_param_spec_get_nick(G_PARAM_SPEC(extract_options->data)));
 					gtk_box_pack_start(GTK_BOX(hbox), test, FALSE, FALSE, 3);

Modified: xarchiver/branches/xarchiver-psybsd/src/main_window.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main_window.c	2006-10-30 19:29:48 UTC (rev 23562)
+++ xarchiver/branches/xarchiver-psybsd/src/main_window.c	2006-10-30 21:23:41 UTC (rev 23563)
@@ -16,10 +16,6 @@
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
- /*
-		FIXME: File is full of hacks.
- */
-
 #include <config.h>
 #include <string.h>
 #include <glib.h>
@@ -557,7 +553,7 @@
 	XAMainWindow *window = XA_MAIN_WINDOW(userdata);
 	LXAArchiveSupport *lp_support = NULL;
 	GSList *filenames = NULL;
-	GValue *value = g_new0(GValue, 1);
+	gchar *filename = NULL;
 	GtkTreeModel *treemodel = gtk_tree_view_get_model(GTK_TREE_VIEW(window->treeview));
 	GtkTreeIter iter;
 	GtkTreeSelection *selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW (window->treeview) );
@@ -578,12 +574,11 @@
 			while(_rows)
 			{
 				gtk_tree_model_get_iter(GTK_TREE_MODEL(treemodel), &iter, _rows->data);
-				if(xa_archive_store_get_show_icons(XA_ARCHIVE_STORE(treemodel)))
-					gtk_tree_model_get_value(GTK_TREE_MODEL(treemodel), &iter, 1, value);
-				else
-					gtk_tree_model_get_value(GTK_TREE_MODEL(treemodel), &iter, 0, value);
 
-				g_value_unset(value);
+				filename = xa_archive_store_get_filename(XA_ARCHIVE_STORE(treemodel), &iter);
+				
+				filenames = g_slist_prepend(filenames, g_strconcat(xa_archive_store_get_pwd(XA_ARCHIVE_STORE(treemodel)), filename, NULL));
+
 				_rows = _rows->next;
 			}
 			g_list_free(rows);



More information about the Xfce4-commits mailing list