--- krusader-2.3.0-beta1.orig/krArc/krarc.cpp 2010-12-26 00:37:52.000000000 +0200 +++ krusader-2.3.0-beta1/krArc/krarc.cpp 2011-01-03 00:53:16.836670713 +0200 @@ -423,7 +423,7 @@ if (mt) emit mimeType(mt->name()); proc << getCmd << getPath(arcFile->url()); - if (arcType != "gzip" && arcType != "bzip2" && arcType != "lzma") proc << localeEncodedString(file); + if (arcType != "gzip" && arcType != "bzip2" && arcType != "lzma" && arcType != "xz") proc << localeEncodedString(file); connect(&proc, SIGNAL(newOutputData(KProcess *, QByteArray &)), this, SLOT(receivedData(KProcess *, QByteArray &))); proc.setMerge(false); @@ -440,7 +440,7 @@ proc.waitForFinished(); if (!extArcReady && !decompressToFile) { - if (proc.exitStatus() != QProcess::NormalExit || !checkStatus(proc.exitCode()) || (arcType != "bzip2" && arcType != "lzma" && expectedSize != decompressedLen)) { + if (proc.exitStatus() != QProcess::NormalExit || !checkStatus(proc.exitCode()) || (arcType != "bzip2" && arcType != "lzma" && arcType != "xz" && expectedSize != decompressedLen)) { if (encrypted && tries) { invalidatePassword(); get(url, tries - 1); @@ -827,6 +827,8 @@ arcType = "gzip"; else if (arcType == "tlz") arcType = "lzma"; + else if (arcType == "txz") + arcType = "xz"; if (arcType.isEmpty()) { arcType = arcFile->mimetype(); @@ -861,7 +863,7 @@ return false; } - if (arcType != "bzip2" && arcType != "lzma") { + if (arcType != "bzip2" && arcType != "lzma" && arcType != "xz") { if (arcType == "rpm") { proc << listCmd << arcPath; proc.setStandardOutputFile(temp.fileName()); @@ -896,7 +898,7 @@ root->append(entry); - if (arcType == "bzip2" || arcType == "lzma") { + if (arcType == "bzip2" || arcType == "lzma" || arcType == "xz") { KRDEBUG("Got me here..."); parseLine(0, ""); return true; @@ -1207,6 +1209,14 @@ mode = arcFile->mode(); size = arcFile->size(); } + if (arcType == "xz") { + fullName = arcFile->name(); + if (fullName.endsWith(QLatin1String("xz"))) { + fullName.truncate(fullName.length() - 3); + } + mode = arcFile->mode(); + size = arcFile->size(); + } if (arcType == "bzip2") { // There is no way to list bzip2 files, so we take our information from // the archive itself... @@ -1460,6 +1470,13 @@ copyCmd = QStringList(); delCmd = QStringList(); putCmd = QStringList(); + } else if (arcType == "xz") { + cmd = fullPathName("xz"); + listCmd << fullPathName("xz"); + getCmd << fullPathName("xz") << "-dc"; + copyCmd = QStringList(); + delCmd = QStringList(); + putCmd = QStringList(); } else if (arcType == "arj") { cmd = fullPathName("arj"); listCmd << fullPathName("arj") << "v" << "-y" << "-v"; @@ -1544,7 +1561,7 @@ return exitCode == 0 || exitCode == 1; else if (arcType == "ace" || arcType == "bzip2" || arcType == "lha" || arcType == "rpm" || arcType == "arj") return exitCode == 0; - else if (arcType == "gzip" || arcType == "lzma") + else if (arcType == "gzip" || arcType == "lzma" || arcType == "xz") return exitCode == 0 || exitCode == 2; else return exitCode == 0; @@ -1566,7 +1583,8 @@ {"bzip2", 0, "\x42\x5a\x68\x39\x31" }, {"gzip", 0, "\x1f\x8b"}, {"deb", 0, "!\ndebian-binary " }, - {"7z", 0, "7z\xbc\xaf\x27\x1c" } + {"7z", 0, "7z\xbc\xaf\x27\x1c" }/*, + {"xz", 0, "\xfd\x37\x7a\x58\x5a\x00"}*/ }; static int autoDetectElems = sizeof(autoDetectParams) / sizeof(AutoDetectParams); @@ -1714,6 +1732,14 @@ return "lzma"; } + if (fileName.endsWith(QLatin1String(".tar.xz")) || + fileName.endsWith(QLatin1String(".txz"))) { + return "txz"; + } + if (fileName.endsWith(QLatin1String(".xz"))) { + return "xz"; + } + return QString(); } --- krusader-2.3.0-beta1.orig/krusader/Dialogs/packgui.cpp 2010-12-26 00:37:50.000000000 +0200 +++ krusader-2.3.0-beta1/krusader/Dialogs/packgui.cpp 2011-01-03 00:55:05.843337380 +0200 @@ -68,6 +68,7 @@ if (PS("tar") && PS("gzip")) typeData->addItem("tar.gz"); if (PS("tar") && PS("bzip2")) typeData->addItem("tar.bz2"); if (PS("tar") && PS("lzma")) typeData->addItem("tar.lzma"); + if (PS("tar") && PS("xz")) typeData->addItem("tar.xz"); if (PS("zip")) typeData->addItem("zip"); if (PS("rar")) typeData->addItem("rar"); if (PS("lha")) typeData->addItem("lha"); --- krusader-2.3.0-beta1.orig/krusader/Konfigurator/kgarchives.cpp 2010-12-26 00:37:51.000000000 +0200 +++ krusader-2.3.0-beta1/krusader/Konfigurator/kgarchives.cpp 2011-01-03 00:57:00.326670713 +0200 @@ -62,6 +62,7 @@ {{"Archives", "Do Tar", _DoTar, i18n("Tar"), false, ""}, {"Archives", "Do GZip", _DoGZip, i18n("GZip"), false, ""}, {"Archives", "Do LZMA", _DoLZMA, i18n("LZMA"), false, ""}, + {"Archives", "Do XZ", _DoXZ, i18n("XZ"), false, ""}, {"Archives", "Do BZip2", _DoBZip2, i18n("BZip2"), false, ""}, {"Archives", "Do UnZip", _DoUnZip, i18n("Zip"), false, ""}, {"Archives", "Do UnRar", _DoUnRar, i18n("Rar"), false, ""}, @@ -73,7 +74,7 @@ {"Archives", "Do 7z", _Do7z, i18n("7zip"), 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 \"grayed out\" were unavailable on your\n" @@ -148,6 +149,7 @@ cbs->find("Do GZip")->setEnabled(PS("gzip")); cbs->find("Do BZip2")->setEnabled(PS("bzip2")); cbs->find("Do LZMA")->setEnabled(PS("lzma")); + cbs->find("Do XZ")->setEnabled(PS("xz")); cbs->find("Do UnZip")->setEnabled(PS("unzip")); cbs->find("Do Lha")->setEnabled(PS("lha")); cbs->find("Do RPM")->setEnabled(PS("rpm") || PS("cpio")); --- krusader-2.3.0-beta1.orig/krusader/Konfigurator/kgdependencies.cpp 2010-12-26 00:37:51.000000000 +0200 +++ krusader-2.3.0-beta1/krusader/Konfigurator/kgdependencies.cpp 2011-01-03 00:57:30.006670714 +0200 @@ -100,6 +100,7 @@ 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 ------------------------------------- QWidget *checksum_tab = new QWidget(tabWidget); --- krusader-2.3.0-beta1.orig/krusader/Konfigurator/kggeneral.cpp 2010-12-26 00:37:51.000000000 +0200 +++ krusader-2.3.0-beta1/krusader/Konfigurator/kggeneral.cpp 2011-01-03 00:58:39.056670713 +0200 @@ -193,6 +193,7 @@ defaultAtomicExtensions += ".tar.gz"; defaultAtomicExtensions += ".tar.bz2"; defaultAtomicExtensions += ".tar.lzma"; + defaultAtomicExtensions += ".tar.xz"; defaultAtomicExtensions += ".moc.cpp"; listBox = createListBox("Look&Feel", "Atomic Extensions", --- krusader-2.3.0-beta1.orig/krusader/Konfigurator/kgprotocols.cpp 2010-12-26 00:37:51.000000000 +0200 +++ krusader-2.3.0-beta1/krusader/Konfigurator/kgprotocols.cpp 2011-01-03 01:00:49.756670713 +0200 @@ -51,12 +51,14 @@ "application/x-gzip,application/x-jar," "application/x-lha,application/x-lha-compressed," "application/x-rar,application/x-rar-compressed," + "application/x-xz," "application/x-rpm,application/zip," "application/x-zip,application/x-zip-compressed"; QString KgProtocols::defaultTarMimes = "application/x-tar,application/x-tarz," "application/x-bzip-compressed-tar," "application/x-compressed-tar," - "application/x-tbz,application/x-tgz"; + "application/x-tbz,application/x-tgz," + "application/x-xz-compressed-tar"; KgProtocols::KgProtocols(bool first, QWidget* parent) : KonfiguratorPage(first, parent) --- krusader-2.3.0-beta1.orig/krusader/Konfigurator/krresulttable.cpp 2010-12-26 00:37:51.000000000 +0200 +++ krusader-2.3.0-beta1/krusader/Konfigurator/krresulttable.cpp 2011-01-03 01:02:42.460004046 +0200 @@ -102,6 +102,7 @@ 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* lzma = new Archiver("lzma", "http://tukaani.org/lzma", PS("lzma"), true, true); + Archiver* xz = new Archiver("xz", "http://tukaani.org/xz", PS("xz"), 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 @@ addRow(gzip, _grid); addRow(bzip2, _grid); addRow(lzma, _grid); + addRow(xz, _grid); addRow(lha, _grid); addRow(zip, _grid); addRow(unzip, _grid); @@ -155,6 +157,7 @@ delete gzip; delete bzip2; delete lzma; + delete xz; delete lha; delete zip; delete unzip; --- krusader-2.3.0-beta1.orig/krusader/Panel/krview.cpp 2010-12-26 00:37:51.000000000 +0200 +++ krusader-2.3.0-beta1/krusader/Panel/krview.cpp 2011-01-03 01:03:53.033337380 +0200 @@ -367,6 +367,7 @@ defaultAtomicExtensions += ".tar.gz"; defaultAtomicExtensions += ".tar.bz2"; defaultAtomicExtensions += ".tar.lzma"; + defaultAtomicExtensions += ".tar.xz"; defaultAtomicExtensions += ".moc.cpp"; QStringList atomicExtensions = grpSvr.readEntry("Atomic Extensions", defaultAtomicExtensions); for (QStringList::iterator i = atomicExtensions.begin(); i != atomicExtensions.end();) { --- krusader-2.3.0-beta1.orig/krusader/VFS/krarchandler.cpp 2010-12-26 00:37:51.000000000 +0200 +++ krusader-2.3.0-beta1/krusader/VFS/krarchandler.cpp 2011-01-03 01:14:58.190004047 +0200 @@ -85,7 +85,7 @@ }; #endif -static QStringList arcProtocols = QString("tar;bzip;bzip2;lzma;gzip;krarc;zip").split(';'); +static QStringList arcProtocols = QString("tar;bzip;bzip2;lzma;xz;gzip;krarc;zip").split(';'); KWallet::Wallet * KRarcHandler::wallet = 0; @@ -98,6 +98,7 @@ if (KrServices::cmdExist("gzip")) packers.append("gzip"); if (KrServices::cmdExist("bzip2")) packers.append("bzip2"); if (KrServices::cmdExist("lzma")) packers.append("lzma"); + if (KrServices::cmdExist("xz")) packers.append("xz"); if (KrServices::cmdExist("unzip")) packers.append("unzip"); if (KrServices::cmdExist("zip")) packers.append("zip"); if (KrServices::cmdExist("lha")) packers.append("lha"); @@ -134,6 +135,8 @@ 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")) return true; else if (type == "gzip" && lst.contains("gzip")) @@ -142,6 +145,8 @@ return true; else if (type == "lzma" && lst.contains("lzma")) return true; + else if (type == "-xz" && lst.contains("xz")) + return true; else if (type == "-lha" && lst.contains("lha")) return true; else if (type == "-ace" && lst.contains("unace")) @@ -173,6 +178,7 @@ (type == "-tar" && group.readEntry("Do Tar" , _DoTar)) || (type == "-tbz" && group.readEntry("Do BZip2", _DoBZip2)) || (type == "-tlz" && group.readEntry("Do LZMA", _DoLZMA)) || + (type == "-txz" && group.readEntry("Do XZ", _DoXZ)) || (type == "gzip" && group.readEntry("Do GZip" , _DoGZip)) || (type == "zip2" && group.readEntry("Do BZip2", _DoBZip2)) || (type == "-zip" && group.readEntry("Do UnZip", _DoUnZip)) || @@ -198,7 +204,7 @@ if (!arcSupported(type)) return 0; // bzip an gzip archive contains only one file - if (type == "zip2" || type == "gzip" || type == "lzma") return 1L; + if (type == "zip2" || type == "gzip" || type == "lzma" || type == "-xz") return 1L; // set the right lister to do the job QStringList lister; @@ -209,6 +215,7 @@ 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") << "--lzma" << "-tvf"; + else if (type == "-txz") lister << KrServices::fullPathName("tar") << "--xz" << "-tvf"; 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 == "-ace") lister << KrServices::fullPathName("unace") << "l"; @@ -293,9 +300,11 @@ 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") << "--lzma" << "-xvf"; + else if (type == "-txz") packer << KrServices::fullPathName("tar") << "--xz" << "-xvf"; else if (type == "gzip") packer << KrServices::fullPathName("gzip") << "-cd"; else if (type == "zip2") packer << KrServices::fullPathName("bzip2") << "-cdk"; else if (type == "lzma") packer << KrServices::fullPathName("lzma") << "-cdk"; + else if (type == "-xz") packer << KrServices::fullPathName("xz") << "-cdk"; 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"; @@ -351,7 +360,7 @@ // unpack the files KrLinecountingProcess proc; proc << packer << archive; - if (type == "zip2" || type == "gzip" || type == "lzma") { + if (type == "zip2" || type == "gzip" || type == "lzma" || type == "-xz") { QString arcname = archive.mid(archive.lastIndexOf("/") + 1); if (arcname.contains(".")) arcname = arcname.left(arcname.lastIndexOf(".")); proc.setStandardOutputFile(dest + '/' + arcname); @@ -407,9 +416,11 @@ 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") << "--lzma" << "-tvf"; + else if (type == "-txz") packer << KrServices::fullPathName("tar") << "--xz" << "-tvf"; else if (type == "gzip") packer << KrServices::fullPathName("gzip") << "-tv"; else if (type == "zip2") packer << KrServices::fullPathName("bzip2") << "-tv"; else if (type == "lzma") packer << KrServices::fullPathName("lzma") << "-tv"; + else if (type == "-xz") packer << KrServices::fullPathName("xz") << "-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"; @@ -474,6 +485,8 @@ packer << KrServices::fullPathName("tar") << "-cvjf"; type = "-tbz"; } else if (type == "tar.lzma") { packer << KrServices::fullPathName("tar") << "--lzma" << "-cvf"; type = "-tlz"; + } else if (type == "tar.xz") { + packer << KrServices::fullPathName("tar") << "--xz" << "-cvf"; type = "-txz"; } else if (type == "rar") { packer << KrServices::fullPathName("rar") << "-r" << "a"; type = "-rar"; } else if (type == "lha") { @@ -673,6 +687,10 @@ result = "-7z"; } + if (result.endsWith(QLatin1String("-xz"))) { + result = "-xz"; + } + return result.right(4); } @@ -683,9 +701,9 @@ 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 == "-tlz") + type == "-deb" || type == "-tlz" || type == "-txz") return exitCode == 0; - else if (type == "gzip" || type == "lzma") + else if (type == "gzip" || type == "lzma" || type == "-xz") return exitCode == 0 || exitCode == 2; else return exitCode == 0; @@ -707,7 +725,8 @@ {"bzip2", 0, "\x42\x5a\x68\x39\x31" }, {"gzip", 0, "\x1f\x8b"}, {"deb", 0, "!\ndebian-binary " }, - {"7z", 0, "7z\xbc\xaf\x27\x1c" } + {"7z", 0, "7z\xbc\xaf\x27\x1c" }/*, + {"xz", 0, "\xfd\x37\x7a\x58\x5a\x00"}*/ }; static int autoDetectElems = sizeof(autoDetectParams) / sizeof(AutoDetectParams); @@ -839,6 +858,14 @@ return "lzma"; } + if (fileName.endsWith(QLatin1String(".tar.xz")) || + fileName.endsWith(QLatin1String(".txz"))) { + return "txz"; + } + if (fileName.endsWith(QLatin1String(".xz"))) { + return "xz"; + } + return QString(); } --- krusader-2.3.0-beta1.orig/krusader/defaults.h 2010-12-26 00:37:52.000000000 +0200 +++ krusader-2.3.0-beta1/krusader/defaults.h 2011-01-03 01:15:46.816670713 +0200 @@ -181,6 +181,8 @@ #define _DoBZip2 true // Do LZMA /////////// #define _DoLZMA true +// Do XZ /////////// +#define _DoXZ true // Do Rar ///////////// #define _DoRar true // Do UnRar ///////////