Author: colossus
Date: 2007-09-13 06:22:19 +0000 (Thu, 13 Sep 2007)
New Revision: 26075
Modified:
xarchiver/trunk/doc/Makefile.am
xarchiver/trunk/src/archive.c
xarchiver/trunk/src/archive.h
xarchiver/trunk/src/extract_dialog.c
xarchiver/trunk/src/mime.c
xarchiver/trunk/src/window.c
Log:
Completed extraction of tar archives without the path;many thanks to John
Berthels for helping me.
Added flv mime type icon.
Fixed problem with make dist.
Fixed a memory leak in extract_dialog.c
Modified: xarchiver/trunk/doc/Makefile.am
===================================================================
--- xarchiver/trunk/doc/Makefile.am 2007-09-12 20:19:26 UTC (rev 26074)
+++ xarchiver/trunk/doc/Makefile.am 2007-09-13 06:22:19 UTC (rev 26075)
@@ -28,7 +28,6 @@
images/add_dialog.png \
images/archive_properties.png \
images/extract_dialog.png \
- images/iso_properties.png \
images/new_dialog.png
EXTRA_DIST = xarchiver.css xarchiver.xsl \
Modified: xarchiver/trunk/src/archive.c
===================================================================
--- xarchiver/trunk/src/archive.c 2007-09-12 20:19:26 UTC (rev 26074)
+++ xarchiver/trunk/src/archive.c 2007-09-13 06:22:19 UTC (rev 26075)
@@ -369,17 +369,6 @@
g_free(entry);
}
-void xa_store_entries_in_gslist (XEntry *entry, GSList **list)
-{
- if (entry == NULL)
- return;
-
- *list = g_slist_prepend (*list,entry->filename);
-
- xa_store_entries_in_gslist(entry->child, list);
- xa_store_entries_in_gslist(entry->next, list);
-}
-
XEntry *xa_find_archive_entry(XEntry *entry, gchar *string)
{
if (entry == NULL)
@@ -423,7 +412,6 @@
last_entry =
xa_alloc_memory_for_each_row(archive->nc,archive->column_types);
last_entry->filename = g_strdup(full_path_name);
last_entry->columns =
xa_fill_archive_entry_columns_for_each_row(archive,last_entry,items);
- last_entry->prev = NULL;
last_entry->is_dir = TRUE;
archive->entries = g_slist_prepend
(archive->entries,last_entry);
archive->nr_of_dirs++;
@@ -439,7 +427,6 @@
child_entry = xa_alloc_memory_for_each_row
(archive->nc,archive->column_types);
child_entry->filename =
g_strdup(full_path_name);
child_entry->columns =
xa_fill_archive_entry_columns_for_each_row(archive,child_entry,items);
- child_entry->prev = last_entry;
child_entry->is_dir = TRUE;
child_entry->next = last_entry->child;
@@ -464,7 +451,6 @@
child_entry->next = last_entry->child;
last_entry->child = child_entry;
- child_entry->prev = last_entry;
}
}
else
@@ -644,13 +630,34 @@
}
}
-gchar *xa_build_pathname_from_entries (XArchive *archive,XEntry *entry)
+void xa_entries_to_filelist(XEntry *entry,GSList **p_file_list,gchar
*current_path)
{
- while (entry)
- {
- g_print ("%s\n",entry->filename);
- entry = entry->prev;
- }
- g_print ("\n");
- return NULL;
+ if (entry == NULL)
+ return;
+
+ /* Recurse to siblings with the same path */
+ xa_entries_to_filelist(entry->next, p_file_list, current_path);
+
+ if (entry->child)
+ {
+ /* This is a directory, recurse to children, with new path */
+ gchar *extended_path = g_strdup(entry->filename);
+ xa_entries_to_filelist(entry->child, p_file_list, extended_path);
+ g_free(extended_path);
+ }
+ else
+ {
+ /* This is a file, add this entry with a full pathname */
+ gchar *full_path = g_strconcat(current_path,"/",entry->filename,NULL);
+ *p_file_list = g_slist_append(*p_file_list, full_path);
+ }
+
+ return;
}
+
+void xa_destroy_filelist(GSList *file_list)
+{
+ g_slist_foreach (file_list,(GFunc)g_free, NULL);
+ g_slist_free (file_list);
+}
+
Modified: xarchiver/trunk/src/archive.h
===================================================================
--- xarchiver/trunk/src/archive.h 2007-09-12 20:19:26 UTC (rev 26074)
+++ xarchiver/trunk/src/archive.h 2007-09-13 06:22:19 UTC (rev 26075)
@@ -59,7 +59,6 @@
gboolean is_encrypted;
XEntry *child;
XEntry *next;
- XEntry *prev;
};
typedef struct _XArchive XArchive;
@@ -127,12 +126,12 @@
gint xa_get_new_archive_idx();
XEntry *xa_alloc_memory_for_each_row ( guint nc,GType column_types[]);
void xa_free_entry (XArchive *archive,XEntry *entry);
-void xa_store_entries_in_gslist (XEntry *entry,GSList **);
XEntry *xa_find_archive_entry(XEntry *entry, gchar *string);
XEntry *xa_set_archive_entries_for_each_row (XArchive *archive,gchar
*filename,gboolean encrypted,gpointer *items);
gpointer *xa_fill_archive_entry_columns_for_each_row (XArchive *archive,XEntry
*entry,gpointer *items);
void xa_update_window_with_archive_entries (XArchive *archive,gchar *path);
-gchar *xa_build_pathname_from_entries (XArchive *archive,XEntry *entry);
+void xa_entries_to_filelist(XEntry *, GSList **, gchar *);
+void xa_destroy_filelist(GSList *file_list);
XArchive *archive[100];
XArchive *archive_cmd;
#endif
Modified: xarchiver/trunk/src/extract_dialog.c
===================================================================
--- xarchiver/trunk/src/extract_dialog.c 2007-09-12 20:19:26 UTC (rev
26074)
+++ xarchiver/trunk/src/extract_dialog.c 2007-09-13 06:22:19 UTC (rev
26075)
@@ -83,7 +83,7 @@
strncpy ( extraction_string, archive->path, x - 5);
extraction_string[x-5] = '\0';
}
- gtk_entry_set_text
(GTK_ENTRY(dialog_data->destination_path_entry), g_strdup(extraction_string));
+ gtk_entry_set_text
(GTK_ENTRY(dialog_data->destination_path_entry), extraction_string);
g_free (extraction_string);
}
else
@@ -821,17 +821,14 @@
}
else
{
- /* *Here we have to fill a GSList with all the filenames in the
archive so that we can use mv on all of them */
+ /* *Here we have to fill a GSList with all the entries in the
archive so that we can use mv on all of them */
XEntry *entry;
GSList *s = archive->entries;
//g_print
("%s\n",gtk_entry_get_text(GTK_ENTRY(location_entry)));
for (; s; s = s->next)
{
entry = s->data;
- XEntry *p =
xa_find_archive_entry(s->data,entry->filename);
- g_print ("Ho trovato: %s\n",p->filename);
- xa_build_pathname_from_entries (archive,p);
- //xa_store_entries_in_gslist(entry,&xxx);
+ xa_entries_to_filelist(entry, &xxx,"");
}
}
filenames = g_slist_reverse(xxx);
@@ -862,7 +859,6 @@
return FALSE;
}
chdir (tmp_dir);
-
while (filenames)
{
gchar *unescaped = EscapeBadChars ( (gchar*)filenames->data ,
"$\'`\"\\!?* ()[]&|@#:;");
@@ -871,8 +867,8 @@
g_free (unescaped);
filenames = filenames->next;
}
+ xa_destroy_filelist (filenames);
command = g_strconcat ( "mv -f ", unescaped_names->str, " " ,
extract_path , NULL );
- g_print ("%s\n",command);
result = xa_run_command (archive,command,0);
g_free (command);
g_slist_free (filenames);
Modified: xarchiver/trunk/src/mime.c
===================================================================
--- xarchiver/trunk/src/mime.c 2007-09-12 20:19:26 UTC (rev 26074)
+++ xarchiver/trunk/src/mime.c 2007-09-13 06:22:19 UTC (rev 26075)
@@ -50,7 +50,7 @@
|| strcmp (mime,"application/x-rpm") == 0 || strcmp
(mime,"application/x-deb") == 0 )
icon_name = "package";
else if (strcmp(mime,"application/x-shockwave-flash") == 0 ||
strcmp(mime,"video/mpeg") == 0 || strcmp(mime,"video/quicktime") == 0
- || strcmp(mime,"video/x-msvideo") == 0)
+ || strcmp(mime,"video/x-msvideo") == 0 ||
strcmp(mime,"application/x-flash-video") == 0)
icon_name = "video";
else if (strcmp(mime,"application/x-cd-image") == 0)
icon_name = "application-x-cd-image";
Modified: xarchiver/trunk/src/window.c
===================================================================
--- xarchiver/trunk/src/window.c 2007-09-12 20:19:26 UTC (rev 26074)
+++ xarchiver/trunk/src/window.c 2007-09-13 06:22:19 UTC (rev 26075)
@@ -905,8 +905,8 @@
void xa_about (GtkMenuItem *menuitem, gpointer user_data)
{
static GtkWidget *about = NULL;
- const char *authors[] = {"\nMain developer:\nGiuseppe Torelli <[EMAIL
PROTECTED]>\n\nLHA and DEB support:\nŁukasz Zemczak <[EMAIL PROTECTED]>\n\nLZMA
support:\nThomas Dy <[EMAIL PROTECTED]>",NULL};
- const char *documenters[] = {"\nVery special thanks to John Berthels
for\nhelping me in fixing archive navigation code.\n\nSpecial thanks to Bjoern
Martensen for\nbugs hunting and Xarchiver Tango logo.\n\nThanks to:\nBenedikt
Meurer\nStephan Arts\nEnrico Tröger\nUracile for the stunning logo\n", NULL};
+ const char *authors[] = {"\nMain developer:\nGiuseppe Torelli <[EMAIL
PROTECTED]>\n\nArchive navigation code:\nJohn Berthels\n\nLHA and DEB
support:\nŁukasz Zemczak <[EMAIL PROTECTED]>\n\nLZMA support:\nThomas Dy
<[EMAIL PROTECTED]>\n",NULL};
+ const char *documenters[] = {"\nSpecial thanks to Bjoern Martensen
for\nbugs hunting and Xarchiver Tango logo.\n\nThanks to:\nBenedikt
Meurer\nStephan Arts\nEnrico Tröger\nUracile for the stunning logo\n", NULL};
if (about == NULL)
{
@@ -915,17 +915,17 @@
gtk_about_dialog_set_url_hook (xa_activate_link, NULL, NULL);
gtk_window_set_destroy_with_parent (GTK_WINDOW (about) , TRUE);
g_object_set (about,
- "name", "Xarchiver",
- "version", PACKAGE_VERSION,
- "copyright", "Copyright \xC2\xA9 2005-2007
Giuseppe Torelli",
- "comments", "A lightweight GTK+2 archive
manager",
- "authors", authors,
- "documenters",documenters,
- "translator_credits", _("translator-credits"),
- "logo_icon_name", "xarchiver",
- "website", "http://xarchiver.xfce.org",
- "license", "Copyright \xC2\xA9 2005-2007
Giuseppe Torelli - Colossus <[EMAIL PROTECTED]>\n\n"
- "This is free software; you can
redistribute it and/or\n"
+ "name", "Xarchiver",
+ "version", PACKAGE_VERSION,
+ "copyright", "Copyright \xC2\xA9 2005-2007 Giuseppe
Torelli",
+ "comments", "A lightweight GTK+2 archive manager",
+ "authors", authors,
+ "documenters",documenters,
+ "translator_credits", _("translator-credits"),
+ "logo_icon_name", "xarchiver",
+ "website", "http://xarchiver.xfce.org",
+ "license", "Copyright \xC2\xA9 2005-2007 Giuseppe
Torelli - Colossus <[EMAIL PROTECTED]>\n\n"
+ "This is free software; you can
redistribute it and/or\n"
"modify it under the terms of the GNU
Library General Public License as\n"
"published by the Free Software
Foundation; either version 2 of the\n"
"License, or (at your option) any later
version.\n"
@@ -1129,6 +1129,7 @@
/* First column: icon + text */
column = gtk_tree_view_column_new();
renderer = gtk_cell_renderer_pixbuf_new();
+ //TODO; have this in real time according to the user set preferences
g_object_set(G_OBJECT(renderer), "stock-size", (3 -
gtk_combo_box_get_active(GTK_COMBO_BOX(prefs_window->combo_icon_size))), NULL);
gtk_tree_view_column_pack_start(column, renderer, FALSE);
gtk_tree_view_column_set_attributes(column, renderer,
"icon-name",0,NULL);
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits