diff options
author | Claudio Cambra <claudio.cambra@gmail.com> | 2022-07-20 18:23:43 +0300 |
---|---|---|
committer | Claudio Cambra <claudio.cambra@gmail.com> | 2022-09-07 20:10:03 +0300 |
commit | 9a0753dabb061b4e3ac753cbdfd272d9bb256212 (patch) | |
tree | ea2037a568ad7e258227153108416fbbc81573e7 /src | |
parent | b7b374c4428cde952c7cbcdb40d0f46b71c5a45e (diff) |
Replace private API QZipWriter with KArchive
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/csync/std/c_private.h | 2 | ||||
-rw-r--r-- | src/gui/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/gui/generalsettings.cpp | 35 |
3 files changed, 18 insertions, 21 deletions
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 <fcntl.h> #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 <QScopedValueRollback> #include <QMessageBox> -#include <private/qzipwriter_p.h> +#include <KZip> #define QTLEGACY (QT_VERSION < QT_VERSION_CHECK(5,9,0)) @@ -81,7 +81,7 @@ ZipEntry syncFolderToZipEntry(OCC::Folder *f) return fileInfoToZipEntry(journalInfo); } -QVector<ZipEntry> createFileList() +QVector<ZipEntry> createDebugArchiveFileList() { auto list = QVector<ZipEntry>(); OCC::ConfigFile cfg; @@ -91,8 +91,6 @@ QVector<ZipEntry> 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<ZipEntry> 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()); } } |