From: Claudio Cambra Date: Wed, 20 Jul 2022 15:23:43 +0000 (+0200) Subject: Replace private API QZipWriter with KArchive X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~11^2~285^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=9a0753dabb061b4e3ac753cbdfd272d9bb256212;p=nextcloud-desktop.git Replace private API QZipWriter with KArchive Signed-off-by: Claudio Cambra --- diff --git a/src/csync/std/c_private.h b/src/csync/std/c_private.h index aaa41417f..8307859ac 100644 --- a/src/csync/std/c_private.h +++ b/src/csync/std/c_private.h @@ -67,7 +67,7 @@ #define getuid() 0 #define geteuid() 0 #elif defined(_WIN32) -#define mode_t int +typedef int mode_t; #else #include #endif diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index 5a1157813..15313219e 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -1,5 +1,6 @@ project(gui) find_package(Qt5 REQUIRED COMPONENTS Widgets Svg Qml Quick QuickControls2 Xml Network) +find_package(KF5Archive REQUIRED) if(QUICK_COMPILER) find_package(Qt5QuickCompiler) @@ -566,6 +567,7 @@ target_link_libraries(nextcloudCore Qt5::Qml Qt5::Quick Qt5::QuickControls2 + KF5::Archive ) add_subdirectory(socketapi) diff --git a/src/gui/generalsettings.cpp b/src/gui/generalsettings.cpp index 4a7ff307f..8834c3567 100644 --- a/src/gui/generalsettings.cpp +++ b/src/gui/generalsettings.cpp @@ -45,7 +45,7 @@ #include #include -#include +#include #define QTLEGACY (QT_VERSION < QT_VERSION_CHECK(5,9,0)) @@ -81,7 +81,7 @@ ZipEntry syncFolderToZipEntry(OCC::Folder *f) return fileInfoToZipEntry(journalInfo); } -QVector createFileList() +QVector createDebugArchiveFileList() { auto list = QVector(); OCC::ConfigFile cfg; @@ -91,8 +91,6 @@ QVector createFileList() const auto logger = OCC::Logger::instance(); if (!logger->logDir().isEmpty()) { - list.append({QString(), QStringLiteral("logs")}); - QDir dir(logger->logDir()); const auto infoList = dir.entryInfoList(QDir::Files); std::transform(std::cbegin(infoList), std::cend(infoList), @@ -112,27 +110,24 @@ QVector createFileList() void createDebugArchive(const QString &filename) { - const auto entries = createFileList(); + const auto entries = createDebugArchiveFileList(); + + KZip zip(filename); + zip.open(QIODevice::WriteOnly); - // TODO: Port away from this private API (best to port to KArchive) - QZipWriter zip(filename); - zip.setCreationPermissions(zip.creationPermissions() | QFile::ReadOther); for (const auto &entry : entries) { - if (entry.localFilename.isEmpty()) { - zip.addDirectory(entry.zipFilename); - } else { - QFile file(entry.localFilename); - if (!file.open(QFile::ReadOnly)) { - continue; - } - zip.addFile(entry.zipFilename, &file); - } + zip.addLocalFile(entry.localFilename, entry.zipFilename); } - zip.addFile("__nextcloud_client_parameters.txt", QCoreApplication::arguments().join(' ').toUtf8()); + const auto clientParameters = QCoreApplication::arguments().join(' ').toUtf8(); + zip.prepareWriting("__nextcloud_client_parameters.txt", {}, {}, clientParameters.size()); + zip.writeData(clientParameters, clientParameters.size()); + zip.finishWriting(clientParameters.size()); - const auto buildInfo = QString(OCC::Theme::instance()->about() + "\n\n" + OCC::Theme::instance()->aboutDetails()); - zip.addFile("__nextcloud_client_buildinfo.txt", buildInfo.toUtf8()); + const auto buildInfo = QString(OCC::Theme::instance()->about() + "\n\n" + OCC::Theme::instance()->aboutDetails()).toUtf8(); + zip.prepareWriting("__nextcloud_client_buildinfo.txt", {}, {}, buildInfo.size()); + zip.writeData(buildInfo, buildInfo.size()); + zip.finishWriting(buildInfo.size()); } }