Hello community, here is the log from the commit of package karchive for openSUSE:Factory checked in at 2018-06-22 13:17:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/karchive (Old) and /work/SRC/openSUSE:Factory/.karchive.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "karchive" Fri Jun 22 13:17:44 2018 rev:54 rq:616738 version:5.47.0 Changes: -------- --- /work/SRC/openSUSE:Factory/karchive/karchive.changes 2018-05-18 14:20:11.895336677 +0200 +++ /work/SRC/openSUSE:Factory/.karchive.new/karchive.changes 2018-06-22 13:18:47.571451954 +0200 @@ -1,0 +2,11 @@ +Tue Jun 12 21:26:02 UTC 2018 - lbeltr...@kde.org + +- Update to 5.47.0 + * New feature release + * For more details please see: + * https://www.kde.org/announcements/kde-frameworks-5.47.0.php +- Changes since 5.46.0: + * Bring back kzip.cpp to where it belongs + * handle zip files embedded within zip files (kde#73821) + +------------------------------------------------------------------- Old: ---- karchive-5.46.0.tar.xz New: ---- karchive-5.47.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ karchive.spec ++++++ --- /var/tmp/diff_new_pack.zqXMZV/_old 2018-06-22 13:18:49.235390256 +0200 +++ /var/tmp/diff_new_pack.zqXMZV/_new 2018-06-22 13:18:49.239390109 +0200 @@ -17,13 +17,13 @@ %define lname libKF5Archive5 -%define _tar_path 5.46 +%define _tar_path 5.47 # Full KF5 version (e.g. 5.33.0) %{!?_kf5_version: %global _kf5_version %{version}} # Last major and minor KF5 version (e.g. 5.33) %{!?_kf5_bugfix_version: %global _kf5_bugfix_version %(echo %{_kf5_version} | awk -F. '{print $1"."$2}')} Name: karchive -Version: 5.46.0 +Version: 5.47.0 Release: 0 BuildRequires: cmake >= 3.0 BuildRequires: extra-cmake-modules >= %{_kf5_bugfix_version} ++++++ karchive-5.46.0.tar.xz -> karchive-5.47.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/karchive-5.46.0/CMakeLists.txt new/karchive-5.47.0/CMakeLists.txt --- old/karchive-5.46.0/CMakeLists.txt 2018-05-05 14:38:16.000000000 +0200 +++ new/karchive-5.47.0/CMakeLists.txt 2018-06-02 18:26:35.000000000 +0200 @@ -1,10 +1,10 @@ cmake_minimum_required(VERSION 3.0) -set(KF5_VERSION "5.46.0") # handled by release scripts +set(KF5_VERSION "5.47.0") # handled by release scripts project(KArchive VERSION ${KF5_VERSION}) include(FeatureSummary) -find_package(ECM 5.46.0 NO_MODULE) +find_package(ECM 5.47.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://projects.kde.org/projects/kdesupport/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/karchive-5.46.0/src/kzip.cpp new/karchive-5.47.0/src/kzip.cpp --- old/karchive-5.46.0/src/kzip.cpp 2018-05-05 14:38:16.000000000 +0200 +++ new/karchive-5.47.0/src/kzip.cpp 2018-06-02 18:26:35.000000000 +0200 @@ -311,9 +311,10 @@ * To be called when a 'P' has been found. * @param buffer start of buffer with the 3 bytes behind 'P' * @param dev device that is read from + * @param dataDescriptor only search for data descriptor * @return true if a local or central header begin is or could be reached */ -static bool handlePossibleHeaderBegin(const char *buffer, QIODevice *dev) +static bool handlePossibleHeaderBegin(const char *buffer, QIODevice *dev, bool dataDescriptor) { // we have to detect three magic tokens here: // PK34 for the next local header in case there is no data descriptor @@ -329,8 +330,8 @@ return true; } - if ((buffer[1] == 1 && buffer[2] == 2) - || (buffer[1] == 3 && buffer[2] == 4)) { + if (!dataDescriptor && ((buffer[1] == 1 && buffer[2] == 2) + || (buffer[1] == 3 && buffer[2] == 4))) { // central/local header token found dev->seek(dev->pos() - 4); // go back 4 bytes, so that the magic bytes can be found @@ -347,7 +348,7 @@ * @param dev device that is read from * @return true if a local or central header token could be reached, false on error */ -static bool seekToNextHeaderToken(QIODevice *dev) +static bool seekToNextHeaderToken(QIODevice *dev, bool dataDescriptor) { bool headerTokenFound = false; char buffer[3]; @@ -369,7 +370,7 @@ return false; } - if (handlePossibleHeaderBegin(buffer, dev)) { + if (handlePossibleHeaderBegin(buffer, dev, dataDescriptor)) { headerTokenFound = true; } else { for (int i = 0; i < 3; ++i) { @@ -543,7 +544,7 @@ if (gpf & 8) { // here we have to read through the compressed data to find // the next PKxx - if (!seekToNextHeaderToken(dev)) { + if (!seekToNextHeaderToken(dev, true)) { setErrorString(tr("Could not seek to next header token")); return false; } @@ -566,7 +567,7 @@ if (compr_size > dev->size()) { // here we cannot trust the compressed size, so scan through the compressed // data to find the next header - if (!seekToNextHeaderToken(dev)) { + if (!seekToNextHeaderToken(dev, false)) { setErrorString(tr("Could not seek to next header token")); return false; } @@ -594,7 +595,7 @@ return false; } - if (buffer[0] != 'P' || !handlePossibleHeaderBegin(buffer + 1, dev)) { + if (buffer[0] != 'P' || !handlePossibleHeaderBegin(buffer + 1, dev, false)) { // assume data descriptor without signature dev->seek(dev->pos() + 8); // skip rest of the 'data_descriptor' } @@ -813,7 +814,7 @@ } else { setErrorString( tr("Invalid ZIP file. Unrecognized header at offset %1") - .arg(offset)); + .arg(dev->pos() - 4)); return false; } }