Add support for Lzip

Signed-off-by: Antonio Diaz Diaz <antonio@gnu.org>
feat/lzip-support
Antonio Diaz Diaz 6 years ago committed by Slávek Banko
parent fc5a2ea7ab
commit 88e74ce7ce
No known key found for this signature in database
GPG Key ID: 608F5293A04BE668

@ -8,7 +8,7 @@
<para>The &vfs-lnk; allows you to browse archives as <para>The &vfs-lnk; allows you to browse archives as
if it was a directory. Currently &krusader; supports if it was a directory. Currently &krusader; supports
the following archives types: ace, arj, bzip2, deb, gzip, iso, the following archives types: ace, arj, bzip2, deb, gzip, iso,
lha, rar, rpm, tar, zip and 7-zip and supports the following lha, lzip, rar, rpm, tar, zip and 7-zip and supports the following
passworded archives: arj, ace, rar and zip. Passwords can be passworded archives: arj, ace, rar and zip. Passwords can be
stored in &tdewallet;. Please note that the archive stored in &tdewallet;. Please note that the archive
support first needs to be properly support first needs to be properly

@ -106,7 +106,7 @@
<listitem> <listitem>
<para>Archive Handling: browsing, unpack, pack, <para>Archive Handling: browsing, unpack, pack,
testing. Supported &archives-lnk; : ace, testing. Supported &archives-lnk; : ace,
arj, bzip2, deb, gzip, iso, lha, rar, rpm, tar, zip and arj, bzip2, deb, gzip, iso, lha, lzip, rar, rpm, tar, zip and
7-zip.</para> 7-zip.</para>
</listitem> </listitem>
<listitem> <listitem>

@ -14,7 +14,7 @@
module, viewer/editor, directory synchronization, file content module, viewer/editor, directory synchronization, file content
comparisons, powerful batch renaming and much, much more. comparisons, powerful batch renaming and much, much more.
&krusader; supports archive formats: ace, arj, bzip2, deb, gzip, iso, lha, &krusader; supports archive formats: ace, arj, bzip2, deb, gzip, iso, lha,
rar, rpm, tar, zip and 7-zip and handles other lzip, rar, rpm, tar, zip and 7-zip and handles other
&tdeioslaves1-url; such as smb:// or fish://.</para> &tdeioslaves1-url; such as smb:// or fish://.</para>
<para>&krusader; is almost completely customizable and therefore <para>&krusader; is almost completely customizable and therefore
very user-friendly.</para> very user-friendly.</para>
@ -95,7 +95,7 @@
ISO,rpm,tar.gz) between these data sources/containers ISO,rpm,tar.gz) between these data sources/containers
effortlessly. &krusader; currently supports VFSs for effortlessly. &krusader; currently supports VFSs for
all popular and some specialized types of archives (ace, arj, all popular and some specialized types of archives (ace, arj,
bzip2, gzip, iso, lha, rar, tar, zip and 7-zip), configuration bzip2, gzip, iso, lha, lzip, rar, tar, zip and 7-zip), configuration
packages (rpm, deb), and traditional remote file system types packages (rpm, deb), and traditional remote file system types
(&FTP;, NFS, Samba, FISH, SFTP).</para> (&FTP;, NFS, Samba, FISH, SFTP).</para>
<para>&krusader; also includes a built-in <para>&krusader; also includes a built-in

@ -1070,7 +1070,7 @@ HTML_PARSING-->
certain archive is grayed-out, it means that certain archive is grayed-out, it means that
&krusader; could not find the appropriate executables &krusader; could not find the appropriate executables
in the configured path. The next archives are supported: ace, in the configured path. The next archives are supported: ace,
arj, bzip2, deb, gzip, iso, lha, rar, rpm, tar, zip and arj, bzip2, deb, gzip, iso, lha, lzip, rar, rpm, tar, zip and
7-zip.</para> 7-zip.</para>
<!-- OLD <!-- OLD
<screenshot> <screenshot>
@ -1446,6 +1446,20 @@ HTML_PARSING-->
</para> </para>
</entry> </entry>
</row> </row>
<row>
<entry>
<para>
<command>lzip</command>
</para>
</entry>
<entry>
<para>
<filename class="directory">
<replaceable>/usr/bin/lzip</replaceable>
</filename>
</para>
</entry>
</row>
<row> <row>
<entry> <entry>
<para> <para>
@ -1874,6 +1888,9 @@ HTML_PARSING-->
<listitem> <listitem>
<para>application/x-lha</para> <para>application/x-lha</para>
</listitem> </listitem>
<listitem>
<para>application/x-lzip</para>
</listitem>
<listitem> <listitem>
<para>application/x-rar</para> <para>application/x-rar</para>
</listitem> </listitem>
@ -1900,6 +1917,9 @@ HTML_PARSING-->
<listitem> <listitem>
<para>application/x-tgz</para> <para>application/x-tgz</para>
</listitem> </listitem>
<listitem>
<para>application/x-tlz</para>
</listitem>
</itemizedlist> </itemizedlist>
</listitem> </listitem>
</itemizedlist></para> </itemizedlist></para>

@ -26,7 +26,7 @@
<para> <para>
<link linkend="archives">Archive VFS</link>: allows to browse <link linkend="archives">Archive VFS</link>: allows to browse
archives in VFS as it was a directory (ace, arj, bzip2, deb, archives in VFS as it was a directory (ace, arj, bzip2, deb,
gzip, iso, lha, rar, rpm, tar, zip and 7-zip).</para> gzip, iso, lha, lzip, rar, rpm, tar, zip and 7-zip).</para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>

