summaryrefslogtreecommitdiffstats
path: root/krusader
diff options
context:
space:
mode:
Diffstat (limited to 'krusader')
-rw-r--r--krusader/Dialogs/packgui.cpp1
-rw-r--r--krusader/Konfigurator/kgarchives.cpp4
-rw-r--r--krusader/Konfigurator/kgdependencies.cpp17
-rw-r--r--krusader/Konfigurator/kggeneral.cpp1
-rw-r--r--krusader/Konfigurator/kgprotocols.cpp4
-rw-r--r--krusader/Konfigurator/krresulttable.cpp3
-rw-r--r--krusader/Panel/krbriefview.cpp1
-rw-r--r--krusader/Panel/krdetailedview.cpp4
-rw-r--r--krusader/Panel/krviewitem.cpp1
-rw-r--r--krusader/Search/krsearchmod.cpp3
-rwxr-xr-xkrusader/VFS/arc_vfs.cpp43
-rw-r--r--krusader/VFS/krarchandler.cpp32
-rw-r--r--krusader/defaults.h2
13 files changed, 87 insertions, 29 deletions
diff --git a/krusader/Dialogs/packgui.cpp b/krusader/Dialogs/packgui.cpp
index e479060..c374b4b 100644
--- a/krusader/Dialogs/packgui.cpp
+++ b/krusader/Dialogs/packgui.cpp
@@ -63,6 +63,7 @@ PackGUI::PackGUI(TQString defaultName, TQString defaultPath, int noOfFiles, TQSt
if (PS("tar")) typeData->insertItem("tar");
if (PS("tar") && PS("gzip")) typeData->insertItem("tar.gz");
if (PS("tar") && PS("bzip2")) typeData->insertItem("tar.bz2");
+ if (PS("tar") && PS("lzip")) typeData->insertItem("tar.lz");
if (PS("tar") && PS("xz")) typeData->insertItem("tar.xz");
if (PS("zip")) typeData->insertItem("zip");
if (PS("rar")) typeData->insertItem("rar");
diff --git a/krusader/Konfigurator/kgarchives.cpp b/krusader/Konfigurator/kgarchives.cpp
index f31d719..b856dd6 100644
--- a/krusader/Konfigurator/kgarchives.cpp
+++ b/krusader/Konfigurator/kgarchives.cpp
@@ -59,6 +59,7 @@ KgArchives::KgArchives( bool first, TQWidget* parent, const char* name ) :
{{"Archives","Do Tar", _DoTar, i18n( "Tar" ), false, ""},
{"Archives","Do GZip", _DoGZip, i18n( "GZip" ), false, ""},
{"Archives","Do BZip2", _DoBZip2, i18n( "BZip2" ), false, ""},
+ {"Archives","Do LZip", _DoLZip, i18n( "LZip" ), false, ""},
{"Archives","Do UnZip", _DoUnZip, i18n( "Zip" ), false, ""},
{"Archives","Do UnRar", _DoUnRar, i18n( "Rar" ), false, ""},
{"Archives","Do Unarj", _DoArj, i18n( "Arj" ), false, ""},
@@ -70,7 +71,7 @@ KgArchives::KgArchives( bool first, TQWidget* parent, const char* name ) :
{"Archives","Do Xz", _DoXz, i18n( "Xz" ), false, ""}
};
- cbs = createCheckBoxGroup( 3, 0, packers, 12, generalGrp );
+ cbs = createCheckBoxGroup( 3, 0, packers, 13, generalGrp );
generalGrid->addWidget( cbs, 1, 0 );
addLabel( generalGrid, 2, 0, i18n( "The archives that are \"greyed-out\" were unavailable on your\nsystem last time Krusader checked. If you wish Krusader to\nsearch again, click the 'Auto Configure' button." ),
@@ -126,6 +127,7 @@ void KgArchives::disableNonExistingPackers()
cbs->find( "Do Tar" )->setEnabled(PS("tar"));
cbs->find( "Do GZip" )->setEnabled(PS("gzip"));
cbs->find( "Do BZip2" )->setEnabled(PS("bzip2"));
+ cbs->find( "Do LZip" )->setEnabled(PS("lzip"));
cbs->find( "Do UnZip" )->setEnabled(PS("unzip"));
cbs->find( "Do Lha" )->setEnabled(PS("lha"));
cbs->find( "Do RPM" )->setEnabled(PS("rpm") || PS("cpio"));
diff --git a/krusader/Konfigurator/kgdependencies.cpp b/krusader/Konfigurator/kgdependencies.cpp
index 25da574..aa24908 100644
--- a/krusader/Konfigurator/kgdependencies.cpp
+++ b/krusader/Konfigurator/kgdependencies.cpp
@@ -86,14 +86,15 @@ KgDependencies::KgDependencies( bool first, TQWidget* parent, const char* name
addApplication( "dpkg", archGrid1, 4, packers_tab, PAGE_PACKERS );
addApplication( "gzip", archGrid1, 5, packers_tab, PAGE_PACKERS );
addApplication( "lha", archGrid1, 6, packers_tab, PAGE_PACKERS );
- addApplication( "rar", archGrid1, 7, packers_tab, PAGE_PACKERS );
- addApplication( "tar", archGrid1, 8, packers_tab, PAGE_PACKERS );
- addApplication( "unace", archGrid1, 9, packers_tab, PAGE_PACKERS );
- addApplication( "unarj", archGrid1,10, packers_tab, PAGE_PACKERS );
- addApplication( "unrar", archGrid1,11, packers_tab, PAGE_PACKERS );
- addApplication( "unzip", archGrid1,12, packers_tab, PAGE_PACKERS );
- addApplication( "zip", archGrid1,13, packers_tab, PAGE_PACKERS );
- addApplication( "xz", archGrid1,14, packers_tab, PAGE_PACKERS );
+ addApplication( "lzip", archGrid1, 7, packers_tab, PAGE_PACKERS );
+ addApplication( "rar", archGrid1, 8, packers_tab, PAGE_PACKERS );
+ addApplication( "tar", archGrid1, 9, packers_tab, PAGE_PACKERS );
+ addApplication( "unace", archGrid1,10, packers_tab, PAGE_PACKERS );
+ addApplication( "unarj", archGrid1,11, packers_tab, PAGE_PACKERS );
+ addApplication( "unrar", archGrid1,12, packers_tab, PAGE_PACKERS );
+ addApplication( "unzip", archGrid1,13, packers_tab, PAGE_PACKERS );
+ addApplication( "zip", archGrid1,14, packers_tab, PAGE_PACKERS );
+ addApplication( "xz", archGrid1,15, packers_tab, PAGE_PACKERS );
// ---------------------------- CHECKSUM TAB -------------------------------------
TQWidget *checksum_tab = new TQWidget( tabWidget, "tab_4" );
diff --git a/krusader/Konfigurator/kggeneral.cpp b/krusader/Konfigurator/kggeneral.cpp
index f2a9f36..d8fd37d 100644
--- a/krusader/Konfigurator/kggeneral.cpp
+++ b/krusader/Konfigurator/kggeneral.cpp
@@ -131,6 +131,7 @@ TQFrame *line2 = createLine( generalGrp, "line2" );
TQStringList defaultAtomicExtensions;
defaultAtomicExtensions += ".tar.gz";
defaultAtomicExtensions += ".tar.bz2";
+ defaultAtomicExtensions += ".tar.lz";
defaultAtomicExtensions += ".moc.cpp";
defaultAtomicExtensions += ".tar.xz";
diff --git a/krusader/Konfigurator/kgprotocols.cpp b/krusader/Konfigurator/kgprotocols.cpp
index 6ba7942..4f3134b 100644
--- a/krusader/Konfigurator/kgprotocols.cpp
+++ b/krusader/Konfigurator/kgprotocols.cpp
@@ -49,13 +49,15 @@ TQString KgProtocols::defaultKrarcMimes = "application/x-7z,application/x-7z-com
"application/x-debian-package,"
"application/x-gzip,application/x-jar,"
"application/x-lha,application/x-lha-compressed,"
+ "application/x-lzip,"
"application/x-rar,"
"application/x-rpm,"
"application/x-xz,"
"application/x-zip";
TQString KgProtocols::defaultTarMimes = "application/x-tar,application/x-tarz,"
"application/x-compressed-tar,"
- "application/x-tbz,application/x-tgz,application/x-txz";
+ "application/x-tbz,application/x-tgz,"
+ "application/x-tlz,application/x-txz";
KgProtocols::KgProtocols( bool first, TQWidget* parent, const char* name ) :
KonfiguratorPage( first, parent, name )
diff --git a/krusader/Konfigurator/krresulttable.cpp b/krusader/Konfigurator/krresulttable.cpp
index 0ab4280..abc0c55 100644
--- a/krusader/Konfigurator/krresulttable.cpp
+++ b/krusader/Konfigurator/krresulttable.cpp
@@ -102,6 +102,7 @@ KrArchiverResultTable::KrArchiverResultTable(TQWidget* parent)
Archiver* tar = new Archiver("tar", "http://www.gnu.org", PS("tar"), true, true);
Archiver* gzip = new Archiver("gzip", "http://www.gnu.org", PS("gzip"), true, true);
Archiver* bzip2 = new Archiver("bzip2", "http://www.gnu.org", PS("bzip2"), true, true);
+ Archiver* lzip = new Archiver("lzip", "http://www.nongnu.org/lzip/lzip.html", PS("lzip"), true, true);
Archiver* lha = new Archiver("lha", "http://www.gnu.org", PS("lha"), true, true);
Archiver* zip = new Archiver("zip", "http://www.info-zip.org", PS("zip"), true, false);
Archiver* unzip = new Archiver("unzip", "http://www.info-zip.org", PS("unzip"), false, true);
@@ -139,6 +140,7 @@ KrArchiverResultTable::KrArchiverResultTable(TQWidget* parent)
addRow(tar, _grid);
addRow(gzip, _grid);
addRow(bzip2, _grid);
+ addRow(lzip, _grid);
addRow(lha, _grid);
addRow(zip, _grid);
addRow(unzip, _grid);
@@ -155,6 +157,7 @@ KrArchiverResultTable::KrArchiverResultTable(TQWidget* parent)
delete tar;
delete gzip;
delete bzip2;
+ delete lzip;
delete lha;
delete zip;
delete unzip;
diff --git a/krusader/Panel/krbriefview.cpp b/krusader/Panel/krbriefview.cpp
index 571fc44..9edc906 100644
--- a/krusader/Panel/krbriefview.cpp
+++ b/krusader/Panel/krbriefview.cpp
@@ -1318,6 +1318,7 @@ void KrBriefView::initProperties() {
TQStringList defaultAtomicExtensions;
defaultAtomicExtensions += ".tar.gz";
defaultAtomicExtensions += ".tar.bz2";
+ defaultAtomicExtensions += ".tar.lz";
defaultAtomicExtensions += ".moc.cpp";
defaultAtomicExtensions += ".tar.xz";
TQStringList atomicExtensions = krConfig->readListEntry("Atomic Extensions", defaultAtomicExtensions);
diff --git a/krusader/Panel/krdetailedview.cpp b/krusader/Panel/krdetailedview.cpp
index c3db5b9..98c8750 100644
--- a/krusader/Panel/krdetailedview.cpp
+++ b/krusader/Panel/krdetailedview.cpp
@@ -1029,7 +1029,8 @@ void KrDetailedView::keyPressEvent( TQKeyEvent * e ) {
if( KRarcHandler::arcSupported( type ) ) {
KURL url = i->VF->vfile_getUrl();
- if( type == "-tar" || type == "-tgz" || type == "-tbz" )
+ if( type == "-tar" || type == "-tgz" ||
+ type == "-tbz" || type == "-tlz" )
url.setProtocol( "tar" );
else
url.setProtocol( "krarc" );
@@ -1413,6 +1414,7 @@ void KrDetailedView::initProperties() {
TQStringList defaultAtomicExtensions;
defaultAtomicExtensions += ".tar.gz";
defaultAtomicExtensions += ".tar.bz2";
+ defaultAtomicExtensions += ".tar.lz";
defaultAtomicExtensions += ".moc.cpp";
defaultAtomicExtensions += ".tar.xz";
TQStringList atomicExtensions = krConfig->readListEntry("Atomic Extensions", defaultAtomicExtensions);
diff --git a/krusader/Panel/krviewitem.cpp b/krusader/Panel/krviewitem.cpp
index cdb9ed9..4f4fcb4 100644
--- a/krusader/Panel/krviewitem.cpp
+++ b/krusader/Panel/krviewitem.cpp
@@ -11,6 +11,7 @@
TQString atomicExtensions[] = {
".tar.gz",
".tar.bz2",
+ ".tar.lz",
".moc.cpp",
".tar.xz",
};
diff --git a/krusader/Search/krsearchmod.cpp b/krusader/Search/krsearchmod.cpp
index 1ce477b..3777cf6 100644
--- a/krusader/Search/krsearchmod.cpp
+++ b/krusader/Search/krsearchmod.cpp
@@ -173,7 +173,8 @@ void KRSearchMod::scanLocalDir( KURL urlToScan )
TQString realType = KRarcHandler::getType( encrypted, url.path(), mime );
if( !encrypted ) {
- if ( realType == "-tbz" || realType == "-tgz" || realType == "tarz" || realType == "-tar" )
+ if ( realType == "-tbz" || realType == "-tgz" || realType == "-tlz" ||
+ realType == "tarz" || realType == "-tar" )
archiveURL.setProtocol( "tar" );
else
archiveURL.setProtocol( "krarc" );
diff --git a/krusader/VFS/arc_vfs.cpp b/krusader/VFS/arc_vfs.cpp
index cd0f168..1b4a269 100755
--- a/krusader/VFS/arc_vfs.cpp
+++ b/krusader/VFS/arc_vfs.cpp
@@ -102,6 +102,15 @@ arc_vfs::arc_vfs(TQString origin,TQString type,TQObject* panel,bool write):
ignoreLines = -1;
isWritable = false;
}
+ if( type == "lzip" ){
+ cmd = KrServices::fullPathName ( "lzip" );
+ listCmd = " -l ";
+ delCmd = "";
+ addCmd = cmd + " -c ";
+ getCmd = " -dc ";
+ ignoreLines = -1;
+ isWritable = false;
+ }
if(type == "-tar"){
cmd = KrServices::fullPathName( "tar" );
listCmd = " -tvf";
@@ -125,6 +134,14 @@ arc_vfs::arc_vfs(TQString origin,TQString type,TQObject* panel,bool write):
getCmd = " -xjvf";
isWritable = false;
}
+ if(type == "-tlz"){
+ cmd = KrServices::fullPathName( "tar" );
+ listCmd = " -tvf"; // tar detects format automatically
+ delCmd = "";
+ addCmd = ""; // compressed tar archives can't be modified
+ getCmd = " -xvf";
+ isWritable = false;
+ }
if(type == "-zip"){
password = KRarcHandler::getPassword(arcFile,type);
cmd = KrServices::fullPathName( "unzip" );
@@ -233,7 +250,7 @@ bool arc_vfs::getDirs(){
temp.open(IO_ReadOnly);
char buf[1000];
TQString line;
- if(vfs_type == "gzip" || vfs_type == "-zip" )
+ if( vfs_type == "gzip" || vfs_type == "lzip" || vfs_type == "-zip" )
temp.readLine(line,10000); // skip the first line - it's garbage
if( vfs_type == "-rar" ){
while(temp.readLine(line,10000) != -1)
@@ -399,7 +416,8 @@ KURL::List* arc_vfs::vfs_getFiles(TQStringList* names){
krApp, TQT_SLOT(incProgress(TDEProcess*,char*,int)) );
proc << cmd << getCmd << "\""+arcFile+"\"";
- if( vfs_type == "gzip" || vfs_type == "zip2" ) proc << ">";
+ if( vfs_type == "gzip" || vfs_type == "zip2" || vfs_type == "lzip" )
+ proc << ">";
for(unsigned int i=0 ; i < files.count() ; ){
proc << (prefix+*files.at(i++));
if ( i%MAX_FILES==0 || i==files.count() ){
@@ -595,7 +613,8 @@ void arc_vfs::repack(){
}
// finaly repack tmpDir
- if( vfs_isWritable() || vfs_type=="gzip" || vfs_type=="zip2" ){
+ if( vfs_isWritable() || vfs_type == "gzip" ||
+ vfs_type == "zip2" || vfs_type == "lzip" ){
TQStringList filesToPack;
getFilesToPack(&filesToPack);
if( !filesToPack.isEmpty() ){
@@ -604,7 +623,7 @@ void arc_vfs::repack(){
connect(&addProc,TQT_SIGNAL(receivedStdout(TDEProcess*,char*,int)),
krApp, TQT_SLOT(incProgress(TDEProcess*,char*,int)) );
- if( vfs_type=="gzip" || vfs_type=="zip2" ){
+ if( vfs_type == "gzip" || vfs_type == "zip2" || vfs_type == "lzip" ){
addProc << addCmd << *filesToPack.at(0)<< ">" << "\""+arcFile+"\"";
addProc.start(TDEProcess::NotifyOnExit);
while( addProc.isRunning() ) tqApp->processEvents();
@@ -752,16 +771,19 @@ void arc_vfs::parseLine(TQString line, TQFile* temp){
mode_t mode = 0;
- // parse gziped files
- if(vfs_type == "gzip"){
+ // parse gziped and lzipped files
+ if( vfs_type == "gzip" || vfs_type == "lzip" ) {
KDE_struct_stat stat_p;
KDE_stat(arcFile.local8Bit(),&stat_p);
- nextWord(line);
- size = nextWord(line).toLong();
- nextWord(line);
+ if( vfs_type == "gzip" ) nextWord(line); // gzip compressed size
+ size = nextWord(line).toLong(); // uncompressed size
+ if( vfs_type == "lzip" ) nextWord(line); // lzip compressed size
+ nextWord(line); // ratio or saved
name = nextWord(line,'\n');
if(name.contains('/')) name = name.mid(name.findRev('/')+1,name.length());
+ if( vfs_type == "lzip" && name.endsWith(".lz") )
+ name.truncate(name.length() - 3);
perm = KRpermHandler::mode2TQString(stat_p.st_mode) ;
owner = KRpermHandler::user2uid(qfi.owner());
group = KRpermHandler::group2gid(qfi.group());
@@ -783,7 +805,8 @@ void arc_vfs::parseLine(TQString line, TQFile* temp){
}
// parse tar files
- if(vfs_type == "-tar" || vfs_type == "-tbz" || vfs_type == "-tgz" ){
+ if(vfs_type == "-tar" || vfs_type == "-tbz" ||
+ vfs_type == "-tgz" || vfs_type == "-tlz" ){
perm = nextWord(line);
TQString temp = nextWord(line);
owner = temp.left(temp.findRev('/')).toInt();
diff --git a/krusader/VFS/krarchandler.cpp b/krusader/VFS/krarchandler.cpp
index 1e744f2..616b465 100644
--- a/krusader/VFS/krarchandler.cpp
+++ b/krusader/VFS/krarchandler.cpp
@@ -46,7 +46,7 @@
#include "../krservices.h"
#include "../Dialogs/krpleasewait.h"
-static TQStringList arcProtocols = TQStringList::split(";", "tar;bzip;bzip2;gzip;krarc;zip;xz");
+static TQStringList arcProtocols = TQStringList::split(";", "tar;bzip;bzip2;gzip;krarc;lzip;zip;xz");
TDEWallet::Wallet * KRarcHandler::wallet = 0;
@@ -57,6 +57,7 @@ TQStringList KRarcHandler::supportedPackers() {
if ( KrServices::cmdExist( "tar" ) ) packers.append( "tar" );
if ( KrServices::cmdExist( "gzip" ) ) packers.append( "gzip" );
if ( KrServices::cmdExist( "bzip2" ) ) packers.append( "bzip2" );
+ if ( KrServices::cmdExist( "lzip" ) ) packers.append( "lzip" );
if ( KrServices::cmdExist( "unzip" ) ) packers.append( "unzip" );
if ( KrServices::cmdExist( "zip" ) ) packers.append( "zip" );
if ( KrServices::cmdExist( "lha" ) ) packers.append( "lha" );
@@ -91,6 +92,8 @@ bool KRarcHandler::arcSupported( TQString type ) {
return true;
else if ( type == "-tgz" && lst.contains( "tar" ) )
return true;
+ else if ( type == "-tlz" && lst.contains( "tar" ) )
+ return true;
else if ( type == "-txz" && lst.contains( "tar" ) )
return true;
else if ( type == "tarz" && lst.contains( "tar" ) )
@@ -99,6 +102,8 @@ bool KRarcHandler::arcSupported( TQString type ) {
return true;
else if ( type == "zip2" && lst.contains( "bzip2" ) )
return true;
+ else if ( type == "lzip" && lst.contains( "lzip" ) )
+ return true;
else if ( type == "-lha" && lst.contains( "lha" ) )
return true;
else if ( type == "-ace" && lst.contains( "unace" ) )
@@ -130,9 +135,11 @@ bool KRarcHandler::arcHandled( TQString type ) {
( type == "tarz" && krConfig->readBoolEntry( "Do GZip" , _DoGZip ) ) ||
( type == "-tar" && krConfig->readBoolEntry( "Do Tar" , _DoTar ) ) ||
( type == "-tbz" && krConfig->readBoolEntry( "Do BZip2", _DoBZip2 ) ) ||
+ ( type == "-tlz" && krConfig->readBoolEntry( "Do LZip" , _DoLZip ) ) ||
( type == "-txz" && krConfig->readBoolEntry( "Do Xz" , _DoXz ) ) ||
( type == "gzip" && krConfig->readBoolEntry( "Do GZip" , _DoGZip ) ) ||
( type == "zip2" && krConfig->readBoolEntry( "Do BZip2", _DoBZip2 ) ) ||
+ ( type == "lzip" && krConfig->readBoolEntry( "Do LZip" , _DoLZip ) ) ||
( type == "-zip" && krConfig->readBoolEntry( "Do UnZip", _DoUnZip ) ) ||
( type == "-lha" && krConfig->readBoolEntry( "Do Lha" , _DoUnZip ) ) ||
( type == "-rar" && krConfig->readBoolEntry( "Do UnRar", _DoUnRar ) ) ||
@@ -155,8 +162,9 @@ long KRarcHandler::arcFileCount( TQString archive, TQString type, TQString passw
// first check if supported
if ( !arcSupported( type ) ) return 0;
- // bzip, gzip and xz archives contain only one file
- if ( type == "zip2" || type == "gzip" || type == "-xz") return 1L;
+ // bzip, gzip, lzip and xz archives contain only one file
+ if ( type == "zip2" || type == "gzip" || type == "lzip" || type == "-xz" )
+ return 1L;
// set the right lister to do the job
TQString lister;
@@ -166,6 +174,7 @@ long KRarcHandler::arcFileCount( TQString archive, TQString type, TQString passw
else if ( type == "-tgz" ) lister = KrServices::fullPathName( "tar" ) + " -tvzf";
else if ( type == "tarz" ) lister = KrServices::fullPathName( "tar" ) + " -tvzf";
else if ( type == "-tbz" ) lister = KrServices::fullPathName( "tar" ) + " -tjvf";
+ else if ( type == "-tlz" ) lister = KrServices::fullPathName( "tar" ) + " -tvf";
else if ( type == "-txz" ) lister = KrServices::fullPathName( "tar" ) + " -tJvf";
else if ( type == "-lha" ) lister = KrServices::fullPathName( "lha" ) + " l";
else if ( type == "-rar" ) lister = KrServices::fullPathName( KrServices::cmdExist( "rar" ) ? "rar" : "unrar" ) + " l -v";
@@ -250,9 +259,11 @@ bool KRarcHandler::unpack( TQString archive, TQString type, TQString password, T
else if ( type == "-tgz" ) packer = KrServices::fullPathName( "tar" ) + " -xvzf";
else if ( type == "tarz" ) packer = KrServices::fullPathName( "tar" ) + " -xvzf";
else if ( type == "-tbz" ) packer = KrServices::fullPathName( "tar" ) + " -xjvf";
+ else if ( type == "-tlz" ) packer = KrServices::fullPathName( "tar" ) + " -xvf";
else if ( type == "-txz" ) packer = KrServices::fullPathName( "tar" ) + " -xJvf";
else if ( type == "gzip" ) packer = KrServices::fullPathName( "gzip" ) + " -cd";
else if ( type == "zip2" ) packer = KrServices::fullPathName( "bzip2" ) + " -cdk";
+ else if ( type == "lzip" ) packer = KrServices::fullPathName( "lzip" ) + " -cd";
else if ( type == "-lha" ) packer = KrServices::fullPathName( "lha" ) + " xf";
else if ( type == "-rar" ) packer = KrServices::fullPathName( KrServices::cmdExist( "rar" ) ? "rar" : "unrar" ) + " -y x";
else if ( type == "-ace" ) packer = KrServices::fullPathName( "unace" ) + " x";
@@ -309,7 +320,7 @@ bool KRarcHandler::unpack( TQString archive, TQString type, TQString password, T
// unpack the files
KrShellProcess proc;
proc << packer << " " + KrServices::quote( archive );
- if( type == "zip2" || type=="gzip" ){
+ if( type == "zip2" || type=="gzip" || type=="lzip" ){
TQString arcname = archive.mid(archive.findRev("/")+1);
if( arcname.contains(".") ) arcname = arcname.left(arcname.findRev("."));
proc << ">" << KrServices::quote( dest+"/"+arcname );
@@ -365,9 +376,11 @@ bool KRarcHandler::test( TQString archive, TQString type, TQString password, lon
else if ( type == "-tgz" ) packer = KrServices::fullPathName( "tar" ) + " -tvzf";
else if ( type == "tarz" ) packer = KrServices::fullPathName( "tar" ) + " -tvzf";
else if ( type == "-tbz" ) packer = KrServices::fullPathName( "tar" ) + " -tjvf";
+ else if ( type == "-tlz" ) packer = KrServices::fullPathName( "tar" ) + " -tvf";
else if ( type == "-txz" ) packer = KrServices::fullPathName( "tar" ) + " -tJvf";
else if ( type == "gzip" ) packer = KrServices::fullPathName( "gzip" ) + " -tv";
else if ( type == "zip2" ) packer = KrServices::fullPathName( "bzip2" ) + " -tv";
+ else if ( type == "lzip" ) packer = KrServices::fullPathName( "lzip" ) + " -tv";
else if ( type == "-rar" ) packer = KrServices::fullPathName( KrServices::cmdExist( "rar" ) ? "rar" : "unrar" ) + " t";
else if ( type == "-ace" ) packer = KrServices::fullPathName( "unace" ) + " t";
else if ( type == "-lha" ) packer = KrServices::fullPathName( "lha" ) + " t";
@@ -424,6 +437,7 @@ bool KRarcHandler::pack( TQStringList fileNames, TQString type, TQString dest, l
else if ( type == "tar" ) { packer = KrServices::fullPathName( "tar" ) + " -cvf"; type = "-tar"; }
else if ( type == "tar.gz" ) { packer = KrServices::fullPathName( "tar" ) + " -cvzf"; type = "-tgz"; }
else if ( type == "tar.bz2" ) { packer = KrServices::fullPathName( "tar" ) + " -cvjf"; type = "-tbz"; }
+ else if ( type == "tar.lz" ) { packer = KrServices::fullPathName( "tar" ) + " -cv --lzip -f"; type = "-tlz"; }
else if ( type == "tar.xz" ) { packer = KrServices::fullPathName( "tar" ) + " -cvJf"; type = "-txz"; }
else if ( type == "rar" ) { packer = KrServices::fullPathName( "rar" ) + " -r a"; type = "-rar"; }
else if ( type == "lha" ) { packer = KrServices::fullPathName( "lha" ) + " a"; type = "-lha"; }
@@ -627,7 +641,8 @@ bool KRarcHandler::checkStatus( TQString type, int exitCode ) {
return exitCode == 0 || exitCode == 1;
else if( type == "-ace" || type == "zip2" || type == "-lha" || type == "-rpm" || type == "cpio" ||
type == "-tar" || type == "tarz" || type == "-tbz" || type == "-tgz" || type == "-arj" ||
- type == "-deb" || type == "-txz")
+ type == "lzip" || type == "-tlz" ||
+ type == "-deb" || type == "-txz" )
return exitCode == 0;
else if (type == "gzip" || type == "-xz")
return exitCode == 0 || exitCode == 2;
@@ -649,6 +664,7 @@ TQString KRarcHandler::detectArchive( bool &encrypted, TQString fileName, bool c
{"ace", 7, "**ACE**" },
{"bzip2",0, "\x42\x5a\x68\x39\x31" },
{"gzip", 0, "\x1f\x8b"},
+ {"lzip", 0, "\x4c\x5a\x49\x50\x01" },
{"deb", 0, "!<arch>\ndebian-binary " },
{"7z", 0, "7z\xbc\xaf\x27\x1c" },
{"xz", 0, "\xfd" "7zXZ\x00" } };
@@ -680,14 +696,16 @@ TQString KRarcHandler::detectArchive( bool &encrypted, TQString fileName, bool c
if( j == detectionString.length() ) {
TQString type = autoDetectParams[ i ].type;
- if( type == "bzip2" || type == "gzip" ) {
+ if( type == "bzip2" || type == "gzip" || type == "lzip" ) {
KTar tapeArchive( fileName );
if( tapeArchive.open( IO_ReadOnly ) ) {
tapeArchive.close();
if( type == "bzip2" )
type = "tbz";
- else
+ else if( type == "gzip" )
type = "tgz";
+ else
+ type = "tlz";
}
}
else if( type == "zip" )
diff --git a/krusader/defaults.h b/krusader/defaults.h
index 309449b..2b2ddb1 100644
--- a/krusader/defaults.h
+++ b/krusader/defaults.h
@@ -173,6 +173,8 @@
#define _DoUnZip true
// Do BZip2 ///////////
#define _DoBZip2 true
+// Do LZip ////////////
+#define _DoLZip true
// Do Rar /////////////
#define _DoRar true
// Do UnRar ///////////