Author: colossus
Date: 2007-09-10 14:17:14 +0000 (Mon, 10 Sep 2007)
New Revision: 26066

Modified:
   xarchiver/trunk/src/archive.c
   xarchiver/trunk/src/archive.h
   xarchiver/trunk/src/extract_dialog.c
   xarchiver/trunk/src/lzma.c
   xarchiver/trunk/src/window.c
Log:
Initial workaround for extracting tar archive files without path; but the end 
is still far...
Fixed missed detection for lzma archives.


Modified: xarchiver/trunk/src/archive.c
===================================================================
--- xarchiver/trunk/src/archive.c       2007-09-10 12:04:49 UTC (rev 26065)
+++ xarchiver/trunk/src/archive.c       2007-09-10 14:17:14 UTC (rev 26066)
@@ -423,6 +423,7 @@
                        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++;
@@ -438,6 +439,7 @@
                                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;
@@ -462,6 +464,7 @@
 
                        child_entry->next = last_entry->child;
                        last_entry->child = child_entry;
+                       child_entry->prev = last_entry;
                }
        }
        else
@@ -641,3 +644,13 @@
        }
 }
 
+gchar *xa_build_pathname_from_entries (XArchive *archive,XEntry *entry)
+{
+       while (entry)
+       {
+               g_print ("%s\n",entry->filename);
+               entry = entry->prev;
+       }
+       g_print ("\n");
+       return NULL;
+}

Modified: xarchiver/trunk/src/archive.h
===================================================================
--- xarchiver/trunk/src/archive.h       2007-09-10 12:04:49 UTC (rev 26065)
+++ xarchiver/trunk/src/archive.h       2007-09-10 14:17:14 UTC (rev 26066)
@@ -59,6 +59,7 @@
        gboolean is_encrypted;
        XEntry *child;
        XEntry *next;
+       XEntry *prev;
 };
 
 typedef struct _XArchive XArchive;
@@ -131,6 +132,7 @@
 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);
 XArchive *archive[100];
 XArchive *archive_cmd;
 #endif

Modified: xarchiver/trunk/src/extract_dialog.c
===================================================================
--- xarchiver/trunk/src/extract_dialog.c        2007-09-10 12:04:49 UTC (rev 
26065)
+++ xarchiver/trunk/src/extract_dialog.c        2007-09-10 14:17:14 UTC (rev 
26066)
@@ -824,11 +824,14 @@
                /* *Here we have to fill a GSList with all the filenames 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)));
+               //g_print 
("%s\n",gtk_entry_get_text(GTK_ENTRY(location_entry)));
                for (; s; s = s->next)
                {
                        entry = s->data;
-                       xa_store_entries_in_gslist(entry,&xxx);
+                       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);
                }
        }
        filenames = g_slist_reverse(xxx);

Modified: xarchiver/trunk/src/lzma.c
===================================================================
--- xarchiver/trunk/src/lzma.c  2007-09-10 12:04:49 UTC (rev 26065)
+++ xarchiver/trunk/src/lzma.c  2007-09-10 14:17:14 UTC (rev 26066)
@@ -38,11 +38,11 @@
 
        if ( g_str_has_suffix ( archive->escaped_path , ".tar.lzma") || 
g_str_has_suffix ( archive->escaped_path , ".tlz") )
        {
-    gchar *tar;
+       gchar *tar;
+           tar = g_find_program_in_path ("gtar");
 
-    tar = g_find_program_in_path ("gtar");
-    if (tar == NULL)
-      tar = g_strdup ("tar");
+               if (tar == NULL)
+                       tar = g_strdup ("tar");
 
                command = g_strconcat (tar, " tv --use-compress-program=lzma -f 
" , archive->escaped_path, NULL );
                archive->dummy_size = 0;

Modified: xarchiver/trunk/src/window.c
===================================================================
--- xarchiver/trunk/src/window.c        2007-09-10 12:04:49 UTC (rev 26065)
+++ xarchiver/trunk/src/window.c        2007-09-10 14:17:14 UTC (rev 26066)
@@ -1075,12 +1075,12 @@
        else if ( memcmp ( magic,"\x60\xea",2 ) == 0 )
                xx = XARCHIVETYPE_ARJ;
        else if ( memcmp ( magic,"\x52\x61\x72\x21",4 ) == 0 )
-                xx = XARCHIVETYPE_RAR;
+               xx = XARCHIVETYPE_RAR;
        else if ( memcmp ( magic,"\x42\x5a\x68",3 ) == 0 )
                xx = XARCHIVETYPE_BZIP2;
        else if ( memcmp ( magic,"\x1f\x8b",2) == 0 || memcmp ( 
magic,"\x1f\x9d",2 ) == 0 )
                xx = XARCHIVETYPE_GZIP;
-       else if ( memcmp ( magic,"\x00\x5d\x80\x00",4 ) == 0 )
+       else if ( memcmp ( magic,"\x5d\x00\x00\x80",4 ) == 0 )
                xx = XARCHIVETYPE_LZMA;
        else if ( memcmp ( magic,"\xed\xab\xee\xdb",4 ) == 0 )
                xx = XARCHIVETYPE_RPM;

_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to