Author: colossus
Date: 2007-12-28 16:40:43 +0000 (Fri, 28 Dec 2007)
New Revision: 26515

Removed:
   xarchiver/trunk/src/lzma.c
   xarchiver/trunk/src/lzma.h
Modified:
   xarchiver/trunk/src/Makefile.am
   xarchiver/trunk/src/bzip2.c
   xarchiver/trunk/src/bzip2.h
   xarchiver/trunk/src/extract_dialog.c
   xarchiver/trunk/src/gzip.c
   xarchiver/trunk/src/window.c
   xarchiver/trunk/src/window.h
Log:
Made lzma/gzip/bzip2 extraction to work with the new xa_run_command() function.
Removed files lzma.c and lzma.h because of their redundant code with bzip2.c 
and bzip2.h.


Modified: xarchiver/trunk/src/Makefile.am
===================================================================
--- xarchiver/trunk/src/Makefile.am     2007-12-28 16:10:20 UTC (rev 26514)
+++ xarchiver/trunk/src/Makefile.am     2007-12-28 16:40:43 UTC (rev 26515)
@@ -13,7 +13,6 @@
        window.c window.h \
        arj.c arj.h \
        deb.c deb.h \
-       lzma.c lzma.h \
        zip.c zip.h \
        rar.c rar.h \
        7zip.c 7zip.h \

Modified: xarchiver/trunk/src/bzip2.c
===================================================================
--- xarchiver/trunk/src/bzip2.c 2007-12-28 16:10:20 UTC (rev 26514)
+++ xarchiver/trunk/src/bzip2.c 2007-12-28 16:40:43 UTC (rev 26515)
@@ -23,62 +23,53 @@
 
 short int l;
 