@ -13,7 +13,7 @@ mounted filesystem support, FTP, advanced search module,
viewer/editor, directory synchronisation, file content comparisons, viewer/editor, directory synchronisation, file content comparisons,
powerful batch renaming and much much more. powerful batch renaming and much much more.
It supports the following archive formats: ace, arj, bzip2, deb, It supports the following archive formats: ace, arj, bzip2, deb,
gzip, iso, lha, rar, rpm, tar, zip and 7-zip gzip, iso, lha, lzip, rar, rpm, tar, zip and 7-zip
and can handle other KIOSlaves such as smb:// or fish:// and can handle other KIOSlaves such as smb:// or fish://
It is (almost) completely customizable, very user friendly, It is (almost) completely customizable, very user friendly,
fast and looks great on your desktop! :-) fast and looks great on your desktop! :-)
@ -102,7 +102,7 @@ Powerful internal viewer and editor.
Advanced search module that can search in archives. Advanced search module that can search in archives.
Supports: ace, arj, bzip2, deb, gzip, iso, lha, rar, rpm, tar, zip and 7-zip. Supports: ace, arj, bzip2, deb, gzip, iso, lha, lzip, rar, rpm, tar, zip and 7-zip.
Directory comparison and filtering. Directory comparison and filtering.

@ -125,6 +125,8 @@ KIso::KIso( const TQString& filename, const TQString & _mimetype )
mimetype = "application/x-gzip"; mimetype = "application/x-gzip";
else if ( mimetype == "application/x-tbz" ) // that's a bzipped2 tar file, so ask for bz2 filter else if ( mimetype == "application/x-tbz" ) // that's a bzipped2 tar file, so ask for bz2 filter
mimetype = "application/x-bzip2"; mimetype = "application/x-bzip2";
else if ( mimetype == "application/x-tlz" ) // that's a lzipped tar file, so ask for lzip filter
mimetype = "application/x-lzip";
else if ( mimetype == "application/x-txz" ) // that's a xzipped tar file, so ask for xz filter else if ( mimetype == "application/x-txz" ) // that's a xzipped tar file, so ask for xz filter
mimetype = "application/x-xz"; mimetype = "application/x-xz";
else else
@ -136,22 +138,23 @@ KIso::KIso( const TQString& filename, const TQString & _mimetype )
unsigned char firstByte = file.getch(); unsigned char firstByte = file.getch();
unsigned char secondByte = file.getch(); unsigned char secondByte = file.getch();
unsigned char thirdByte = file.getch(); unsigned char thirdByte = file.getch();
unsigned char fourthByte = file.getch();
if ( firstByte == 0037 && secondByte == 0213 ) if ( firstByte == 0037 && secondByte == 0213 )
mimetype = "application/x-gzip"; mimetype = "application/x-gzip";
else if ( firstByte == 'B' && secondByte == 'Z' && thirdByte == 'h' ) else if ( firstByte == 'B' && secondByte == 'Z' && thirdByte == 'h' )
mimetype = "application/x-bzip2"; mimetype = "application/x-bzip2";
else if ( firstByte == 'P' && secondByte == 'K' && thirdByte == 3 ) else if ( firstByte == 'L' && secondByte == 'Z' &&
{ thirdByte == 'I' && fourthByte == 'P' )
unsigned char fourthByte = file.getch(); mimetype = "application/x-lzip";
if ( fourthByte == 4 ) else if ( firstByte == 'P' && secondByte == 'K' &&
thirdByte == 3 && fourthByte == 4 )
mimetype = "application/x-zip"; mimetype = "application/x-zip";
} else if ( firstByte == 0xfd && secondByte == '7' &&
else if ( firstByte == 0xfd && secondByte == '7' && thirdByte == 'z' ) thirdByte == 'z' && fourthByte == 'X' )
{ {
unsigned char fourthByte = file.getch();
unsigned char fifthByte = file.getch(); unsigned char fifthByte = file.getch();
unsigned char sixthByte = file.getch(); unsigned char sixthByte = file.getch();
if ( fourthByte == 'X' && fifthByte == 'Z' && sixthByte == 0) if ( fifthByte == 'Z' && sixthByte == 0)
mimetype = "application/x-xz"; mimetype = "application/x-xz";
} }
} }
@ -171,7 +174,7 @@ void KIso::prepareDevice( const TQString & filename,
else else
{ {
if("application/x-gzip" == mimetype || "application/x-bzip2" == mimetype || if("application/x-gzip" == mimetype || "application/x-bzip2" == mimetype ||
"application/x-xz" == mimetype) "application/x-lzip" == mimetype || "application/x-xz" == mimetype)
forced = true; forced = true;
TQIODevice *dev = KFilterDev::deviceForFile( filename, mimetype, forced ); TQIODevice *dev = KFilterDev::deviceForFile( filename, mimetype, forced );

@ -313,7 +313,9 @@ void tdeio_krarcProtocol::get(const KURL& url, int tries ){
KMimeType::Ptr mt = KMimeType::findByURL( arcTempDir+file, 0, false /* NOT local URL */ ); KMimeType::Ptr mt = KMimeType::findByURL( arcTempDir+file, 0, false /* NOT local URL */ );
emit mimeType( mt->name() ); emit mimeType( mt->name() );
proc << getCmd << convertName( arcFile->url().path() )+" "; proc << getCmd << convertName( arcFile->url().path() )+" ";
if( arcType != "gzip" && arcType != "bzip2" && arcType != "xz") proc << convertFileName( file ); if( arcType != "gzip" && arcType != "bzip2" &&
arcType != "lzip" && arcType != "xz" )
proc << convertFileName( file );
connect(&proc,TQT_SIGNAL(receivedStdout(TDEProcess*,char*,int)), connect(&proc,TQT_SIGNAL(receivedStdout(TDEProcess*,char*,int)),
this,TQT_SLOT(receivedData(TDEProcess*,char*,int)) ); this,TQT_SLOT(receivedData(TDEProcess*,char*,int)) );
} }
@ -324,7 +326,8 @@ void tdeio_krarcProtocol::get(const KURL& url, int tries ){
if( !extArcReady && !decompressToFile ) { if( !extArcReady && !decompressToFile ) {
if( !proc.normalExit() || !checkStatus( proc.exitStatus() ) || if( !proc.normalExit() || !checkStatus( proc.exitStatus() ) ||
( arcType != "bzip2" && arcType != "xz" && expectedSize != decompressedLen ) ) { ( arcType != "bzip2" && arcType != "lzip" &&
arcType != "xz" && expectedSize != decompressedLen ) ) {
if( encrypted && tries ) { if( encrypted && tries ) {
invalidatePassword(); invalidatePassword();
get( url, tries - 1 ); get( url, tries - 1 );
@ -679,6 +682,8 @@ bool tdeio_krarcProtocol::setArcFile(const KURL& url){
arcType = "bzip2"; arcType = "bzip2";
else if( arcType == "tgz" ) else if( arcType == "tgz" )
arcType = "gzip"; arcType = "gzip";
else if( arcType == "tlz" )
arcType = "lzip";
else if( arcType == "txz" ) else if( arcType == "txz" )
arcType = "xz"; arcType = "xz";
@ -707,7 +712,7 @@ bool tdeio_krarcProtocol::initDirDict(const KURL&url, bool forced){
KrShellProcess proc; KrShellProcess proc;
KTempFile temp( TQString(), "tmp" ); KTempFile temp( TQString(), "tmp" );
temp.setAutoDelete(true); temp.setAutoDelete(true);
if (arcType != "bzip2" && arcType != "xz") { if( arcType != "bzip2" && arcType != "lzip" && arcType != "xz" ) {
if( arcType == "rpm" ) if( arcType == "rpm" )
proc << listCmd << convertName( arcPath ) <<" > " << temp.name(); proc << listCmd << convertName( arcPath ) <<" > " << temp.name();
else else
@ -739,7 +744,7 @@ bool tdeio_krarcProtocol::initDirDict(const KURL&url, bool forced){
root->append(entry); root->append(entry);
if (arcType == "bzip2" || arcType == "xz"){ if( arcType == "bzip2" || arcType == "lzip" || arcType == "xz" ) {
KRDEBUG("Got me here..."); KRDEBUG("Got me here...");
parseLine(0,"",temp.file()); parseLine(0,"",temp.file());
return true; return true;
@ -1062,6 +1067,14 @@ void tdeio_krarcProtocol::parseLine(int lineNo, TQString line, TQFile*) {
mode = arcFile->mode(); mode = arcFile->mode();
size = arcFile->size(); size = arcFile->size();
} }
if( arcType == "lzip" ){
if( !lineNo ) return; //ignore the first line
size = nextWord(line).toULong(); // uncompressed size
fullName = arcFile->name();
if( fullName.endsWith(".lz") )
fullName.truncate(fullName.length() - 3);
mode = arcFile->mode();
}
if(arcType == "lha"){ if(arcType == "lha"){
// permissions // permissions
perm = nextWord(line); perm = nextWord(line);
@ -1311,6 +1324,13 @@ bool tdeio_krarcProtocol::initArcParameters() {
copyCmd = TQString(); copyCmd = TQString();
delCmd = TQString(); delCmd = TQString();
putCmd = TQString(); putCmd = TQString();
} else if(arcType == "lzip") {
cmd = fullPathName( "lzip" );
listCmd = cmd + " -l ";
getCmd = cmd + " -dc ";
copyCmd = TQString();
delCmd = TQString();
putCmd = TQString();
} else if(arcType == "arj"){ } else if(arcType == "arj"){
cmd = fullPathName( "arj" ); cmd = fullPathName( "arj" );
listCmd = fullPathName( "arj" ) + " v -y -v "; listCmd = fullPathName( "arj" ) + " v -y -v ";
@ -1398,7 +1418,8 @@ bool tdeio_krarcProtocol::checkStatus( int exitCode ) {
if( arcType == "zip" || arcType == "rar" || arcType == "7z" ) if( arcType == "zip" || arcType == "rar" || arcType == "7z" )
return exitCode == 0 || exitCode == 1; return exitCode == 0 || exitCode == 1;
else if( arcType == "ace" || arcType == "bzip2" || arcType == "lha" || arcType == "rpm" || arcType == "arj" ) else if( arcType == "ace" || arcType == "bzip2" || arcType == "lha" ||
arcType == "lzip" || arcType == "rpm" || arcType == "arj" )
return exitCode == 0; return exitCode == 0;
else if( arcType == "gzip"|| arcType == "xz" ) else if( arcType == "gzip"|| arcType == "xz" )
return exitCode == 0 || exitCode == 2; return exitCode == 0 || exitCode == 2;
@ -1420,6 +1441,7 @@ TQString tdeio_krarcProtocol::detectArchive( bool &encrypted, TQString fileName
{"ace", 7, "**ACE**" }, {"ace", 7, "**ACE**" },
{"bzip2",0, "\x42\x5a\x68\x39\x31" }, {"bzip2",0, "\x42\x5a\x68\x39\x31" },
{"gzip", 0, "\x1f\x8b"}, {"gzip", 0, "\x1f\x8b"},
{"lzip", 0, "\x4c\x5a\x49\x50\x01" },
{"deb", 0, "!<arch>\ndebian-binary " }, {"deb", 0, "!<arch>\ndebian-binary " },
{"7z", 0, "7z\xbc\xaf\x27\x1c" }, {"7z", 0, "7z\xbc\xaf\x27\x1c" },
{"xz", 0, "\xfd" "7zXZ\x00"} }; {"xz", 0, "\xfd" "7zXZ\x00"} };
@ -1451,14 +1473,16 @@ TQString tdeio_krarcProtocol::detectArchive( bool &encrypted, TQString fileName
if( j == detectionString.length() ) { if( j == detectionString.length() ) {
TQString type = autoDetectParams[ i ].type; TQString type = autoDetectParams[ i ].type;
if( type == "bzip2" || type == "gzip" ) { if( type == "bzip2" || type == "gzip" || type == "lzip" ) {
KTar tapeArchive( fileName ); KTar tapeArchive( fileName );
if( tapeArchive.open( IO_ReadOnly ) ) { if( tapeArchive.open( IO_ReadOnly ) ) {
tapeArchive.close(); tapeArchive.close();
if( type == "bzip2" ) if( type == "bzip2" )
type = "tbz"; type = "tbz";
else else if( type == "gzip" )
type = "tgz"; type = "tgz";
else
type = "tlz";
} }
} }
else if( type == "zip" ) else if( type == "zip" )

@ -63,6 +63,7 @@ PackGUI::PackGUI(TQString defaultName, TQString defaultPath, int noOfFiles, TQSt
if (PS("tar")) typeData->insertItem("tar"); if (PS("tar")) typeData->insertItem("tar");
if (PS("tar") && PS("gzip")) typeData->insertItem("tar.gz"); if (PS("tar") && PS("gzip")) typeData->insertItem("tar.gz");
if (PS("tar") && PS("bzip2")) typeData->insertItem("tar.bz2"); 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("tar") && PS("xz")) typeData->insertItem("tar.xz");
if (PS("zip")) typeData->insertItem("zip"); if (PS("zip")) typeData->insertItem("zip");
if (PS("rar")) typeData->insertItem("rar"); if (PS("rar")) typeData->insertItem("rar");

@ -59,6 +59,7 @@ KgArchives::KgArchives( bool first, TQWidget* parent, const char* name ) :
{{"Archives","Do Tar", _DoTar, i18n( "Tar" ), false, ""}, {{"Archives","Do Tar", _DoTar, i18n( "Tar" ), false, ""},
{"Archives","Do GZip", _DoGZip, i18n( "GZip" ), false, ""}, {"Archives","Do GZip", _DoGZip, i18n( "GZip" ), false, ""},
{"Archives","Do BZip2", _DoBZip2, i18n( "BZip2" ), false, ""}, {"Archives","Do BZip2", _DoBZip2, i18n( "BZip2" ), false, ""},
{"Archives","Do LZip", _DoLZip, i18n( "LZip" ), false, ""},
{"Archives","Do UnZip", _DoUnZip, i18n( "Zip" ), false, ""}, {"Archives","Do UnZip", _DoUnZip, i18n( "Zip" ), false, ""},
{"Archives","Do UnRar", _DoUnRar, i18n( "Rar" ), false, ""}, {"Archives","Do UnRar", _DoUnRar, i18n( "Rar" ), false, ""},
{"Archives","Do Unarj", _DoArj, i18n( "Arj" ), 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, ""} {"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 ); 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." ), 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 Tar" )->setEnabled(PS("tar"));
cbs->find( "Do GZip" )->setEnabled(PS("gzip")); cbs->find( "Do GZip" )->setEnabled(PS("gzip"));
cbs->find( "Do BZip2" )->setEnabled(PS("bzip2")); cbs->find( "Do BZip2" )->setEnabled(PS("bzip2"));
cbs->find( "Do LZip" )->setEnabled(PS("lzip"));
cbs->find( "Do UnZip" )->setEnabled(PS("unzip")); cbs->find( "Do UnZip" )->setEnabled(PS("unzip"));
cbs->find( "Do Lha" )->setEnabled(PS("lha")); cbs->find( "Do Lha" )->setEnabled(PS("lha"));
cbs->find( "Do RPM" )->setEnabled(PS("rpm") || PS("cpio")); cbs->find( "Do RPM" )->setEnabled(PS("rpm") || PS("cpio"));

@ -86,14 +86,15 @@ KgDependencies::KgDependencies( bool first, TQWidget* parent, const char* name
addApplication( "dpkg", archGrid1, 4, packers_tab, PAGE_PACKERS ); addApplication( "dpkg", archGrid1, 4, packers_tab, PAGE_PACKERS );
addApplication( "gzip", archGrid1, 5, packers_tab, PAGE_PACKERS ); addApplication( "gzip", archGrid1, 5, packers_tab, PAGE_PACKERS );
addApplication( "lha", archGrid1, 6, packers_tab, PAGE_PACKERS ); addApplication( "lha", archGrid1, 6, packers_tab, PAGE_PACKERS );
addApplication( "rar", archGrid1, 7, packers_tab, PAGE_PACKERS ); addApplication( "lzip", archGrid1, 7, packers_tab, PAGE_PACKERS );
addApplication( "tar", archGrid1, 8, packers_tab, PAGE_PACKERS ); addApplication( "rar", archGrid1, 8, packers_tab, PAGE_PACKERS );
addApplication( "unace", archGrid1, 9, packers_tab, PAGE_PACKERS ); addApplication( "tar", archGrid1, 9, packers_tab, PAGE_PACKERS );
addApplication( "unarj", archGrid1,10, packers_tab, PAGE_PACKERS ); addApplication( "unace", archGrid1,10, packers_tab, PAGE_PACKERS );
addApplication( "unrar", archGrid1,11, packers_tab, PAGE_PACKERS ); addApplication( "unarj", archGrid1,11, packers_tab, PAGE_PACKERS );
addApplication( "unzip", archGrid1,12, packers_tab, PAGE_PACKERS ); addApplication( "unrar", archGrid1,12, packers_tab, PAGE_PACKERS );
addApplication( "zip", archGrid1,13, packers_tab, PAGE_PACKERS ); addApplication( "unzip", archGrid1,13, packers_tab, PAGE_PACKERS );
addApplication( "xz", archGrid1,14, packers_tab, PAGE_PACKERS ); addApplication( "zip", archGrid1,14, packers_tab, PAGE_PACKERS );
addApplication( "xz", archGrid1,15, packers_tab, PAGE_PACKERS );
// ---------------------------- CHECKSUM TAB ------------------------------------- // ---------------------------- CHECKSUM TAB -------------------------------------
TQWidget *checksum_tab = new TQWidget( tabWidget, "tab_4" ); TQWidget *checksum_tab = new TQWidget( tabWidget, "tab_4" );

@ -131,6 +131,7 @@ TQFrame *line2 = createLine( generalGrp, "line2" );
TQStringList defaultAtomicExtensions; TQStringList defaultAtomicExtensions;
defaultAtomicExtensions += ".tar.gz"; defaultAtomicExtensions += ".tar.gz";
defaultAtomicExtensions += ".tar.bz2"; defaultAtomicExtensions += ".tar.bz2";
defaultAtomicExtensions += ".tar.lz";
defaultAtomicExtensions += ".moc.cpp"; defaultAtomicExtensions += ".moc.cpp";
defaultAtomicExtensions += ".tar.xz"; defaultAtomicExtensions += ".tar.xz";

@ -49,13 +49,15 @@ TQString KgProtocols::defaultKrarcMimes = "application/x-7z,application/x-7z-com
"application/x-debian-package," "application/x-debian-package,"
"application/x-gzip,application/x-jar," "application/x-gzip,application/x-jar,"
"application/x-lha,application/x-lha-compressed," "application/x-lha,application/x-lha-compressed,"
"application/x-lzip,"
"application/x-rar," "application/x-rar,"
"application/x-rpm," "application/x-rpm,"
"application/x-xz," "application/x-xz,"
"application/x-zip"; "application/x-zip";
TQString KgProtocols::defaultTarMimes = "application/x-tar,application/x-tarz," TQString KgProtocols::defaultTarMimes = "application/x-tar,application/x-tarz,"
"application/x-compressed-tar," "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 ) : KgProtocols::KgProtocols( bool first, TQWidget* parent, const char* name ) :
KonfiguratorPage( first, parent, name ) KonfiguratorPage( first, parent, name )

@ -102,6 +102,7 @@ KrArchiverResultTable::KrArchiverResultTable(TQWidget* parent)
Archiver* tar = new Archiver("tar", "http://www.gnu.org", PS("tar"), true, true); 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* 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* 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* 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* 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); 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(tar, _grid);
addRow(gzip, _grid); addRow(gzip, _grid);
addRow(bzip2, _grid); addRow(bzip2, _grid);
addRow(lzip, _grid);
addRow(lha, _grid); addRow(lha, _grid);
addRow(zip, _grid); addRow(zip, _grid);
addRow(unzip, _grid); addRow(unzip, _grid);
@ -155,6 +157,7 @@ KrArchiverResultTable::KrArchiverResultTable(TQWidget* parent)
delete tar; delete tar;
delete gzip; delete gzip;
delete bzip2; delete bzip2;
delete lzip;
delete lha; delete lha;
delete zip; delete zip;
delete unzip; delete unzip;

@ -1318,6 +1318,7 @@ void KrBriefView::initProperties() {
TQStringList defaultAtomicExtensions; TQStringList defaultAtomicExtensions;
defaultAtomicExtensions += ".tar.gz"; defaultAtomicExtensions += ".tar.gz";
defaultAtomicExtensions += ".tar.bz2"; defaultAtomicExtensions += ".tar.bz2";
defaultAtomicExtensions += ".tar.lz";
defaultAtomicExtensions += ".moc.cpp"; defaultAtomicExtensions += ".moc.cpp";
defaultAtomicExtensions += ".tar.xz"; defaultAtomicExtensions += ".tar.xz";
TQStringList atomicExtensions = krConfig->readListEntry("Atomic Extensions", defaultAtomicExtensions); TQStringList atomicExtensions = krConfig->readListEntry("Atomic Extensions", defaultAtomicExtensions);

@ -1029,7 +1029,8 @@ void KrDetailedView::keyPressEvent( TQKeyEvent * e ) {
if( KRarcHandler::arcSupported( type ) ) { if( KRarcHandler::arcSupported( type ) ) {
KURL url = i->VF->vfile_getUrl(); 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" ); url.setProtocol( "tar" );
else else
url.setProtocol( "krarc" ); url.setProtocol( "krarc" );
@ -1413,6 +1414,7 @@ void KrDetailedView::initProperties() {
TQStringList defaultAtomicExtensions; TQStringList defaultAtomicExtensions;
defaultAtomicExtensions += ".tar.gz"; defaultAtomicExtensions += ".tar.gz";
defaultAtomicExtensions += ".tar.bz2"; defaultAtomicExtensions += ".tar.bz2";
defaultAtomicExtensions += ".tar.lz";
defaultAtomicExtensions += ".moc.cpp"; defaultAtomicExtensions += ".moc.cpp";
defaultAtomicExtensions += ".tar.xz"; defaultAtomicExtensions += ".tar.xz";
TQStringList atomicExtensions = krConfig->readListEntry("Atomic Extensions", defaultAtomicExtensions); TQStringList atomicExtensions = krConfig->readListEntry("Atomic Extensions", defaultAtomicExtensions);

@ -11,6 +11,7 @@
TQString atomicExtensions[] = { TQString atomicExtensions[] = {
".tar.gz", ".tar.gz",
".tar.bz2", ".tar.bz2",
".tar.lz",
".moc.cpp", ".moc.cpp",
".tar.xz", ".tar.xz",
}; };

@ -173,7 +173,8 @@ void KRSearchMod::scanLocalDir( KURL urlToScan )
TQString realType = KRarcHandler::getType( encrypted, url.path(), mime ); TQString realType = KRarcHandler::getType( encrypted, url.path(), mime );
if( !encrypted ) { 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" ); archiveURL.setProtocol( "tar" );
else else
archiveURL.setProtocol( "krarc" ); archiveURL.setProtocol( "krarc" );

@ -102,6 +102,15 @@ arc_vfs::arc_vfs(TQString origin,TQString type,TQObject* panel,bool write):
ignoreLines = -1; ignoreLines = -1;
isWritable = false; isWritable = false;
} }
if( type == "lzip" ){
cmd = KrServices::fullPathName ( "lzip" );
listCmd = " -l ";
delCmd = "";
addCmd = cmd + " -c ";
getCmd = " -dc ";
ignoreLines = -1;
isWritable = false;
}
if(type == "-tar"){ if(type == "-tar"){
cmd = KrServices::fullPathName( "tar" ); cmd = KrServices::fullPathName( "tar" );
listCmd = " -tvf"; listCmd = " -tvf";
@ -124,6 +133,14 @@ arc_vfs::arc_vfs(TQString origin,TQString type,TQObject* panel,bool write):
addCmd = cmd+" -uvjf"; addCmd = cmd+" -uvjf";
getCmd = " -xjvf"; getCmd = " -xjvf";
isWritable = false; 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"){ if(type == "-zip"){
password = KRarcHandler::getPassword(arcFile,type); password = KRarcHandler::getPassword(arcFile,type);
@ -233,7 +250,7 @@ bool arc_vfs::getDirs(){
temp.open(IO_ReadOnly); temp.open(IO_ReadOnly);
char buf[1000]; char buf[1000];
TQString line; 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 temp.readLine(line,10000); // skip the first line - it's garbage
if( vfs_type == "-rar" ){ if( vfs_type == "-rar" ){
while(temp.readLine(line,10000) != -1) 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)) ); krApp, TQT_SLOT(incProgress(TDEProcess*,char*,int)) );
proc << cmd << getCmd << "\""+arcFile+"\""; 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() ; ){ for(unsigned int i=0 ; i < files.count() ; ){
proc << (prefix+*files.at(i++)); proc << (prefix+*files.at(i++));
if ( i%MAX_FILES==0 || i==files.count() ){ if ( i%MAX_FILES==0 || i==files.count() ){
@ -595,7 +613,8 @@ void arc_vfs::repack(){
} }
// finaly repack tmpDir // 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; TQStringList filesToPack;
getFilesToPack(&filesToPack); getFilesToPack(&filesToPack);
if( !filesToPack.isEmpty() ){ if( !filesToPack.isEmpty() ){
@ -604,7 +623,7 @@ void arc_vfs::repack(){
connect(&addProc,TQT_SIGNAL(receivedStdout(TDEProcess*,char*,int)), connect(&addProc,TQT_SIGNAL(receivedStdout(TDEProcess*,char*,int)),
krApp, TQT_SLOT(incProgress(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 << addCmd << *filesToPack.at(0)<< ">" << "\""+arcFile+"\"";
addProc.start(TDEProcess::NotifyOnExit); addProc.start(TDEProcess::NotifyOnExit);
while( addProc.isRunning() ) tqApp->processEvents(); while( addProc.isRunning() ) tqApp->processEvents();
@ -752,16 +771,19 @@ void arc_vfs::parseLine(TQString line, TQFile* temp){
mode_t mode = 0; mode_t mode = 0;
// parse gziped files // parse gziped and lzipped files
if(vfs_type == "gzip"){ if( vfs_type == "gzip" || vfs_type == "lzip" ) {
KDE_struct_stat stat_p; KDE_struct_stat stat_p;
KDE_stat(arcFile.local8Bit(),&stat_p); KDE_stat(arcFile.local8Bit(),&stat_p);
nextWord(line); if( vfs_type == "gzip" ) nextWord(line); // gzip compressed size
size = nextWord(line).toLong(); size = nextWord(line).toLong(); // uncompressed size
nextWord(line); if( vfs_type == "lzip" ) nextWord(line); // lzip compressed size
nextWord(line); // ratio or saved
name = nextWord(line,'\n'); name = nextWord(line,'\n');
if(name.contains('/')) name = name.mid(name.findRev('/')+1,name.length()); 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) ; perm = KRpermHandler::mode2TQString(stat_p.st_mode) ;
owner = KRpermHandler::user2uid(qfi.owner()); owner = KRpermHandler::user2uid(qfi.owner());
group = KRpermHandler::group2gid(qfi.group()); group = KRpermHandler::group2gid(qfi.group());
@ -783,7 +805,8 @@ void arc_vfs::parseLine(TQString line, TQFile* temp){
} }
// parse tar files // 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); perm = nextWord(line);
TQString temp = nextWord(line); TQString temp = nextWord(line);
owner = temp.left(temp.findRev('/')).toInt(); owner = temp.left(temp.findRev('/')).toInt();

@ -46,7 +46,7 @@
#include "../krservices.h" #include "../krservices.h"
#include "../Dialogs/krpleasewait.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; TDEWallet::Wallet * KRarcHandler::wallet = 0;
@ -57,6 +57,7 @@ TQStringList KRarcHandler::supportedPackers() {
if ( KrServices::cmdExist( "tar" ) ) packers.append( "tar" ); if ( KrServices::cmdExist( "tar" ) ) packers.append( "tar" );
if ( KrServices::cmdExist( "gzip" ) ) packers.append( "gzip" ); if ( KrServices::cmdExist( "gzip" ) ) packers.append( "gzip" );
if ( KrServices::cmdExist( "bzip2" ) ) packers.append( "bzip2" ); if ( KrServices::cmdExist( "bzip2" ) ) packers.append( "bzip2" );
if ( KrServices::cmdExist( "lzip" ) ) packers.append( "lzip" );
if ( KrServices::cmdExist( "unzip" ) ) packers.append( "unzip" ); if ( KrServices::cmdExist( "unzip" ) ) packers.append( "unzip" );
if ( KrServices::cmdExist( "zip" ) ) packers.append( "zip" ); if ( KrServices::cmdExist( "zip" ) ) packers.append( "zip" );
if ( KrServices::cmdExist( "lha" ) ) packers.append( "lha" ); if ( KrServices::cmdExist( "lha" ) ) packers.append( "lha" );
@ -91,6 +92,8 @@ bool KRarcHandler::arcSupported( TQString type ) {
return true; return true;
else if ( type == "-tgz" && lst.contains( "tar" ) ) else if ( type == "-tgz" && lst.contains( "tar" ) )
return true; return true;
else if ( type == "-tlz" && lst.contains( "tar" ) )
return true;
else if ( type == "-txz" && lst.contains( "tar" ) ) else if ( type == "-txz" && lst.contains( "tar" ) )
return true; return true;
else if ( type == "tarz" && lst.contains( "tar" ) ) else if ( type == "tarz" && lst.contains( "tar" ) )
@ -99,6 +102,8 @@ bool KRarcHandler::arcSupported( TQString type ) {
return true; return true;
else if ( type == "zip2" && lst.contains( "bzip2" ) ) else if ( type == "zip2" && lst.contains( "bzip2" ) )
return true; return true;
else if ( type == "lzip" && lst.contains( "lzip" ) )
return true;
else if ( type == "-lha" && lst.contains( "lha" ) ) else if ( type == "-lha" && lst.contains( "lha" ) )
return true; return true;
else if ( type == "-ace" && lst.contains( "unace" ) ) else if ( type == "-ace" && lst.contains( "unace" ) )
@ -130,9 +135,11 @@ bool KRarcHandler::arcHandled( TQString type ) {
( type == "tarz" && krConfig->readBoolEntry( "Do GZip" , _DoGZip ) ) || ( type == "tarz" && krConfig->readBoolEntry( "Do GZip" , _DoGZip ) ) ||
( type == "-tar" && krConfig->readBoolEntry( "Do Tar" , _DoTar ) ) || ( type == "-tar" && krConfig->readBoolEntry( "Do Tar" , _DoTar ) ) ||
( type == "-tbz" && krConfig->readBoolEntry( "Do BZip2", _DoBZip2 ) ) || ( type == "-tbz" && krConfig->readBoolEntry( "Do BZip2", _DoBZip2 ) ) ||
( type == "-tlz" && krConfig->readBoolEntry( "Do LZip" , _DoLZip ) ) ||
( type == "-txz" && krConfig->readBoolEntry( "Do Xz" , _DoXz ) ) || ( type == "-txz" && krConfig->readBoolEntry( "Do Xz" , _DoXz ) ) ||
( type == "gzip" && krConfig->readBoolEntry( "Do GZip" , _DoGZip ) ) || ( type == "gzip" && krConfig->readBoolEntry( "Do GZip" , _DoGZip ) ) ||
( type == "zip2" && krConfig->readBoolEntry( "Do BZip2", _DoBZip2 ) ) || ( type == "zip2" && krConfig->readBoolEntry( "Do BZip2", _DoBZip2 ) ) ||
( type == "lzip" && krConfig->readBoolEntry( "Do LZip" , _DoLZip ) ) ||
( type == "-zip" && krConfig->readBoolEntry( "Do UnZip", _DoUnZip ) ) || ( type == "-zip" && krConfig->readBoolEntry( "Do UnZip", _DoUnZip ) ) ||
( type == "-lha" && krConfig->readBoolEntry( "Do Lha" , _DoUnZip ) ) || ( type == "-lha" && krConfig->readBoolEntry( "Do Lha" , _DoUnZip ) ) ||
( type == "-rar" && krConfig->readBoolEntry( "Do UnRar", _DoUnRar ) ) || ( type == "-rar" && krConfig->readBoolEntry( "Do UnRar", _DoUnRar ) ) ||
@ -155,8 +162,9 @@ long KRarcHandler::arcFileCount( TQString archive, TQString type, TQString passw
// first check if supported // first check if supported
if ( !arcSupported( type ) ) return 0; if ( !arcSupported( type ) ) return 0;
// bzip, gzip and xz archives contain only one file // bzip, gzip, lzip and xz archives contain only one file
if ( type == "zip2" || type == "gzip" || type == "-xz") return 1L; if ( type == "zip2" || type == "gzip" || type == "lzip" || type == "-xz" )
return 1L;
// set the right lister to do the job // set the right lister to do the job
TQString lister; 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 == "-tgz" ) lister = KrServices::fullPathName( "tar" ) + " -tvzf";
else if ( type == "tarz" ) 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 == "-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 == "-txz" ) lister = KrServices::fullPathName( "tar" ) + " -tJvf";
else if ( type == "-lha" ) lister = KrServices::fullPathName( "lha" ) + " l"; else if ( type == "-lha" ) lister = KrServices::fullPathName( "lha" ) + " l";
else if ( type == "-rar" ) lister = KrServices::fullPathName( KrServices::cmdExist( "rar" ) ? "rar" : "unrar" ) + " l -v"; 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 == "-tgz" ) packer = KrServices::fullPathName( "tar" ) + " -xvzf";
else if ( type == "tarz" ) 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 == "-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 == "-txz" ) packer = KrServices::fullPathName( "tar" ) + " -xJvf";
else if ( type == "gzip" ) packer = KrServices::fullPathName( "gzip" ) + " -cd"; else if ( type == "gzip" ) packer = KrServices::fullPathName( "gzip" ) + " -cd";
else if ( type == "zip2" ) packer = KrServices::fullPathName( "bzip2" ) + " -cdk"; 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 == "-lha" ) packer = KrServices::fullPathName( "lha" ) + " xf";
else if ( type == "-rar" ) packer = KrServices::fullPathName( KrServices::cmdExist( "rar" ) ? "rar" : "unrar" ) + " -y x"; else if ( type == "-rar" ) packer = KrServices::fullPathName( KrServices::cmdExist( "rar" ) ? "rar" : "unrar" ) + " -y x";
else if ( type == "-ace" ) packer = KrServices::fullPathName( "unace" ) + " 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 // unpack the files
KrShellProcess proc; KrShellProcess proc;
proc << packer << " " + KrServices::quote( archive ); proc << packer << " " + KrServices::quote( archive );
if( type == "zip2" || type=="gzip" ){ if( type == "zip2" || type=="gzip" || type=="lzip" ){
TQString arcname = archive.mid(archive.findRev("/")+1); TQString arcname = archive.mid(archive.findRev("/")+1);
if( arcname.contains(".") ) arcname = arcname.left(arcname.findRev(".")); if( arcname.contains(".") ) arcname = arcname.left(arcname.findRev("."));
proc << ">" << KrServices::quote( dest+"/"+arcname ); 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 == "-tgz" ) packer = KrServices::fullPathName( "tar" ) + " -tvzf";
else if ( type == "tarz" ) 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 == "-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 == "-txz" ) packer = KrServices::fullPathName( "tar" ) + " -tJvf";
else if ( type == "gzip" ) packer = KrServices::fullPathName( "gzip" ) + " -tv"; else if ( type == "gzip" ) packer = KrServices::fullPathName( "gzip" ) + " -tv";
else if ( type == "zip2" ) packer = KrServices::fullPathName( "bzip2" ) + " -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 == "-rar" ) packer = KrServices::fullPathName( KrServices::cmdExist( "rar" ) ? "rar" : "unrar" ) + " t";
else if ( type == "-ace" ) packer = KrServices::fullPathName( "unace" ) + " t"; else if ( type == "-ace" ) packer = KrServices::fullPathName( "unace" ) + " t";
else if ( type == "-lha" ) packer = KrServices::fullPathName( "lha" ) + " 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" ) { packer = KrServices::fullPathName( "tar" ) + " -cvf"; type = "-tar"; }
else if ( type == "tar.gz" ) { packer = KrServices::fullPathName( "tar" ) + " -cvzf"; type = "-tgz"; } 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.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 == "tar.xz" ) { packer = KrServices::fullPathName( "tar" ) + " -cvJf"; type = "-txz"; }
else if ( type == "rar" ) { packer = KrServices::fullPathName( "rar" ) + " -r a"; type = "-rar"; } else if ( type == "rar" ) { packer = KrServices::fullPathName( "rar" ) + " -r a"; type = "-rar"; }
else if ( type == "lha" ) { packer = KrServices::fullPathName( "lha" ) + " a"; type = "-lha"; } 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; return exitCode == 0 || exitCode == 1;
else if( type == "-ace" || type == "zip2" || type == "-lha" || type == "-rpm" || type == "cpio" || else if( type == "-ace" || type == "zip2" || type == "-lha" || type == "-rpm" || type == "cpio" ||
type == "-tar" || type == "tarz" || type == "-tbz" || type == "-tgz" || type == "-arj" || 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; return exitCode == 0;
else if (type == "gzip" || type == "-xz") else if (type == "gzip" || type == "-xz")
return exitCode == 0 || exitCode == 2; return exitCode == 0 || exitCode == 2;
@ -649,6 +664,7 @@ TQString KRarcHandler::detectArchive( bool &encrypted, TQString fileName, bool c
{"ace", 7, "**ACE**" }, {"ace", 7, "**ACE**" },
{"bzip2",0, "\x42\x5a\x68\x39\x31" }, {"bzip2",0, "\x42\x5a\x68\x39\x31" },
{"gzip", 0, "\x1f\x8b"}, {"gzip", 0, "\x1f\x8b"},
{"lzip", 0, "\x4c\x5a\x49\x50\x01" },
{"deb", 0, "!<arch>\ndebian-binary " }, {"deb", 0, "!<arch>\ndebian-binary " },
{"7z", 0, "7z\xbc\xaf\x27\x1c" }, {"7z", 0, "7z\xbc\xaf\x27\x1c" },
{"xz", 0, "\xfd" "7zXZ\x00" } }; {"xz", 0, "\xfd" "7zXZ\x00" } };
@ -680,14 +696,16 @@ TQString KRarcHandler::detectArchive( bool &encrypted, TQString fileName, bool c
if( j == detectionString.length() ) { if( j == detectionString.length() ) {
TQString type = autoDetectParams[ i ].type; TQString type = autoDetectParams[ i ].type;
if( type == "bzip2" || type == "gzip" ) { if( type == "bzip2" || type == "gzip" || type == "lzip" ) {
KTar tapeArchive( fileName ); KTar tapeArchive( fileName );
if( tapeArchive.open( IO_ReadOnly ) ) { if( tapeArchive.open( IO_ReadOnly ) ) {
tapeArchive.close(); tapeArchive.close();
if( type == "bzip2" ) if( type == "bzip2" )
type = "tbz"; type = "tbz";
else else if( type == "gzip" )
type = "tgz"; type = "tgz";
else
type = "tlz";
} }
} }
else if( type == "zip" ) else if( type == "zip" )

@ -173,6 +173,8 @@
#define _DoUnZip true #define _DoUnZip true
// Do BZip2 /////////// // Do BZip2 ///////////
#define _DoBZip2 true #define _DoBZip2 true
// Do LZip ////////////
#define _DoLZip true
// Do Rar ///////////// // Do Rar /////////////
#define _DoRar true #define _DoRar true
// Do UnRar /////////// // Do UnRar ///////////

Loading…
Cancel
Save