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