-void xa_open_bzip2 (XArchive *archive)
+void xa_open_bzip2_lzma (XArchive *archive,XArchiveType type)
 {
        XEntry *entry = NULL;
-       struct stat my_stat;
        gchar tmp_dir[14] = "";
-       gchar *compressed = NULL;
-       gchar *size = NULL;
-       gchar *command = NULL;
        gchar *filename = NULL;;
        gchar *_filename;
-       gchar *tar;
        gpointer item[2];
-       unsigned short int i;
        gboolean result;
 
        if (g_str_has_suffix(archive->escaped_path,".tar.bz2") || 
g_str_has_suffix (archive->escaped_path,".tar.bz")
        || g_str_has_suffix ( archive->escaped_path , ".tbz") || 
g_str_has_suffix (archive->escaped_path,".tbz2") )
        {
                archive->type = XARCHIVETYPE_TAR_BZ2;
-               tar = g_find_program_in_path ("gtar");
-               if (tar == NULL)
-                       tar = g_strdup ("tar");
-
-               command = g_strconcat (tar, " tfjv 
",archive->escaped_path,NULL);
-               archive->has_properties = archive->can_add = 
archive->can_extract = TRUE;
-               archive->has_test = archive->has_sfx = FALSE;
-               archive->dummy_size = 0;
-               archive->nr_of_files = 0;
-               archive->nr_of_dirs = 0;
                archive->format = "TAR.BZIP2";
-               archive->nc = 7;
-               archive->parse_output = xa_get_tar_line_content;
-               xa_spawn_async_process (archive,command);
-               g_free (command);
-               g_free (tar);
-
-               if (archive->child_pid == 0)
-                       return;
-
-               GType types[]= 
{GDK_TYPE_PIXBUF,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_UINT64,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_POINTER};
-               archive->column_types = g_malloc0(sizeof(types));
-               for (i = 0; i < 9; i++)
-                       archive->column_types[i] = types[i];
-
-               char *names[]= {(_("Points 
to")),(_("Permissions")),(_("Owner/Group")),(_("Size")),(_("Date")),(_("Time")),NULL};
-               xa_create_liststore (archive,names);
+               xa_open_tar_compressed_file(archive);
        }
+       else if (g_str_has_suffix(archive->escaped_path,".tar.lzma") || 
g_str_has_suffix (archive->escaped_path,".tlz"))
+       {
+               archive->type = XARCHIVETYPE_TAR_LZMA;
+               archive->format = "TAR.LZMA";
+               xa_open_tar_compressed_file(archive);
+       }
        else
        {
+               struct stat my_stat;
+               gchar *compressed = NULL;
+               gchar *size = NULL;
+               gchar *command = NULL;
+               gchar *executable = NULL;
+               unsigned short int i;
                GSList *list = NULL;
+
+               if (type == XARCHIVETYPE_BZIP2)
+               {
+                       archive->format = "BZIP2";
+                       executable = "bzip2 ";
+               }
+               else
+               {
+                       archive->format = "LZMA";
+                       executable = "lzma ";
+               }
                archive->can_add = archive->has_test = archive->has_sfx = FALSE;
                archive->has_properties = archive->can_extract = TRUE;
                archive->nc = 3;
                archive->nr_of_files = 1;
                archive->nr_of_dirs = 0;
-               archive->format = "BZIP2";
 
                GType types[]= 
{GDK_TYPE_PIXBUF,G_TYPE_STRING,G_TYPE_UINT64,G_TYPE_UINT64,G_TYPE_POINTER};
                archive->column_types = g_malloc0(sizeof(types));
@@ -100,12 +91,11 @@
                item[0] = compressed;
 
                /* Let's extract it */
-               chdir (archive->tmp);
                _filename = g_strrstr (archive->escaped_path , "/");
                if (_filename)
-                       command = g_strconcat("bzip2 -f -d 
",archive->tmp,_filename,NULL);
+                       command = g_strconcat(executable,"-f -d 
",archive->tmp,_filename,NULL);
                else
-                       command = g_strconcat("bzip2 -f -d 
",archive->tmp,"/",archive->escaped_path,NULL);
+                       command = g_strconcat(executable,"-f -d 
",archive->tmp,"/",archive->escaped_path,NULL);
 
                list = g_slist_append(list,command);
                result = xa_run_command (archive,list);
@@ -139,69 +129,85 @@
        }
 }
 
-void gzip_bzip2_extract (XArchive *archive,gboolean flag)
+void xa_open_tar_compressed_file(XArchive *archive)
 {
+       gchar *command = NULL;
+       gchar *tar;
+       unsigned short int i;
+
+       tar = g_find_program_in_path ("gtar");
+       if (tar == NULL)
+               tar = g_strdup ("tar");
+
+       if (archive->type == XARCHIVETYPE_TAR_BZ2)
+               command = g_strconcat(tar, " tfjv ",archive->escaped_path,NULL);
+       else
+               command = g_strconcat(tar," tv --use-compress-program=lzma -f 
",archive->escaped_path,NULL);
+
+       archive->has_properties = archive->can_add = archive->can_extract = 
TRUE;
+       archive->has_test = archive->has_sfx = FALSE;
+       archive->dummy_size = 0;
+       archive->nr_of_files = 0;
+       archive->nr_of_dirs = 0;
+       archive->nc = 7;
+       archive->parse_output = xa_get_tar_line_content;
+       xa_spawn_async_process (archive,command);
+       g_free (command);
+       g_free (tar);
+
+       if (archive->child_pid == 0)
+               return;
+
+       GType types[]= 
{GDK_TYPE_PIXBUF,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_UINT64,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_POINTER};
+       archive->column_types = g_malloc0(sizeof(types));
+       for (i = 0; i < 9; i++)
+               archive->column_types[i] = types[i];
+
+       char *names[]= {(_("Points 
to")),(_("Permissions")),(_("Owner/Group")),(_("Size")),(_("Date")),(_("Time")),NULL};
+       xa_create_liststore (archive,names);
+}
+
+void lzma_gzip_bzip2_extract (XArchive *archive)
+{
        GSList *list = NULL;
-    gchar *text = NULL;
-       gchar *filename_only = NULL;
-       gchar *command = NULL;
+       gchar *command,*executable = NULL,*filename = NULL;
        gchar tmp_dir[14] = "";
        gboolean result = FALSE;
-       gboolean ext;
 
+       switch (archive->type)
+       {
+               case XARCHIVETYPE_BZIP2:
+                       executable = "bzip2 -f -d ";
+                       filename = "dummy.bz2";
+               break;
+               case XARCHIVETYPE_GZIP:
+                       executable = "gzip -f -d -n ";
+                       filename = "dummy.gz";
+               break;
+               case XARCHIVETYPE_LZMA:
+                       executable = "lzma -f -d ";
+                       filename = "dummy.lzma";
+               break;
+               
+               default:
+               break;
+       }
+
        result = xa_create_temp_directory(archive,tmp_dir);
        if (result == 0)
                return;
 //TODO: fix the crash when viewing a bzip2 compressed file
-       if (MainWindow)
+       if (MainWindow && extract_window)
+       {
                archive->extraction_path = g_strdup (gtk_entry_get_text 
(GTK_ENTRY (extract_window->destination_path_entry)));
 
-       if (strlen(archive->extraction_path) > 0)
-       {
-               if (MainWindow)
-               {
-                       if (flag)
-                               text = g_strdup_printf(_("Extracting gzip file 
to %s"),archive->extraction_path);
-                       else
-                               text = g_strdup_printf(_("Extracting bzip2 file 
to %s"),archive->extraction_path);
-                       Update_StatusBar (text);
-                       g_free (text);
-               }
-
-               filename_only = g_strrstr (archive->escaped_path,"/");
-               if (file_extension_is (filename_only,".gz") || 
file_extension_is (filename_only,".bz2"))
-                       ext = TRUE;
-               else
-                       ext = FALSE;
-
-               if (ext)
-                       command = g_strconcat ("cp -f ",archive->escaped_path," 
",archive->tmp,NULL);
-               else
-                       command = g_strconcat ("cp -f ",archive->escaped_path," 
",archive->tmp,filename_only,flag ? ".gz" : ".bz2",NULL);
-
+               command = g_strconcat ("cp -f ",archive->escaped_path," 
",archive->tmp,"/",filename,NULL);
                list = g_slist_append(list,command);
-               if (ext)
-                       command = g_strconcat(flag ? "gzip -f -d -n " : "bzip2 
-f -d ",archive->tmp,filename_only,NULL);
-               else
-                       command = g_strconcat(flag ? "gzip -f -d -n " : "bzip2 
-f -d ",archive->tmp,filename_only,flag ? ".gz" : ".bz2",NULL);
 
+               command = 
g_strconcat(executable,archive->tmp,"/",filename,NULL);
                list = g_slist_append(list,command);
 
-               if (ext)
-               {
-                       if (flag)
-                               filename_only[strlen(filename_only)-3] = '\0';
-                       else
-                               filename_only[strlen(filename_only)-4] = '\0';
-                               command = g_strconcat ("mv -f 
",archive->tmp,filename_only, " ",archive->extraction_path,NULL);
-               }
-               else
-               {
-                       if (g_file_test (archive->extraction_path, 
G_FILE_TEST_IS_DIR) )
-                               command = g_strconcat("mv -f 
",archive->tmp,filename_only," ",archive->extraction_path,filename_only,NULL);
-                       else
-                               command = g_strconcat("mv -f 
",archive->tmp,filename_only," ",archive->extraction_path,NULL);
-               }
+               command = g_strconcat("mv -f ",archive->tmp,"/dummy 
",archive->extraction_path,"/",archive->root_entry->child->filename,NULL);
                list = g_slist_append(list,command);
                result = xa_run_command (archive,list);
        }
@@ -209,7 +215,7 @@
 
 void xa_add_delete_tar_bzip2_gzip_lzma (GString *_list,XArchive 
*archive,gboolean add)
 {
-       gchar *command,*tar,*executable,*filename;
+       gchar *command,*tar,*executable = NULL,*filename = NULL;
        gchar tmp_dir[14] = "";
        gboolean result;
        GSList *list = NULL;
@@ -228,6 +234,9 @@
                        executable = "lzma -f ";
                        filename = "dummy.lzma";
                break;
+               
+               default:
+               break;
        }
        /* Let's copy the archive to /tmp first */
        result = xa_create_temp_directory(archive,tmp_dir);

Modified: xarchiver/trunk/src/bzip2.h
===================================================================
--- xarchiver/trunk/src/bzip2.h 2007-12-28 16:10:20 UTC (rev 26514)
+++ xarchiver/trunk/src/bzip2.h 2007-12-28 16:40:43 UTC (rev 26515)
@@ -24,7 +24,8 @@
 #include "main.h"
 #include "archive.h"
 
-void xa_open_bzip2 (XArchive *archive);
-void gzip_bzip2_extract (XArchive *archive,gboolean flag);
+void xa_open_bzip2_lzma (XArchive *archive,XArchiveType type);
+void lzma_gzip_bzip2_extract (XArchive *archive);
 void xa_add_delete_tar_bzip2_gzip_lzma (GString *list,XArchive 
*archive,gboolean add);
+void xa_open_tar_compressed_file(XArchive *archive);
 #endif

Modified: xarchiver/trunk/src/extract_dialog.c
===================================================================
--- xarchiver/trunk/src/extract_dialog.c        2007-12-28 16:10:20 UTC (rev 
26514)
+++ xarchiver/trunk/src/extract_dialog.c        2007-12-28 16:40:43 UTC (rev 
26515)
@@ -392,15 +392,15 @@
                                switch ( archive->type )
                                {
                                        case XARCHIVETYPE_BZIP2:
-                                       gzip_bzip2_extract (archive , 0);
+                                       lzma_gzip_bzip2_extract (archive);
                                        break;
 
                                        case XARCHIVETYPE_GZIP:
-                                       gzip_bzip2_extract (archive , 1);
+                                       lzma_gzip_bzip2_extract (archive);
                                        break;
 
                                        case XARCHIVETYPE_LZMA:
-                                       lzma_extract (archive);
+                                       lzma_gzip_bzip2_extract (archive);
                                        break;
 
                                        case XARCHIVETYPE_RAR:
@@ -596,15 +596,15 @@
        switch (archive->type)
        {
                case XARCHIVETYPE_BZIP2:
-               gzip_bzip2_extract (archive , 0);
+               lzma_gzip_bzip2_extract (archive);
                break;
 
                case XARCHIVETYPE_GZIP:
-               gzip_bzip2_extract (archive , 1);
+               lzma_gzip_bzip2_extract (archive);
                break;
 
                case XARCHIVETYPE_LZMA:
-               lzma_extract (archive);
+               lzma_gzip_bzip2_extract (archive);
                break;
 
                case XARCHIVETYPE_RAR:

Modified: xarchiver/trunk/src/gzip.c
===================================================================
--- xarchiver/trunk/src/gzip.c  2007-12-28 16:10:20 UTC (rev 26514)
+++ xarchiver/trunk/src/gzip.c  2007-12-28 16:40:43 UTC (rev 26515)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (C) 2007 Giuseppe Torelli - <[EMAIL PROTECTED]>
+ *  Copyright (C) 2008 Giuseppe Torelli - <[EMAIL PROTECTED]>
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by

Deleted: xarchiver/trunk/src/lzma.c

Deleted: xarchiver/trunk/src/lzma.h

Modified: xarchiver/trunk/src/window.c
===================================================================
--- xarchiver/trunk/src/window.c        2007-12-28 16:10:20 UTC (rev 26514)
+++ xarchiver/trunk/src/window.c        2007-12-28 16:40:43 UTC (rev 26515)
@@ -95,7 +95,7 @@
                        break;
 
                        case XARCHIVETYPE_TAR_BZ2:
-                       xa_open_bzip2 (archive);
+                       xa_open_bzip2_lzma (archive,XARCHIVETYPE_TAR_BZ2);
                        break;
 
                        case XARCHIVETYPE_TAR_GZ:
@@ -103,7 +103,7 @@
                        break;
 
                        case XARCHIVETYPE_TAR_LZMA:
-                       xa_open_lzma (archive);
+                       xa_open_bzip2_lzma (archive,XARCHIVETYPE_TAR_LZMA);
                        break;
 
                        case XARCHIVETYPE_ZIP:
@@ -359,7 +359,7 @@
                break;
 
                case XARCHIVETYPE_BZIP2:
-               xa_open_bzip2 (archive[current_page]);
+               xa_open_bzip2_lzma (archive[current_page],XARCHIVETYPE_BZIP2);
                break;
 
                case XARCHIVETYPE_GZIP:
@@ -367,7 +367,7 @@
                break;
 
                case XARCHIVETYPE_LZMA:
-               xa_open_lzma ( archive[current_page] );
+               xa_open_bzip2_lzma ( archive[current_page],XARCHIVETYPE_LZMA);
                break;
 
                case XARCHIVETYPE_RAR:

Modified: xarchiver/trunk/src/window.h
===================================================================
--- xarchiver/trunk/src/window.h        2007-12-28 16:10:20 UTC (rev 26514)
+++ xarchiver/trunk/src/window.h        2007-12-28 16:40:43 UTC (rev 26515)
@@ -43,7 +43,6 @@
 #include "bzip2.h"
 #include "rpm.h"
 #include "gzip.h"
-#include "lzma.h"
 #include "archive.h"
 #include "new_dialog.h"
 #include "extract_dialog.h"

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

Reply via email to