[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