openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
May 2016
- 1 participants
- 1722 discussions
04 May '16
Hello community,
here is the log from the commit of package java-1_7_0-openjdk-bootstrap for openSUSE:13.2:Update checked in at 2016-05-04 12:53:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.2:Update/java-1_7_0-openjdk-bootstrap (Old)
and /work/SRC/openSUSE:13.2:Update/.java-1_7_0-openjdk-bootstrap.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "java-1_7_0-openjdk-bootstrap"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _link ++++++
--- /var/tmp/diff_new_pack.kaQskn/_old 2016-05-04 12:53:09.000000000 +0200
+++ /var/tmp/diff_new_pack.kaQskn/_new 2016-05-04 12:53:09.000000000 +0200
@@ -1 +1 @@
-<link package='java-1_7_0-openjdk-bootstrap.4894' cicount='copy' />
+<link package='java-1_7_0-openjdk-bootstrap.5012' cicount='copy' />
1
0
Hello community,
here is the log from the commit of package mozilla-nss for openSUSE:13.2:Update checked in at 2016-05-04 11:38:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.2:Update/mozilla-nss (Old)
and /work/SRC/openSUSE:13.2:Update/.mozilla-nss.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mozilla-nss"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _link ++++++
--- /var/tmp/diff_new_pack.pB0fQe/_old 2016-05-04 11:38:50.000000000 +0200
+++ /var/tmp/diff_new_pack.pB0fQe/_new 2016-05-04 11:38:50.000000000 +0200
@@ -1 +1 @@
-<link package='mozilla-nss.4805' cicount='copy' />
+<link package='mozilla-nss.5017' cicount='copy' />
1
0
Hello community,
here is the log from the commit of package mozilla-nss.5017 for openSUSE:13.2:Update checked in at 2016-05-04 11:38:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.2:Update/mozilla-nss.5017 (Old)
and /work/SRC/openSUSE:13.2:Update/.mozilla-nss.5017.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mozilla-nss.5017"
Changes:
--------
New Changes file:
--- /dev/null 2016-04-07 01:36:33.300037506 +0200
+++ /work/SRC/openSUSE:13.2:Update/.mozilla-nss.5017.new/mozilla-nss.changes 2016-05-04 11:38:47.000000000 +0200
@@ -0,0 +1,1540 @@
+-------------------------------------------------------------------
+Mon Apr 18 15:53:40 UTC 2016 - normand(a)linux.vnet.ibm.com
+
+- add nss_gcc6_change.patch
+
+-------------------------------------------------------------------
+Tue Mar 15 10:25:38 UTC 2016 - wr(a)rosenauer.org
+
+- update to NSS 3.22.3
+ * required for Firefox 46.0
+ * Increase compatibility of TLS extended master secret,
+ don't send an empty TLS extension last in the handshake
+ (bmo#1243641)
+
+-------------------------------------------------------------------
+Wed Mar 9 15:42:01 UTC 2016 - wr(a)rosenauer.org
+
+- update to NSS 3.22.2
+ New functionality:
+ * RSA-PSS signatures are now supported (bmo#1215295)
+ * Pseudorandom functions based on hashes other than SHA-1 are now supported
+ * Enforce an External Policy on NSS from a config file (bmo#1009429)
+ New functions:
+ * PK11_SignWithMechanism - an extended version PK11_Sign()
+ * PK11_VerifyWithMechanism - an extended version of PK11_Verify()
+ * SSL_PeerSignedCertTimestamps - Get signed_certificate_timestamp
+ TLS extension data
+ * SSL_SetSignedCertTimestamps - Set signed_certificate_timestamp
+ TLS extension data
+ New types:
+ * ssl_signed_cert_timestamp_xtn is added to SSLExtensionType
+ * Constants for several object IDs are added to SECOidTag
+ New macros:
+ * SSL_ENABLE_SIGNED_CERT_TIMESTAMPS
+ * NSS_USE_ALG_IN_SSL
+ * NSS_USE_POLICY_IN_SSL
+ * NSS_RSA_MIN_KEY_SIZE
+ * NSS_DH_MIN_KEY_SIZE
+ * NSS_DSA_MIN_KEY_SIZE
+ * NSS_TLS_VERSION_MIN_POLICY
+ * NSS_TLS_VERSION_MAX_POLICY
+ * NSS_DTLS_VERSION_MIN_POLICY
+ * NSS_DTLS_VERSION_MAX_POLICY
+ * CKP_PKCS5_PBKD2_HMAC_SHA224
+ * CKP_PKCS5_PBKD2_HMAC_SHA256
+ * CKP_PKCS5_PBKD2_HMAC_SHA384
+ * CKP_PKCS5_PBKD2_HMAC_SHA512
+ * CKP_PKCS5_PBKD2_HMAC_GOSTR3411 - (not supported)
+ * CKP_PKCS5_PBKD2_HMAC_SHA512_224 - (not supported)
+ * CKP_PKCS5_PBKD2_HMAC_SHA512_256 - (not supported)
+ Notable changes:
+ * NSS C++ tests are built by default, requiring a C++11 compiler.
+ Set the NSS_DISABLE_GTESTS variable to 1 to disable building these tests.
+ * NSS has been changed to use the PR_GetEnvSecure function that
+ was made available in NSPR 4.12
+
+-------------------------------------------------------------------
+Mon Mar 7 15:41:50 UTC 2016 - wr(a)rosenauer.org
+
+- update to NSS 3.21.1 (bmo#969894)
+ * required for Firefox 45.0
+ * MFSA 2016-35/CVE-2016-1950 (bmo#1245528)
+ Buffer overflow during ASN.1 decoding in NSS
+ * MFSA 2016-36/CVE-2016-1979 (bmo#1185033)
+ Use-after-free during processing of DER encoded keys in NSS
+
+-------------------------------------------------------------------
+Sun Dec 20 10:12:35 UTC 2015 - wr(a)rosenauer.org
+
+- update to NSS 3.21
+ * required for Firefox 44.0
+ New functionality:
+ * certutil now supports a --rename option to change a nickname (bmo#1142209)
+ * TLS extended master secret extension (RFC 7627) is supported (bmo#1117022)
+ * New info functions added for use during mid-handshake callbacks (bmo#1084669)
+ New Functions:
+ * NSS_OptionSet - sets NSS global options
+ * NSS_OptionGet - gets the current value of NSS global options
+ * SECMOD_CreateModuleEx - Create a new SECMODModule structure from module name
+ string, module parameters string, NSS specific parameters string, and NSS
+ configuration parameter string. The module represented by the module
+ structure is not loaded. The difference with SECMOD_CreateModule is the new
+ function handles NSS configuration parameter strings.
+ * SSL_GetPreliminaryChannelInfo - obtains information about a TLS channel prior
+ to the handshake being completed, for use with the callbacks that are invoked
+ during the handshake
+ * SSL_SignaturePrefSet - configures the enabled signature and hash algorithms
+ for TLS
+ * SSL_SignaturePrefGet - retrieves the currently configured signature and hash
+ algorithms
+ * SSL_SignatureMaxCount - obtains the maximum number signature algorithms that
+ can be configured with SSL_SignaturePrefSet
+ * NSSUTIL_ArgParseModuleSpecEx - takes a module spec and breaks it into shared
+ library string, module name string, module parameters string, NSS specific
+ parameters string, and NSS configuration parameter strings. The returned
+ strings must be freed by the caller. The difference with
+ NSS_ArgParseModuleSpec is the new function handles NSS configuration
+ parameter strings.
+ * NSSUTIL_MkModuleSpecEx - take a shared library string, module name string,
+ module parameters string, NSS specific parameters string, and NSS
+ configuration parameter string and returns a module string which the caller
+ must free when it is done. The difference with NSS_MkModuleSpec is the new
+ function handles NSS configuration parameter strings.
+ New Types:
+ * CK_TLS12_MASTER_KEY_DERIVE_PARAMS{_PTR} - parameters {or pointer} for
+ CKM_TLS12_MASTER_KEY_DERIVE
+ * CK_TLS12_KEY_MAT_PARAMS{_PTR} - parameters {or pointer} for
+ CKM_TLS12_KEY_AND_MAC_DERIVE
+ * CK_TLS_KDF_PARAMS{_PTR} - parameters {or pointer} for CKM_TLS_KDF
+ * CK_TLS_MAC_PARAMS{_PTR} - parameters {or pointer} for CKM_TLS_MAC
+ * SSLHashType - identifies a hash function
+ * SSLSignatureAndHashAlg - identifies a signature and hash function
+ * SSLPreliminaryChannelInfo - provides information about the session state
+ prior to handshake completion
+ New Macros:
+ * NSS_RSA_MIN_KEY_SIZE - used with NSS_OptionSet and NSS_OptionGet to set or
+ get the minimum RSA key size
+ * NSS_DH_MIN_KEY_SIZE - used with NSS_OptionSet and NSS_OptionGet to set or
+ get the minimum DH key size
+ * NSS_DSA_MIN_KEY_SIZE - used with NSS_OptionSet and NSS_OptionGet to set or
+ get the minimum DSA key size
+ * CKM_TLS12_MASTER_KEY_DERIVE - derives TLS 1.2 master secret
+ * CKM_TLS12_KEY_AND_MAC_DERIVE - derives TLS 1.2 traffic key and IV
+ * CKM_TLS12_MASTER_KEY_DERIVE_DH - derives TLS 1.2 master secret for DH (and
+ ECDH) cipher suites
+ * CKM_TLS12_KEY_SAFE_DERIVE and CKM_TLS_KDF are identifiers for additional
+ PKCS#12 mechanisms for TLS 1.2 that are currently unused in NSS.
+ * CKM_TLS_MAC - computes TLS Finished MAC
+ * NSS_USE_ALG_IN_SSL_KX - policy flag indicating that keys are used in TLS key
+ exchange
+ * SSL_ERROR_RX_SHORT_DTLS_READ - error code for failure to include a complete
+ DTLS record in a UDP packet
+ * SSL_ERROR_NO_SUPPORTED_SIGNATURE_ALGORITHM - error code for when no valid
+ signature and hash algorithm is available
+ * SSL_ERROR_UNSUPPORTED_SIGNATURE_ALGORITHM - error code for when an
+ unsupported signature and hash algorithm is configured
+ * SSL_ERROR_MISSING_EXTENDED_MASTER_SECRET - error code for when the extended
+ master secret is missing after having been negotiated
+ * SSL_ERROR_UNEXPECTED_EXTENDED_MASTER_SECRET - error code for receiving an
+ extended master secret when previously not negotiated
+ * SSL_ENABLE_EXTENDED_MASTER_SECRET - configuration to enable the TLS extended
+ master secret extension (RFC 7627)
+ * ssl_preinfo_version - used with SSLPreliminaryChannelInfo to indicate that a
+ TLS version has been selected
+ * ssl_preinfo_cipher_suite - used with SSLPreliminaryChannelInfo to indicate
+ that a TLS cipher suite has been selected
+ * ssl_preinfo_all - used with SSLPreliminaryChannelInfo to indicate that all
+ preliminary information has been set
+ Notable Changes:
+ * NSS now builds with elliptic curve ciphers enabled by default (bmo#1205688)
+ * NSS now builds with warnings as errors (bmo#1182667)
+ * The following CA certificates were Removed
+ - CN = VeriSign Class 4 Public Primary Certification Authority - G3
+ - CN = UTN-USERFirst-Network Applications
+ - CN = TC TrustCenter Universal CA III
+ - CN = A-Trust-nQual-03
+ - CN = USERTrust Legacy Secure Server CA
+ - Friendly Name: Digital Signature Trust Co. Global CA 1
+ - Friendly Name: Digital Signature Trust Co. Global CA 3
+ - CN = UTN - DATACorp SGC
+ - O = TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) Kasım 2005
+ * The following CA certificate had the Websites trust bit turned off
+ - OU = Equifax Secure Certificate Authority
+ * The following CA certificates were Added
+ - CN = Certification Authority of WoSign G2
+ - CN = CA WoSign ECC Root
+ - CN = OISTE WISeKey Global Root GB CA
+- increased the minimum level of possible mixed installations
+ (softokn3, freebl3) to 3.21
+- added nss-bmo1236011.patch to fix compiler error (bmo#1236011)
+- disabled testsuite as it currently breaks (bmo#1236340)
+
+-------------------------------------------------------------------
+Sat Dec 19 17:13:21 UTC 2015 - wr(a)rosenauer.org
+
+- update to NSS 3.20.2 (bnc#959888)
+ * MFSA 2015-150/CVE-2015-7575 (bmo#1158489)
+ MD5 signatures accepted within TLS 1.2 ServerKeyExchange in
+ server signature
+
+-------------------------------------------------------------------
+Sun Oct 25 14:44:21 UTC 2015 - wr(a)rosenauer.org
+
+- update to NSS 3.20.1 (bnc#952810)
+ * requires NSPR 4.10.10
+ * MFSA 2015-133/CVE-2015-7181/CVE-2015-7182 (bmo#1192028, bmo#1202868)
+ memory corruption issues
+
+-------------------------------------------------------------------
+Thu Sep 24 15:41:09 UTC 2015 - fstrba(a)suse.com
+
+- Install the static libfreebl.a that is needed in order to link
+ Sun elliptical curves provider in Java 7.
+
+-------------------------------------------------------------------
+Thu Sep 24 09:39:17 UTC 2015 - wr(a)rosenauer.org
+
++++ 1343 more lines (skipped)
++++ between /dev/null
++++ and /work/SRC/openSUSE:13.2:Update/.mozilla-nss.5017.new/mozilla-nss.changes
New:
----
baselibs.conf
cert9.db
key4.db
malloc.patch
mozilla-nss-rpmlintrc
mozilla-nss.changes
mozilla-nss.spec
nss-3.22.3.tar.gz
nss-bmo1236011.patch
nss-config.in
nss-disable-ocsp-test.patch
nss-no-rpath.patch
nss-opt.patch
nss-sqlitename.patch
nss.pc.in
nss_gcc6_change.patch
pkcs11.txt
renegotiate-transitional.patch
setup-nsssysinit.sh
system-nspr.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mozilla-nss.spec ++++++
#
# spec file for package mozilla-nss
#
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2006-2015 Wolfgang Rosenauer
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%global nss_softokn_fips_version 3.21
Name: mozilla-nss
BuildRequires: gcc-c++
BuildRequires: mozilla-nspr-devel >= 4.12
BuildRequires: pkg-config
BuildRequires: sqlite-devel
BuildRequires: zlib-devel
Version: 3.22.3
Release: 0
# bug437293
%ifarch ppc64
Obsoletes: mozilla-nss-64bit
%endif
#
Summary: Network Security Services
License: MPL-2.0
Group: System/Libraries
Url: http://www.mozilla.org/projects/security/pki/nss/
Source: https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_22_3_RT…
# hg clone https://hg.mozilla.org/projects/nss nss-3.22.3/nss ; cd nss-3.22.3/nss ; hg up NSS_3_22_3_RTM
#Source: nss-%{version}.tar.gz
Source1: nss.pc.in
Source3: nss-config.in
Source4: %{name}-rpmlintrc
Source5: baselibs.conf
Source6: setup-nsssysinit.sh
Source7: cert9.db
Source8: key4.db
Source9: pkcs11.txt
#Source10: PayPalEE.cert
Source99: %{name}.changes
Patch1: nss-opt.patch
Patch2: system-nspr.patch
Patch4: nss-no-rpath.patch
Patch5: renegotiate-transitional.patch
Patch6: malloc.patch
Patch7: nss-disable-ocsp-test.patch
Patch8: nss-sqlitename.patch
Patch9: nss-bmo1236011.patch
Patch10: nss_gcc6_change.patch
%define nspr_ver %(rpm -q --queryformat '%{VERSION}' mozilla-nspr)
PreReq: mozilla-nspr >= %nspr_ver
PreReq: libfreebl3 >= %{nss_softokn_fips_version}
PreReq: libsoftokn3 >= %{nss_softokn_fips_version}
%if %{_lib} == lib64
Requires: libnssckbi.so()(64bit)
%else
Requires: libnssckbi.so
%endif
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%define nssdbdir %{_sysconfdir}/pki/nssdb
%ifnarch %sparc
%if ! 0%{?qemu_user_space_build}
# disabled temporarily bmo#1236340
%define run_testsuite 0
%endif
%endif
%description
Network Security Services (NSS) is a set of libraries designed to
support cross-platform development of security-enabled server
applications. Applications built with NSS can support SSL v3,
TLS v1.0, v1.1, v1.2, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3
certificates, and other security standards.
%package devel
Summary: Network (Netscape) Security Services development files
Group: Development/Libraries/Other
Requires: libfreebl3
Requires: libsoftokn3
Requires: mozilla-nspr-devel >= 4.9
Requires: mozilla-nss = %{version}-%{release}
# bug437293
%ifarch ppc64
Obsoletes: mozilla-nss-devel-64bit
%endif
%description devel
Network Security Services (NSS) is a set of libraries designed to
support cross-platform development of security-enabled server
applications. Applications built with NSS can support SSL v3,
TLS v1.0, v1.1, v1.2, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3
certificates, and other security standards.
%package tools
Summary: Tools for developing, debugging, and managing applications that use NSS
Group: System/Management
PreReq: mozilla-nss >= %{version}
%description tools
The NSS Security Tools allow developers to test, debug, and manage
applications that use NSS.
%package sysinit
Summary: System NSS Initialization
Group: System/Management
Requires: mozilla-nss >= %{version}
Requires(post): coreutils
%description sysinit
Default Operation System module that manages applications loading
NSS globally on the system. This module loads the system defined
PKCS #11 modules for NSS and chains with other NSS modules to load
any system or user configured modules.
%package -n libfreebl3
Summary: Freebl library for the Network Security Services
Group: System/Libraries
Provides: libfreebl3-hmac
%description -n libfreebl3
Network Security Services (NSS) is a set of libraries designed to
support cross-platform development of security-enabled server
applications. Applications built with NSS can support SSL v3,
TLS v1.0, v1.1, v1.2, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3
certificates, and other security standards.
This package installs the freebl library from NSS.
%package -n libsoftokn3
Summary: Network Security Services Softoken Module
Group: System/Libraries
Requires: libfreebl3 = %{version}-%{release}
Provides: libsoftokn3-hmac
%description -n libsoftokn3
Network Security Services (NSS) is a set of libraries designed to
support cross-platform development of security-enabled server
applications. Applications built with NSS can support SSL v3,
TLS v1.0, v1.1, v1.2, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3
certificates, and other security standards.
Network Security Services Softoken Cryptographic Module
%package certs
Summary: CA certificates for NSS
Group: Productivity/Networking/Security
%description certs
This package contains the integrated CA root certificates from the
Mozilla project.
%prep
%setup -n nss-%{version} -q
cd nss
%patch1 -p1
%patch2 -p1
%patch4 -p1
%patch5 -p1
%if %suse_version > 1110
%patch6 -p1
%endif
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
# additional CA certificates
#cd security/nss/lib/ckfw/builtins
#cat %{SOURCE2} >> certdata.txt
#make generate
%build
cd nss
modified="$(sed -n '/^----/n;s/ - .*$//;p;q' "%{S:99}")"
DATE="\"$(date -d "${modified}" "+%%b %%e %%Y")\""
TIME="\"$(date -d "${modified}" "+%%R")\""
find . -name '*.[ch]' -print -exec sed -i "s/__DATE__/${DATE}/g;s/__TIME__/${TIME}/g" {} +
export FREEBL_NO_DEPEND=1
export FREEBL_LOWHASH=1
export NSPR_INCLUDE_DIR=`nspr-config --includedir`
export NSPR_LIB_DIR=`nspr-config --libdir`
export OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
export LIBDIR=%{_libdir}
%ifarch x86_64 s390x ppc64 ppc64le ia64 aarch64
export USE_64=1
%endif
export NSS_USE_SYSTEM_SQLITE=1
#export SQLITE_LIB_NAME=nsssqlite3
MAKE_FLAGS="BUILD_OPT=1"
make nss_build_all $MAKE_FLAGS
# run testsuite
%if 0%{?run_testsuite}
export BUILD_OPT=1
export HOST="localhost"
export DOMSUF=" "
export USE_IP=TRUE
export IP_ADDRESS="127.0.0.1"
cd tests
./all.sh
if grep "FAILED" ../../../tests_results/security/localhost.1/output.log ; then
echo "Testsuite FAILED"
exit 1
fi
%endif
%install
cd nss
mkdir -p $RPM_BUILD_ROOT%{_libdir}
mkdir -p $RPM_BUILD_ROOT%{_libexecdir}/nss
mkdir -p $RPM_BUILD_ROOT%{_includedir}/nss3
mkdir -p $RPM_BUILD_ROOT%{_bindir}
mkdir -p $RPM_BUILD_ROOT%{_sbindir}
mkdir -p $RPM_BUILD_ROOT/%{_lib}
mkdir -p $RPM_BUILD_ROOT%{nssdbdir}
pushd ../dist/Linux*
# copy headers
cp -rL ../public/nss/*.h $RPM_BUILD_ROOT%{_includedir}/nss3
# copy some freebl include files we also want
for file in blapi.h alghmac.h
do
cp -L ../private/nss/$file $RPM_BUILD_ROOT/%{_includedir}/nss3
done
# copy dynamic libs
cp -L lib/libnss3.so \
lib/libnssdbm3.so \
lib/libnssdbm3.chk \
lib/libnssutil3.so \
lib/libnssckbi.so \
lib/libnsssysinit.so \
lib/libsmime3.so \
lib/libsoftokn3.so \
lib/libsoftokn3.chk \
lib/libssl3.so \
$RPM_BUILD_ROOT%{_libdir}
cp -L lib/libfreebl3.so \
lib/libfreebl3.chk \
$RPM_BUILD_ROOT/%{_lib}
#cp -L lib/libnsssqlite3.so \
# $RPM_BUILD_ROOT%{_libdir}
# copy static libs
cp -L lib/libcrmf.a \
lib/libfreebl.a \
lib/libnssb.a \
lib/libnssckfw.a \
$RPM_BUILD_ROOT%{_libdir}
# copy tools
cp -L bin/certutil \
bin/cmsutil \
bin/crlutil \
bin/modutil \
bin/pk12util \
bin/signtool \
bin/signver \
bin/ssltap \
$RPM_BUILD_ROOT%{_bindir}
# copy unsupported tools
cp -L bin/atob \
bin/btoa \
bin/derdump \
bin/ocspclnt \
bin/pp \
bin/selfserv \
bin/shlibsign \
bin/strsclnt \
bin/symkeyutil \
bin/tstclnt \
bin/vfyserv \
bin/vfychain \
$RPM_BUILD_ROOT%{_libexecdir}/nss
# prepare pkgconfig file
mkdir -p $RPM_BUILD_ROOT%{_libdir}/pkgconfig/
sed "s:%%LIBDIR%%:%{_libdir}:g
s:%%VERSION%%:%{version}:g
s:%%NSPR_VERSION%%:%{nspr_ver}:g" \
%{SOURCE1} > $RPM_BUILD_ROOT%{_libdir}/pkgconfig/nss.pc
# prepare nss-config file
popd
NSS_VMAJOR=`cat lib/nss/nss.h | grep "#define.*NSS_VMAJOR" | gawk '{print $3}'`
NSS_VMINOR=`cat lib/nss/nss.h | grep "#define.*NSS_VMINOR" | gawk '{print $3}'`
NSS_VPATCH=`cat lib/nss/nss.h | grep "#define.*NSS_VPATCH" | gawk '{print $3}'`
cat %{SOURCE3} | sed -e "s,@libdir@,%{_libdir},g" \
-e "s,@prefix@,%{_prefix},g" \
-e "s,@exec_prefix@,%{_prefix},g" \
-e "s,@includedir@,%{_includedir}/nss3,g" \
-e "s,@MOD_MAJOR_VERSION@,$NSS_VMAJOR,g" \
-e "s,@MOD_MINOR_VERSION@,$NSS_VMINOR,g" \
-e "s,@MOD_PATCH_VERSION@,$NSS_VPATCH,g" \
> $RPM_BUILD_ROOT/%{_bindir}/nss-config
chmod 755 $RPM_BUILD_ROOT/%{_bindir}/nss-config
# setup-nsssysinfo.sh
install -m 744 %{SOURCE6} $RPM_BUILD_ROOT%{_sbindir}/
# create empty NSS database
#LD_LIBRARY_PATH=$RPM_BUILD_ROOT/%{_lib}:$RPM_BUILD_ROOT%{_libdir} $RPM_BUILD_ROOT%{_bindir}/modutil -force -dbdir "sql:$RPM_BUILD_ROOT%{nssdbdir}" -create
#LD_LIBRARY_PATH=$RPM_BUILD_ROOT/%{_lib}:$RPM_BUILD_ROOT%{_libdir} $RPM_BUILD_ROOT%{_bindir}/certutil -N -d "sql:$RPM_BUILD_ROOT%{nssdbdir}" -f /dev/null 2>&1 > /dev/null
#chmod 644 "$RPM_BUILD_ROOT%{nssdbdir}"/*
#sed "s:%{buildroot}::g
#s/^library=$/library=libnsssysinit.so/
#/^NSS/s/\(Flags=internal\)\(,[^m]\)/\1,moduleDBOnly\2/" \
# $RPM_BUILD_ROOT%{nssdbdir}/pkcs11.txt > $RPM_BUILD_ROOT%{nssdbdir}/pkcs11.txt.sed
# mv $RPM_BUILD_ROOT%{nssdbdir}/pkcs11.txt{.sed,}
# copy empty NSS database
install -m 644 %{SOURCE7} $RPM_BUILD_ROOT%{nssdbdir}
install -m 644 %{SOURCE8} $RPM_BUILD_ROOT%{nssdbdir}
install -m 644 %{SOURCE9} $RPM_BUILD_ROOT%{nssdbdir}
# create shlib sigs after extracting debuginfo
%define __spec_install_post \
%{?__debug_package:%{__debug_install_post}} \
%{__arch_install_post} \
%{__os_install_post} \
LD_LIBRARY_PATH=$RPM_BUILD_ROOT/%{_lib}:$RPM_BUILD_ROOT%{_libdir} $RPM_BUILD_ROOT%{_libexecdir}/nss/shlibsign -i $RPM_BUILD_ROOT%{_libdir}/libsoftokn3.so \
LD_LIBRARY_PATH=$RPM_BUILD_ROOT/%{_lib}:$RPM_BUILD_ROOT%{_libdir} $RPM_BUILD_ROOT%{_libexecdir}/nss/shlibsign -i $RPM_BUILD_ROOT%{_libdir}/libnssdbm3.so \
LD_LIBRARY_PATH=$RPM_BUILD_ROOT/%{_lib}:$RPM_BUILD_ROOT%{_libdir} $RPM_BUILD_ROOT%{_libexecdir}/nss/shlibsign -i $RPM_BUILD_ROOT/%{_lib}/libfreebl3.so \
%{nil}
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%post -n libfreebl3 -p /sbin/ldconfig
%postun -n libfreebl3 -p /sbin/ldconfig
%post -n libsoftokn3 -p /sbin/ldconfig
%postun -n libsoftokn3 -p /sbin/ldconfig
%post sysinit
/sbin/ldconfig
# make sure the current config is enabled
%{_sbindir}/setup-nsssysinit.sh on
%preun sysinit
if [ $1 = 0 ]; then
%{_sbindir}/setup-nsssysinit.sh off
fi
%postun sysinit -p /sbin/ldconfig
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-, root, root)
%{_libdir}/libnss3.so
%{_libdir}/libnssutil3.so
%{_libdir}/libsmime3.so
%{_libdir}/libssl3.so
#%{_libdir}/libnsssqlite3.so
%files devel
%defattr(644, root, root, 755)
%{_includedir}/nss3/
%{_libdir}/*.a
%{_libdir}/pkgconfig/*
%attr(755,root,root) %{_bindir}/nss-config
%files tools
%defattr(-, root, root)
%{_bindir}/*
%exclude %{_sbindir}/setup-nsssysinit.sh
%{_libexecdir}/nss/
%exclude %{_bindir}/nss-config
%files sysinit
%defattr(-, root, root)
%dir %{_sysconfdir}/pki
%dir %{_sysconfdir}/pki/nssdb
%config(noreplace) %{_sysconfdir}/pki/nssdb/*
%{_libdir}/libnsssysinit.so
%{_sbindir}/setup-nsssysinit.sh
%files -n libfreebl3
%defattr(-, root, root)
/%{_lib}/libfreebl3.so
/%{_lib}/libfreebl3.chk
%files -n libsoftokn3
%defattr(-, root, root)
%{_libdir}/libsoftokn3.so
%{_libdir}/libsoftokn3.chk
%{_libdir}/libnssdbm3.so
%{_libdir}/libnssdbm3.chk
%files certs
%defattr(-, root, root)
%{_libdir}/libnssckbi.so
%changelog
++++++ baselibs.conf ++++++
mozilla-nss
requires "libfreebl3-<targettype>"
requires "libsoftokn3-<targettype>"
requires "mozilla-nss-certs-<targettype>"
libsoftokn3
requires "libfreebl3-<targettype> = <version>"
+/usr/lib/libsoftokn3.chk
+/usr/lib/libnssdbm3.chk
libfreebl3
+/lib/libfreebl3.chk
mozilla-nss-sysinit
mozilla-nss-certs
++++++ malloc.patch ++++++
Index: security/nss/tests/ssl/ssl.sh
===================================================================
RCS file: /cvsroot/mozilla/security/nss/tests/ssl/ssl.sh,v
retrieving revision 1.100
diff -u -r1.100 ssl.sh
--- security/nss/tests/ssl/ssl.sh 26 Mar 2009 23:14:34 -0000 1.100
+++ nss/tests/ssl/ssl.sh 6 Jun 2009 06:21:07 -0000
@@ -974,6 +974,7 @@
################################# main #################################
+unset MALLOC_CHECK_
ssl_init
ssl_run_tests
ssl_cleanup
++++++ mozilla-nss-rpmlintrc ++++++
addFilter("shlib-policy-name-error")
addFilter("shlib-policy-missing-lib")
addFilter("shlib-policy-missing-suffix")
addFilter("shlib-unversioned-lib")
addFilter("shlib-fixed-dependency")
++++++ nss-bmo1236011.patch ++++++
diff --git a/cmd/modutil/install-ds.h b/nss/cmd/modutil/install-ds.h
--- a/cmd/modutil/install-ds.h
+++ b/cmd/modutil/install-ds.h
@@ -238,17 +238,17 @@ struct Pk11Install_Info_str {
int numPlatforms;
Pk11Install_PlatformName *forwardCompatible;
int numForwardCompatible;
};
Pk11Install_Info*
Pk11Install_Info_new();
void
-Pk11Install_Info_init();
+Pk11Install_Info_init(Pk11Install_Info* _this);
void
Pk11Install_Info_delete(Pk11Install_Info* _this);
/*// Returns NULL for success, error message if parse error.*/
char*
Pk11Install_Info_Generate(Pk11Install_Info* _this,
const Pk11Install_ValueList *list);
/*// Returns NULL if there is no matching platform*/
Pk11Install_Platform*
++++++ nss-config.in ++++++
#!/bin/sh
prefix=@prefix@
major_version=@MOD_MAJOR_VERSION@
minor_version=@MOD_MINOR_VERSION@
patch_version=@MOD_PATCH_VERSION@
usage()
{
cat <<EOF
Usage: nss-config [OPTIONS] [LIBRARIES]
Options:
[--prefix[=DIR]]
[--exec-prefix[=DIR]]
[--includedir[=DIR]]
[--libdir[=DIR]]
[--version]
[--libs]
[--cflags]
Dynamic Libraries:
nss
ssl
smime
EOF
exit $1
}
if test $# -eq 0; then
usage 1 1>&2
fi
lib_ssl=yes
lib_smime=yes
lib_nss=yes
lib_nssutil=yes
while test $# -gt 0; do
case "$1" in
-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
*) optarg= ;;
esac
case $1 in
--prefix=*)
prefix=$optarg
;;
--prefix)
echo_prefix=yes
;;
--exec-prefix=*)
exec_prefix=$optarg
;;
--exec-prefix)
echo_exec_prefix=yes
;;
--includedir=*)
includedir=$optarg
;;
--includedir)
echo_includedir=yes
;;
--libdir=*)
libdir=$optarg
;;
--libdir)
echo_libdir=yes
;;
--version)
echo ${major_version}.${minor_version}.${patch_version}
;;
--cflags)
echo_cflags=yes
;;
--libs)
echo_libs=yes
;;
ssl)
lib_ssl=yes
;;
smime)
lib_smime=yes
;;
nss)
lib_nss=yes
;;
nssutil)
lib_nssutil=yes
;;
*)
usage 1 1>&2
;;
esac
shift
done
# Set variables that may be dependent upon other variables
if test -z "$exec_prefix"; then
exec_prefix=@exec_prefix@
fi
if test -z "$includedir"; then
includedir=@includedir@
fi
if test -z "$libdir"; then
libdir=@libdir@
fi
if test "$echo_prefix" = "yes"; then
echo $prefix
fi
if test "$echo_exec_prefix" = "yes"; then
echo $exec_prefix
fi
if test "$echo_includedir" = "yes"; then
echo $includedir
fi
if test "$echo_libdir" = "yes"; then
echo $libdir
fi
if test "$echo_cflags" = "yes"; then
echo -I$includedir
fi
if test "$echo_libs" = "yes"; then
libdirs="-Wl,-rpath-link,$libdir -L$libdir"
if test -n "$lib_ssl"; then
libdirs="$libdirs -lssl${major_version}"
fi
if test -n "$lib_smime"; then
libdirs="$libdirs -lsmime${major_version}"
fi
if test -n "$lib_nss"; then
libdirs="$libdirs -lnss${major_version}"
fi
if test -n "$lib_nssutil"; then
libdirs="$libdirs -lnssutil${major_version}"
fi
echo $libdirs
fi
++++++ nss-disable-ocsp-test.patch ++++++
diff --git a/tests/chains/scenarios/scenarios b/tests/chains/scenarios/scenarios
--- a/tests/chains/scenarios/scenarios
+++ b/tests/chains/scenarios/scenarios
@@ -45,12 +45,11 @@ mapping.cfg
mapping2.cfg
aia.cfg
bridgewithaia.cfg
bridgewithhalfaia.cfg
bridgewithpolicyextensionandmapping.cfg
realcerts.cfg
dsa.cfg
revoc.cfg
-ocsp.cfg
crldp.cfg
trustanchors.cfg
nameconstraints.cfg
++++++ nss-no-rpath.patch ++++++
Index: security/nss/cmd/platlibs.mk
===================================================================
RCS file: /cvsroot/mozilla/security/nss/cmd/platlibs.mk,v
retrieving revision 1.71
diff -u -p -6 -r1.71 platlibs.mk
--- security/nss/cmd/platlibs.mk 17 Jul 2012 15:22:42 -0000 1.71
+++ nss/cmd/platlibs.mk 25 Oct 2012 12:07:35 -0000
@@ -15,15 +15,15 @@ else
EXTRA_SHARED_LIBS += -R '$$ORIGIN/../lib:/usr/lib/mps/secv1:/usr/lib/mps'
endif
endif
ifeq ($(OS_ARCH), Linux)
ifeq ($(USE_64), 1)
-EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib64:/opt/sun/private/lib64:$$ORIGIN/../lib'
+#EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib64:/opt/sun/private/lib64:$$ORIGIN/../lib'
else
-EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib:/opt/sun/private/lib'
+#EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib:/opt/sun/private/lib'
endif
endif
endif # BUILD_SUN_PKG
ifdef NSS_DISABLE_DBM
++++++ nss-opt.patch ++++++
Index: security/coreconf/Linux.mk
===================================================================
RCS file: /cvsroot/mozilla/security/coreconf/Linux.mk,v
retrieving revision 1.45.2.1
diff -u -r1.45.2.1 Linux.mk
--- security/coreconf/Linux.mk 31 Jul 2010 04:23:37 -0000 1.45.2.1
+++ nss/coreconf/Linux.mk 5 Aug 2010 07:35:06 -0000
@@ -112,11 +112,7 @@
endif
ifdef BUILD_OPT
-ifeq (11,$(ALLOW_OPT_CODE_SIZE)$(OPT_CODE_SIZE))
- OPTIMIZER = -Os
-else
- OPTIMIZER = -O2
-endif
+ OPTIMIZER = $(OPT_FLAGS)
ifdef MOZ_DEBUG_SYMBOLS
ifdef MOZ_DEBUG_FLAGS
OPTIMIZER += $(MOZ_DEBUG_FLAGS)
++++++ nss-sqlitename.patch ++++++
Index: security/nss/lib/sqlite/manifest.mn
===================================================================
RCS file: /cvsroot/mozilla/security/nss/lib/sqlite/manifest.mn,v
retrieving revision 1.5
diff -u -r1.5 manifest.mn
--- security/nss/lib/sqlite/manifest.mn 25 Apr 2012 14:50:11 -0000 1.5
+++ nss/lib/sqlite/manifest.mn 28 Jan 2013 20:48:22 -0000
@@ -6,9 +6,10 @@
MODULE = nss
-LIBRARY_NAME = sqlite
+LIBRARY_NAME = nsssqlite
LIBRARY_VERSION = 3
MAPFILE = $(OBJDIR)/sqlite.def
+MAPFILE_SOURCE = sqlite.def
DEFINES += -DSQLITE_THREADSAFE=1
EXPORTS = \
++++++ nss.pc.in ++++++
prefix=/usr
exec_prefix=${prefix}
libdir=%LIBDIR%
includedir=${prefix}/include/nss3
Name: NSS
Description: Network Security Services
Version: %VERSION%
Requires: nspr >= %NSPR_VERSION%
Libs: -lssl3 -lsmime3 -lnss3 -lnssutil3
Cflags: -I${includedir}
++++++ nss_gcc6_change.patch ++++++
From: Michel Normand <normand(a)linux.vnet.ibm.com>
Subject: nss gcc6 change
Date: Mon, 18 Apr 2016 19:11:03 +0200
nss changes required to avoid build error with gcc6 like:
===
[ 58s] h_page.c: In function 'new_lseek':
[ 58s] h_page.c:117:8: error: this 'if' clause does not guard... [-Werror=misleading-indentation]
[ 58s] if(offset < 1)
[ 58s] ^~
[ 58s] h_page.c:120:3: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if'
[ 58s] cur_pos = lseek(fd, 0, SEEK_CUR);
[ 58s] ^~~~~~~
===
Signed-off-by: Michel Normand <normand(a)linux.vnet.ibm.com>
---
cmd/bltest/blapitest.c | 4 +--
cmd/vfychain/vfychain.c | 3 +-
lib/dbm/src/h_page.c | 55 +++++++++++++++++++++-----------------------
lib/dbm/src/hash.c | 60 ++++++++++++++++++++++++------------------------
4 files changed, 61 insertions(+), 61 deletions(-)
Index: nss/lib/dbm/src/h_page.c
===================================================================
--- nss.orig/lib/dbm/src/h_page.c
+++ nss/lib/dbm/src/h_page.c
@@ -112,26 +112,25 @@ long new_lseek(int fd, long offset, int
long end_pos=0;
long seek_pos=0;
- if(origin == SEEK_CUR)
- {
- if(offset < 1)
- return(lseek(fd, offset, SEEK_CUR));
+ if (origin == SEEK_CUR) {
+ if (offset < 1)
+ return(lseek(fd, offset, SEEK_CUR));
- cur_pos = lseek(fd, 0, SEEK_CUR);
+ cur_pos = lseek(fd, 0, SEEK_CUR);
+
+ if (cur_pos < 0)
+ return(cur_pos);
+ }
- if(cur_pos < 0)
- return(cur_pos);
- }
-
end_pos = lseek(fd, 0, SEEK_END);
- if(end_pos < 0)
+ if (end_pos < 0)
return(end_pos);
- if(origin == SEEK_SET)
+ if (origin == SEEK_SET)
seek_pos = offset;
- else if(origin == SEEK_CUR)
+ else if (origin == SEEK_CUR)
seek_pos = cur_pos + offset;
- else if(origin == SEEK_END)
+ else if (origin == SEEK_END)
seek_pos = end_pos + offset;
else
{
@@ -143,7 +142,7 @@ long new_lseek(int fd, long offset, int
* end of the file. We don't need
* to do anything special except the seek.
*/
- if(seek_pos <= end_pos)
+ if (seek_pos <= end_pos)
return(lseek(fd, seek_pos, SEEK_SET));
/* the seek position is beyond the end of the
@@ -161,7 +160,7 @@ long new_lseek(int fd, long offset, int
memset(buffer, 0, 1024);
while(len > 0)
{
- if(write(fd, buffer, (size_t)(1024 > len ? len : 1024)) < 0)
+ if (write(fd, buffer, (size_t)(1024 > len ? len : 1024)) < 0)
return(-1);
len -= 1024;
}
@@ -245,10 +244,10 @@ __delpair(HTAB *hashp, BUFHEAD *bufp, in
* Once we know dst_offset is < BSIZE, we can subtract it from BSIZE
* to get an upper bound on length.
*/
- if(dst_offset > (uint32)hashp->BSIZE)
+ if (dst_offset > (uint32)hashp->BSIZE)
return(DATABASE_CORRUPTED_ERROR);
- if(length > (uint32)(hashp->BSIZE - dst_offset))
+ if (length > (uint32)(hashp->BSIZE - dst_offset))
return(DATABASE_CORRUPTED_ERROR);
memmove(dst, src, length);
@@ -324,7 +323,7 @@ __split_page(HTAB *hashp, uint32 obucket
* off. If it is then the database has
* been corrupted.
*/
- if(ino[n] > off)
+ if (ino[n] > off)
return(DATABASE_CORRUPTED_ERROR);
key.size = off - ino[n];
@@ -355,7 +354,7 @@ __split_page(HTAB *hashp, uint32 obucket
* wrong. LJM
*/
tmp_uint16_array = (uint16*)np;
- if(!PAIRFITS(tmp_uint16_array, &key, &val))
+ if (!PAIRFITS(tmp_uint16_array, &key, &val))
return(DATABASE_CORRUPTED_ERROR);
putpair(np, &key, &val);
@@ -440,7 +439,7 @@ ugly_split(HTAB *hashp, uint32 obucket,
*/
loop_detection++;
- if(loop_detection > MAX_UGLY_SPLIT_LOOPS)
+ if (loop_detection > MAX_UGLY_SPLIT_LOOPS)
return DATABASE_CORRUPTED_ERROR;
if (ino[2] < REAL_KEY && ino[2] != OVFLPAGE) {
@@ -736,7 +735,7 @@ __get_page(HTAB *hashp,
* the maximum number of entries
* in the array
*/
- if((unsigned)max > (size / sizeof(uint16)))
+ if ((unsigned)max > (size / sizeof(uint16)))
return(DATABASE_CORRUPTED_ERROR);
/* do the byte order swap
@@ -749,7 +748,7 @@ __get_page(HTAB *hashp,
/* check the validity of the page here
* (after doing byte order swaping if necessary)
*/
- if(!is_bitmap && bp[0] != 0)
+ if (!is_bitmap && bp[0] != 0)
{
uint16 num_keys = bp[0];
uint16 offset;
@@ -760,11 +759,11 @@ __get_page(HTAB *hashp,
* bp[0] is too large (larger than the whole
* page) then the page is corrupted
*/
- if(bp[0] > (size / sizeof(uint16)))
+ if (bp[0] > (size / sizeof(uint16)))
return(DATABASE_CORRUPTED_ERROR);
/* bound free space */
- if(FREESPACE(bp) > size)
+ if (FREESPACE(bp) > size)
return(DATABASE_CORRUPTED_ERROR);
/* check each key and data offset to make
@@ -776,10 +775,10 @@ __get_page(HTAB *hashp,
for(i=1 ; i <= num_keys; i+=2)
{
/* ignore overflow pages etc. */
- if(bp[i+1] >= REAL_KEY)
+ if (bp[i+1] >= REAL_KEY)
{
- if(bp[i] > offset || bp[i+1] > bp[i])
+ if (bp[i] > offset || bp[i+1] > bp[i])
return(DATABASE_CORRUPTED_ERROR);
offset = bp[i+1];
@@ -832,7 +831,7 @@ __put_page(HTAB *hashp, char *p, uint32
* the maximum number of entries
* in the array
*/
- if((unsigned)max > (size / sizeof(uint16)))
+ if ((unsigned)max > (size / sizeof(uint16)))
return(DATABASE_CORRUPTED_ERROR);
for (i = 0; i <= max; i++)
@@ -1091,7 +1090,7 @@ __free_ovflpage(HTAB *hashp, BUFHEAD *ob
uint32 bit_address, free_page, free_bit;
uint16 ndx;
- if(!obufp || !obufp->addr)
+ if (!obufp || !obufp->addr)
return;
addr = obufp->addr;
Index: nss/lib/dbm/src/hash.c
===================================================================
--- nss.orig/lib/dbm/src/hash.c
+++ nss/lib/dbm/src/hash.c
@@ -154,7 +154,7 @@ __hash_open(const char *file, int flags,
return NULL;
}
hashp->fp = NO_FILE;
- if(file)
+ if (file)
hashp->filename = strdup(file);
/*
@@ -172,7 +172,7 @@ __hash_open(const char *file, int flags,
errno = 0; /* Just in case someone looks at errno */
new_table = 1;
}
- else if(statbuf.st_mtime && statbuf.st_size == 0)
+ else if (statbuf.st_mtime && statbuf.st_size == 0)
{
/* check for a zero length file and delete it
* if it exists
@@ -288,7 +288,7 @@ hash_close(DB *dbp)
return (DBM_ERROR);
hashp = (HTAB *)dbp->internal;
- if(!hashp)
+ if (!hashp)
return (DBM_ERROR);
retval = hdestroy(hashp);
@@ -304,7 +304,7 @@ static int hash_fd(const DB *dbp)
return (DBM_ERROR);
hashp = (HTAB *)dbp->internal;
- if(!hashp)
+ if (!hashp)
return (DBM_ERROR);
if (hashp->fp == -1) {
@@ -480,7 +480,7 @@ hdestroy(HTAB *hashp)
if (hashp->fp != -1)
(void)close(hashp->fp);
- if(hashp->filename) {
+ if (hashp->filename) {
#if defined(_WIN32) || defined(_WINDOWS) || defined(XP_OS2)
if (hashp->is_temp)
(void)unlink(hashp->filename);
@@ -578,7 +578,7 @@ hash_sync(const DB *dbp, uint flags)
return (DBM_ERROR);
hashp = (HTAB *)dbp->internal;
- if(!hashp)
+ if (!hashp)
return (DBM_ERROR);
if (!hashp->save_file)
@@ -670,7 +670,7 @@ hash_get(
rv = hash_access(hashp, HASH_GET, (DBT *)key, data);
- if(rv == DATABASE_CORRUPTED_ERROR)
+ if (rv == DATABASE_CORRUPTED_ERROR)
{
#if defined(unix) && defined(DEBUG)
printf("\n\nDBM Database has been corrupted, tell Lou...\n\n");
@@ -707,7 +707,7 @@ hash_put(
rv = hash_access(hashp, flag == R_NOOVERWRITE ?
HASH_PUTNEW : HASH_PUT, (DBT *)key, (DBT *)data);
- if(rv == DATABASE_CORRUPTED_ERROR)
+ if (rv == DATABASE_CORRUPTED_ERROR)
{
#if defined(unix) && defined(DEBUG)
printf("\n\nDBM Database has been corrupted, tell Lou...\n\n");
@@ -741,7 +741,7 @@ hash_delete(
}
rv = hash_access(hashp, HASH_DELETE, (DBT *)key, NULL);
- if(rv == DATABASE_CORRUPTED_ERROR)
+ if (rv == DATABASE_CORRUPTED_ERROR)
{
#if defined(unix) && defined(DEBUG)
printf("\n\nDBM Database has been corrupted, tell Lou...\n\n");
@@ -802,27 +802,27 @@ hash_access(
ndx += 2;
} else if (bp[1] == OVFLPAGE) {
- /* database corruption: overflow loop detection */
- if(last_overflow_page_no == (int32)*bp)
- return (DATABASE_CORRUPTED_ERROR);
-
- last_overflow_page_no = *bp;
-
- rbufp = __get_buf(hashp, *bp, rbufp, 0);
- if (!rbufp) {
- save_bufp->flags &= ~BUF_PIN;
- return (DBM_ERROR);
- }
-
- ovfl_loop_count++;
- if(ovfl_loop_count > MAX_OVERFLOW_HASH_ACCESS_LOOPS)
- return (DATABASE_CORRUPTED_ERROR);
-
- /* FOR LOOP INIT */
- bp = (uint16 *)rbufp->page;
- n = *bp++;
- ndx = 1;
- off = hashp->BSIZE;
+ /* database corruption: overflow loop detection */
+ if (last_overflow_page_no == (int32)*bp)
+ return (DATABASE_CORRUPTED_ERROR);
+
+ last_overflow_page_no = *bp;
+
+ rbufp = __get_buf(hashp, *bp, rbufp, 0);
+ if (!rbufp) {
+ save_bufp->flags &= ~BUF_PIN;
+ return (DBM_ERROR);
+ }
+
+ ovfl_loop_count++;
+ if (ovfl_loop_count > MAX_OVERFLOW_HASH_ACCESS_LOOPS)
+ return (DATABASE_CORRUPTED_ERROR);
+
+ /* FOR LOOP INIT */
+ bp = (uint16 *)rbufp->page;
+ n = *bp++;
+ ndx = 1;
+ off = hashp->BSIZE;
} else if (bp[1] < REAL_KEY) {
if ((ndx =
__find_bigpair(hashp, rbufp, ndx, kp, (int)size)) > 0)
Index: nss/cmd/bltest/blapitest.c
===================================================================
--- nss.orig/cmd/bltest/blapitest.c
+++ nss/cmd/bltest/blapitest.c
@@ -1571,8 +1571,8 @@ bltest_seed_init(bltestCipherInfo *ciphe
cipherInfo->cipher.symmkeyCipher = seed_Encrypt;
else
cipherInfo->cipher.symmkeyCipher = seed_Decrypt;
-
- return SECSuccess;
+
+ return SECSuccess;
}
SECStatus
Index: nss/cmd/vfychain/vfychain.c
===================================================================
--- nss.orig/cmd/vfychain/vfychain.c
+++ nss/cmd/vfychain/vfychain.c
@@ -439,7 +439,8 @@ main(int argc, char *argv[], char *envp[
case 0 : /* positional parameter */ goto breakout;
case 'a' : isAscii = PR_TRUE; break;
case 'b' : secStatus = DER_AsciiToTime(&time, optstate->value);
- if (secStatus != SECSuccess) Usage(progName); break;
+ if (secStatus != SECSuccess) Usage(progName);
+ break;
case 'd' : certDir = PL_strdup(optstate->value); break;
case 'e' : ocsp_fetchingFailureIsAFailure = PR_FALSE; break;
case 'f' : certFetching = PR_TRUE; break;
++++++ pkcs11.txt ++++++
library=libnsssysinit.so
name=NSS Internal PKCS #11 Module
parameters=configdir='sql:/etc/pki/nssdb' certPrefix='' keyPrefix='' secmod='secmod.db' flags= updatedir='' updateCertPrefix='' updateKeyPrefix='' updateid='' updateTokenDescription=''
NSS=Flags=internal,moduleDBOnly,critical trustOrder=75 cipherOrder=100 slotParams=(1={slotFlags=[RSA,DSA,DH,RC2,RC4,DES,RANDOM,SHA1,MD5,MD2,SSL,TLS,AES,Camellia,SEED,SHA256,SHA512] askpw=any timeout=30})
++++++ renegotiate-transitional.patch ++++++
diff --git a/lib/ssl/sslsock.c b/lib/ssl/sslsock.c
index e6b2387..87fbe1d 100644
--- a/lib/ssl/sslsock.c
+++ b/lib/ssl/sslsock.c
@@ -74,7 +74,7 @@ static sslOptions ssl_defaults = {
PR_FALSE, /* noLocks */
PR_FALSE, /* enableSessionTickets */
PR_FALSE, /* enableDeflate */
- 2, /* enableRenegotiation (default: requires extension) */
+ 3, /* enableRenegotiation (default: requires extension) */
PR_FALSE, /* requireSafeNegotiation */
PR_FALSE, /* enableFalseStart */
PR_TRUE, /* cbcRandomIV */
++++++ setup-nsssysinit.sh ++++++
#!/bin/sh
#
# Turns on or off the nss-sysinit module db by editing the
# global PKCS #11 congiguration file.
#
# This script can be invoked by the user as super user.
# It is invoked at nss-sysinit post install time with argument on
# and at nss-sysinit pre uninstall with argument off.
#
usage()
{
cat <<EOF
Usage: setup-nsssysinit [on|off]
on - turns on nsssysinit
off - turns off nsssysinit
EOF
exit $1
}
# validate
if test $# -eq 0; then
usage 1 1>&2
fi
# the system-wide configuration file
p11conf="/etc/pki/nssdb/pkcs11.txt"
# must exist, otherwise report it and exit with failure
if [ ! -f $p11conf ]; then
echo "Could not find ${p11conf}"
exit 1
fi
on="1"
case "$1" in
on | ON )
cat ${p11conf} | \
sed -e 's/^library=$/library=libnsssysinit.so/' \
-e '/^NSS/s/\(Flags=internal\)\(,[^m]\)/\1,moduleDBOnly\2/' > \
${p11conf}.on
mv ${p11conf}.on ${p11conf}
;;
off | OFF )
if [ ! `grep "^library=libnsssysinit" ${p11conf}` ]; then
exit 0
fi
cat ${p11conf} | \
sed -e 's/^library=libnsssysinit.so/library=/' \
-e '/^NSS/s/Flags=internal,moduleDBOnly/Flags=internal/' > \
${p11conf}.off
mv ${p11conf}.off ${p11conf}
;;
* )
usage 1 1>&2
;;
esac
++++++ system-nspr.patch ++++++
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -39,17 +39,17 @@ include $(CORE_DEPTH)/coreconf/rules.mk
#######################################################################
#######################################################################
# (7) Execute "local" rules. (OPTIONAL). #
#######################################################################
-nss_build_all: build_nspr all
+nss_build_all: all
nss_clean_all: clobber_nspr clobber
NSPR_CONFIG_STATUS = $(CORE_DEPTH)/../nspr/$(OBJDIR_NAME)/config.status
NSPR_CONFIGURE = $(CORE_DEPTH)/../nspr/configure
#
# Translate coreconf build options to NSPR configure options.
1
0
Hello community,
here is the log from the commit of package MozillaFirefox.5017 for openSUSE:13.2:Update checked in at 2016-05-04 11:38:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.2:Update/MozillaFirefox.5017 (Old)
and /work/SRC/openSUSE:13.2:Update/.MozillaFirefox.5017.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "MozillaFirefox.5017"
Changes:
--------
New Changes file:
--- /dev/null 2016-04-07 01:36:33.300037506 +0200
+++ /work/SRC/openSUSE:13.2:Update/.MozillaFirefox.5017.new/MozillaFirefox.changes 2016-05-04 11:38:38.000000000 +0200
@@ -0,0 +1,4657 @@
+-------------------------------------------------------------------
+Wed Apr 27 08:39:28 UTC 2016 - badshah400(a)gmail.com
+
+- Update mozilla-gtk3_20.patch for Firefox 46.0 (sync to latest
+ version from Fedora).
+
+-------------------------------------------------------------------
+Wed Apr 27 06:09:30 UTC 2016 - wr(a)rosenauer.org
+
+- update to Firefox 46.0 (boo#977333)
+ * Improved security of the JavaScript Just In Time (JIT) Compiler
+ * WebRTC fixes to improve performance and stability
+ * Added support for document.elementsFromPoint
+ * Added HKDF support for Web Crypto API
+ * requires NSPR 4.12 and NSS 3.22.3
+ * added patch to fix unchecked return value
+ mozilla-check_return.patch
+ * Gtk3 builds not supported at the moment
+ security fixes:
+ * MFSA 2016-39/CVE-2016-2804/CVE-2016-2806/CVE-2016-2807
+ (boo#977373, boo#977375, boo#977376)
+ Miscellaneous memory safety hazards
+ * MFSA 2016-40/CVE-2016-2809 (bmo#1212939, boo#977377)
+ Privilege escalation through file deletion by Maintenance Service updater
+ (Windows only)
+ * MFSA 2016-41/CVE-2016-2810 (bmo#1229681, boo#977378)
+ Content provider permission bypass allows malicious application
+ to access data (Android only)
+ * MFSA 2016-42/CVE-2016-2811/CVE-2016-2812
+ (bmo#1252330, bmo#1261776, boo#977379)
+ Use-after-free and buffer overflow in Service Workers
+ * MFSA 2016-43/CVE-2016-2813 (bmo#1197901, bmo#2714650, boo#977380)
+ Disclosure of user actions through JavaScript with motion and
+ orientation sensors (only affects mobile variants)
+ * MFSA 2016-44/CVE-2016-2814 (bmo#1254721, boo#977381)
+ Buffer overflow in libstagefright with CENC offsets
+ * MFSA 2016-45/CVE-2016-2816 (bmo#1223743, boo#977382)
+ CSP not applied to pages sent with multipart/x-mixed-replace
+ * MFSA 2016-46/CVE-2016-2817 (bmo#1227462, boo#977384)
+ Elevation of privilege with chrome.tabs.update API in web extensions
+ * MFSA 2016-47/CVE-2016-2808 (bmo#1246061, boo#977386)
+ Write to invalid HashMap entry through JavaScript.watch()
+ * MFSA 2016-48/CVE-2016-2820 (bmo#870870, boo#977388)
+ Firefox Health Reports could accept events from untrusted domains
+
+-------------------------------------------------------------------
+Thu Apr 21 12:00:28 UTC 2016 - badshah400(a)gmail.com
+
+- Update mozilla-gtk3_20.patch to fix scrollbar appearance under
+ gtk >= 3.20 (patch synced to Fedora's version).
+
+-------------------------------------------------------------------
+Tue Apr 12 19:11:30 UTC 2016 - badshah400(a)gmail.com
+
+- Compile against gtk3 depending on whether the macro
+ %firefox_use_gtk3 is defined or not (e.g., at the prjconf
+ level); macro is undefined by default and so gtk2 is used as the
+ default toolkit.
+- Add BuildRequires for additional packages needed when building
+ against gtk3: pkgconfig(glib-2.0), pkgconfig(gobject-2.0),
+ pkgconfig(gtk+-3.0) >= 3.4.0, pkgconfig(gtk+-unix-print-3.0).
+- Add firefox-gtk3_20.patch to fix appearance with gtk3 >= 3.20;
+ patch taken from Fedora (bmo#1230955).
+
+-------------------------------------------------------------------
+Mon Apr 11 22:49:24 UTC 2016 - astieger(a)suse.com
+
+- Mozilla Firefox 45.0.2:
+ * Fix an issue impacting the cookie header when third-party
+ cookies are blocked (bmo#1257861)
+ * Fix a web compatibility regression impacting the srcset
+ attribute of the image tag (bmo#1259482)
+ * Fix a crash impacting the video playback with Media Source
+ Extension (bmo#1258562)
+ * Fix a regression impacting some specific uploads (bmo#1255735)
+ * Fix a regression with the copy and paste with some old versions
+ of some Gecko applications like Thunderbird (bmo#1254980)
+
+-------------------------------------------------------------------
+Fri Mar 18 08:52:58 UTC 2016 - astieger(a)suse.com
+
+- Mozilla Firefox 45.0.1:
+ * Fix a regression causing search engine settings to be lost in
+ some context (bmo#1254694)
+ * Bring back non-standard jar: URIs to fix a regression in IBM
+ iNotes (bmo#1255139)
+ * XSLTProcessor.importStylesheet was failing when <import> was
+ used (bmo#1249572)
+ * Fix an issue which could cause the list of search provider to
+ be empty (bmo#1255605)
+ * Fix a regression when using the location bar (bmo#1254503)
+ * Fix some loading issues when Accept third-party cookies: was
+ set to Never (bmo#1254856)
+ * Disabled Graphite font shaping library
+
+-------------------------------------------------------------------
+Sun Mar 6 19:52:13 UTC 2016 - wr(a)rosenauer.org
+
+- update to Firefox 45.0 (boo#969894)
+ * requires NSPR 4.12 / NSS 3.21.1
+ * Instant browser tab sharing through Hello
+ * Synced Tabs button in button bar
+ * Tabs synced via Firefox Accounts from other devices are now shown
+ in dropdown area of Awesome Bar when searching
+ * Introduce a new preference (network.dns.blockDotOnion) to allow
+ blocking .onion at the DNS level
+ * Tab Groups (Panorama) feature removed
+ * MFSA 2016-16/CVE-2016-1952/CVE-2016-1953
+ Miscellaneous memory safety hazards
+ * MFSA 2016-17/CVE-2016-1954 (bmo#1243178)
+ Local file overwriting and potential privilege escalation through
+ CSP reports
+ * MFSA 2016-18/CVE-2016-1955 (bmo#1208946)
+ CSP reports fail to strip location information for embedded iframe pages
+ * MFSA 2016-19/CVE-2016-1956 (bmo#1199923)
+ Linux video memory DOS with Intel drivers
+ * MFSA 2016-20/CVE-2016-1957 (bmo#1227052)
+ Memory leak in libstagefright when deleting an array during MP4
+ processing
+ * MFSA 2016-21/CVE-2016-1958 (bmo#1228754)
+ Displayed page address can be overridden
+ * MFSA 2016-22/CVE-2016-1959 (bmo#1234949)
+ Service Worker Manager out-of-bounds read in Service Worker Manager
+ * MFSA 2016-23/CVE-2016-1960/ZDI-CAN-3545 (bmo#1246014)
+ Use-after-free in HTML5 string parser
+ * MFSA 2016-24/CVE-2016-1961/ZDI-CAN-3574 (bmo#1249377)
+ Use-after-free in SetBody
+ * MFSA 2016-25/CVE-2016-1962 (bmo#1240760)
+ Use-after-free when using multiple WebRTC data channels
+ * MFSA 2016-26/CVE-2016-1963 (bmo#1238440)
+ Memory corruption when modifying a file being read by FileReader
+ * MFSA 2016-27/CVE-2016-1964 (bmo#1243335)
+ Use-after-free during XML transformations
+ * MFSA 2016-28/CVE-2016-1965 (bmo#1245264)
+ Addressbar spoofing though history navigation and Location protocol
+ property
+ * MFSA 2016-29/CVE-2016-1967 (bmo#1246956)
+ Same-origin policy violation using perfomance.getEntries and
+ history navigation with session restore
+ * MFSA 2016-30/CVE-2016-1968 (bmo#1246742)
+ Buffer overflow in Brotli decompression
+ * MFSA 2016-31/CVE-2016-1966 (bmo#1246054)
+ Memory corruption with malicious NPAPI plugin
+ * MFSA 2016-32/CVE-2016-1970/CVE-2016-1971/CVE-2016-1975/
+ CVE-2016-1976/CVE-2016-1972
+ WebRTC and LibVPX vulnerabilities found through code inspection
+ * MFSA 2016-33/CVE-2016-1973 (bmo#1219339)
+ Use-after-free in GetStaticInstance in WebRTC
+ * MFSA 2016-34/CVE-2016-1974 (bmo#1228103)
+ Out-of-bounds read in HTML parser following a failed allocation
+ * MFSA 2016-35/CVE-2016-1950 (bmo#1245528)
+ Buffer overflow during ASN.1 decoding in NSS
+ (fixed by requiring 3.21.1)
+ * MFSA 2016-36/CVE-2016-1979 (bmo#1185033)
+ Use-after-free during processing of DER encoded keys in NSS
+ (fixed by requiring 3.21.1)
+ * MFSA 2016-37/CVE-2016-1977/CVE-2016-2790/CVE-2016-2791/
+ CVE-2016-2792/CVE-2016-2793/CVE-2016-2794/CVE-2016-2795/
+ CVE-2016-2796/CVE-2016-2797/CVE-2016-2798/CVE-2016-2799/
+ CVE-2016-2800/CVE-2016-2801/CVE-2016-2802
+ Font vulnerabilities in the Graphite 2 library
+
+-------------------------------------------------------------------
+Sat Mar 5 15:27:00 UTC 2016 - olaf(a)aepfle.de
+
+- Remove B_CNT from symbols.zip filename to reduce build-compare noise
+
+-------------------------------------------------------------------
+Fri Feb 26 16:22:52 UTC 2016 - astieger(a)suse.com
+
+- fix build problems on i586, caused by too large unified compile
+ units - adding mozilla-reduce-files-per-UnifiedBindings.patch
+
+-------------------------------------------------------------------
+Thu Feb 11 07:51:34 UTC 2016 - wr(a)rosenauer.org
+
+- update to Firefox 44.0.2
+ * MFSA 2016-13/CVE-2016-1949 (bmo#1245724, boo#966438)
+ Same-origin-policy violation using Service Workers with plugins
+ * Fix issue which could lead to the removal of stored passwords
+ under certain circumstances (bmo#1242176)
+ * Allows spaces in cookie names (bmo#1244505)
+ * Disable opus/vorbis audio with H.264 (bmo#1245696)
+ * Fix for graphics startup crash (GNU/Linux) (bmo#1222171)
+ * Fix a crash in cache networking (bmo#1244076)
+ * Fix using WebSockets in service worker controlled pages (bmo#1243942)
+
+-------------------------------------------------------------------
+Sat Jan 30 08:28:17 UTC 2016 - dmueller(a)suse.com
+
+- build fixes for arm/aarch64:
+ * disable webrtc for arm/aarch64
+ * switch away from openGL-ES backend to default for arm/aarch64
+ since it almost never builds
+ * reenable neon
+- reenable webrtc for powerpc as it seems to build
+
++++ 4460 more lines (skipped)
++++ between /dev/null
++++ and /work/SRC/openSUSE:13.2:Update/.MozillaFirefox.5017.new/MozillaFirefox.changes
New:
----
MozillaFirefox-rpmlintrc
MozillaFirefox.changes
MozillaFirefox.desktop
MozillaFirefox.spec
_constraints
compare-locales.tar.xz
create-tar.sh
find-external-requires.sh
firefox-46.0-source.tar.xz
firefox-appdata.xml
firefox-branded-icons.patch
firefox-kde.patch
firefox-mimeinfo.xml
firefox-no-default-ualocale.patch
firefox.1
firefox.js
kde.js
l10n-46.0.tar.xz
l10n_changesets.txt
mozilla-check_return.patch
mozilla-get-app-id
mozilla-gtk3_20.patch
mozilla-kde.patch
mozilla-language.patch
mozilla-libproxy.patch
mozilla-no-stdcxx-check.patch
mozilla-nongnome-proxies.patch
mozilla-ntlm-full-path.patch
mozilla-openaes-decl.patch
mozilla-preferences.patch
mozilla-reduce-files-per-UnifiedBindings.patch
mozilla-repo.patch
mozilla-shared-nss-db.patch
mozilla.sh.in
source-stamp.txt
spellcheck.js
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ MozillaFirefox.spec ++++++
++++ 659 lines (skipped)
++++++ MozillaFirefox-rpmlintrc ++++++
addFilter("no-jar-manifest")
++++++ MozillaFirefox.desktop ++++++
[Desktop Entry]
Encoding=UTF-8
Name=%NAME
GenericName=Web Browser
Comment=Web Browser
TryExec=%EXEC
Exec=%EXEC %u
Icon=%ICON
Terminal=false
StartupNotify=true
MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;application/x-xpinstall;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;
Type=Application
Actions=PrivateBrowsing;
[Desktop Action PrivateBrowsing]
Name=New Private Browsing Window
Exec=%EXEC --private-window %u
++++++ create-tar.sh ++++++
#!/bin/bash
# TODO
# http://ftp.mozilla.org/pub/firefox/candidates/46.0-candidates/build5/linux-…
# "moz_source_stamp": "078baf501b55eaa47f3b189fda4dd28dae1fa257"
# http://ftp.mozilla.org/pub/firefox/candidates/46.0-candidates/build5/l10n_c…
CHANNEL="release"
BRANCH="releases/mozilla-$CHANNEL"
RELEASE_TAG="078baf501b55eaa47f3b189fda4dd28dae1fa257"
VERSION="46.0"
# mozilla
if [ -d mozilla ]; then
pushd mozilla
_repourl=$(hg paths)
case "$_repourl" in
*$BRANCH*)
echo "updating previous tree"
hg pull
popd
;;
* )
echo "removing obsolete tree"
popd
rm -rf mozilla
;;
esac
fi
if [ ! -d mozilla ]; then
echo "cloning new $BRANCH..."
hg clone http://hg.mozilla.org/$BRANCH mozilla
fi
pushd mozilla
hg update --check
[ "$RELEASE_TAG" == "default" ] || hg update -r $RELEASE_TAG
# get repo and source stamp
echo -n "REV=" > ../source-stamp.txt
hg -R . parent --template="{node|short}\n" >> ../source-stamp.txt
echo -n "REPO=" >> ../source-stamp.txt
hg showconfig paths.default 2>/dev/null | head -n1 | sed -e "s/^ssh:/http:/" >> ../source-stamp.txt
popd
echo "creating archive..."
tar cJf firefox-$VERSION-source.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg --exclude=CVS mozilla
# l10n
echo "fetching locales..."
test ! -d l10n && mkdir l10n
for locale in $(awk '{ print $1; }' mozilla/browser/locales/shipped-locales); do
case $locale in
ja-JP-mac|en-US)
;;
*)
echo "reading changeset information for $locale"
_changeset=$(grep ^$locale l10n_changesets.txt | awk '{ print $2; }')
echo "fetching $locale changeset $_changeset ..."
hg clone http://hg.mozilla.org/releases/l10n/mozilla-$CHANNEL/$locale l10n/$locale
[ "$RELEASE_TAG" == "default" ] || hg -R l10n/$locale up -C -r $_changeset
;;
esac
done
echo "creating l10n archive..."
tar cJf l10n-$VERSION.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg l10n
# compare-locales
echo "creating compare-locales"
hg clone http://hg.mozilla.org/build/compare-locales
tar cJf compare-locales.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg compare-locales
++++++ find-external-requires.sh ++++++
#!/bin/sh
# Finds requirements provided outside of the current file set
filelist=$( sed "s/[]['\"*?{}]/\\\\\&/g" )
provides=$( echo "$filelist" | /usr/lib/rpm/find-provides )
echo "$filelist" \
| /usr/lib/rpm/find-requires \
| grep -F -v "$provides" \
| sort -u
++++++ firefox-branded-icons.patch ++++++
# HG changeset patch
# Parent e0751ad74e835e80041a61ea00c2a63bf6fbe2de
# Parent a5764b0a088418fdbf4b774a8ff2745cc99f6706
diff --git a/browser/app/Makefile.in b/browser/app/Makefile.in
--- a/browser/app/Makefile.in
+++ b/browser/app/Makefile.in
@@ -55,16 +55,21 @@ GARBAGE += $(addprefix $(FINAL_TARGET)/d
endif
ifdef MOZ_WIDGET_GTK
libs::
$(INSTALL) $(IFLAGS1) $(DIST)/branding/mozicon128.png $(FINAL_TARGET)/icons
$(INSTALL) $(IFLAGS1) $(DIST)/branding/default16.png $(FINAL_TARGET)/chrome/icons/default
$(INSTALL) $(IFLAGS1) $(DIST)/branding/default32.png $(FINAL_TARGET)/chrome/icons/default
$(INSTALL) $(IFLAGS1) $(DIST)/branding/default48.png $(FINAL_TARGET)/chrome/icons/default
+ifdef MOZ_OFFICIAL_BRANDING
+ $(INSTALL) $(IFLAGS1) $(DIST)/branding/default22.png $(FINAL_TARGET)/chrome/icons/default
+ $(INSTALL) $(IFLAGS1) $(DIST)/branding/default24.png $(FINAL_TARGET)/chrome/icons/default
+ $(INSTALL) $(IFLAGS1) $(DIST)/branding/default256.png $(FINAL_TARGET)/chrome/icons/default
+endif
endif
# channel-prefs.js is handled separate from other prefs due to bug 756325
libs:: $(srcdir)/profile/channel-prefs.js
$(NSINSTALL) -D $(DIST)/bin/defaults/pref
$(call py_action,preprocessor,-Fsubstitution $(PREF_PPFLAGS) $(ACDEFINES) $^ -o $(DIST)/bin/defaults/pref/channel-prefs.js)
ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
diff --git a/browser/branding/branding-common.mozbuild b/browser/branding/branding-common.mozbuild
--- a/browser/branding/branding-common.mozbuild
+++ b/browser/branding/branding-common.mozbuild
@@ -34,12 +34,15 @@ def FirefoxBranding():
'disk.icns',
'document.icns',
'dsstore',
'firefox.icns',
]
elif CONFIG['MOZ_WIDGET_GTK']:
BRANDING_FILES += [
'default16.png',
+ 'default22.png',
+ 'default24.png',
+ 'default256.png',
'default32.png',
'default48.png',
'mozicon128.png',
]
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -664,18 +664,21 @@
@RESPATH@/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png
@RESPATH@/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf
@RESPATH@/chrome/toolkit@JAREXT@
@RESPATH@/chrome/toolkit.manifest
@RESPATH@/chrome/recording.manifest
@RESPATH@/chrome/recording/*
#ifdef MOZ_GTK
@RESPATH@/browser/chrome/icons/default/default16.png
+@RESPATH@/browser/chrome/icons/default/default22.png
+@RESPATH@/browser/chrome/icons/default/default24.png
@RESPATH@/browser/chrome/icons/default/default32.png
@RESPATH@/browser/chrome/icons/default/default48.png
+@RESPATH@/browser/chrome/icons/default/default256.png
#endif
@RESPATH@/browser/features/*
; [Webide Files]
@RESPATH@/browser/chrome/webide@JAREXT@
@RESPATH@/browser/chrome/webide.manifest
@RESPATH@/browser/@PREF_DIR@/webide-prefs.js
++++++ firefox-kde.patch ++++++
++++ 1652 lines (skipped)
++++++ firefox-no-default-ualocale.patch ++++++
# HG changeset patch
# User Wolfgang Rosenauer <wr(a)rosenauer.org>
# Parent 099312626f5f7c9cb5573a61d0230574ee12a660
# Parent 8015dc2ad5992bfc7d33091fc92edf18ea220a89
Do not overwrite the locale dynamic pref from xulrunner's all.js with a wrong default value
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -216,17 +216,17 @@ pref("browser.uitour.readerViewTrigger",
pref("browser.uitour.surveyDuration", 7200);
pref("browser.customizemode.tip0.shown", false);
pref("browser.customizemode.tip0.learnMoreUrl", "https://support.mozilla.org/1/firefox/%VERSION%/%OS%/%LOCALE%/customize");
pref("keyword.enabled", true);
pref("browser.fixup.domainwhitelist.localhost", true);
-pref("general.useragent.locale", "@AB_CD@");
+pref("general.useragent.locale", "chrome://global/locale/intl.properties");
pref("general.skins.selectedSkin", "classic/1.0");
pref("general.smoothScroll", true);
#ifdef UNIX_BUT_NOT_MAC
pref("general.autoScroll", false);
#else
pref("general.autoScroll", true);
#endif
++++++ firefox.1 ++++++
.TH FIREFOX 1 "January 04, 2006" firefox "Linux User's Manual"
.SH NAME
firefox \- a Web browser for X11 derived from the Mozilla browser
.SH SYNOPSIS
.B firefox
[\fIOPTIONS\fR] [\fIURL\fR]
.SH DESCRIPTION
\fBMozilla Firefox\fR is an open-source web browser, designed for
standards compliance, performance and portability.
.SH USAGE
\fBfirefox\fR is a simple shell script that will set up the
environment for the actual executable.
.SH OPTIONS
A summary of the options supported by \fBfirefox\fR is included below.
.SS "GTK options"
\fB\-\-gdk-debug=\fR\fIFLAGS\fR
Gdk debugging flags to set
.TP
\fB\-\-gdk-no-debug=\fR\fIFLAGS\fR
Gdk debugging flags to unset
.TP
\fB\-\-gtk-debug=\fR\fIFLAGS\fR
Gtk+ debugging flags to set
.TP
\fB\-\-gtk-no-debug=\fR\fIFLAGS\fR
Gtk+ debugging flags to unset
.TP
\fB\-\-gtk-module=\fR\fIMODULE\fR
Load an additional Gtk module
.SS "X11 options"
.TP
.BI \-\-display= DISPLAY
X display to use
.TP
.B \--sync
Make X calls synchronous
.TP
.B \-\-no-xshm
Don't use X shared memory extension
.TP
.BI \-\-xim-preedit= STYLE
.TP
.BI \-\-xim-status= STYLE
.TP
.B \-\-g-fatal-warnings
Make all warnings fatal
.SS "Firefox options"
.TP
.B \-h, \-help
Show summary of options.
.TP
\fB\-height\fR \fIvalue\fR
Set height of startup window to \fIvalue\fR.
.TP
\fB\-width\fR \fIvalue\fR
Set width of startup window to \fIvalue\fR.
.TP
.B \-v, \-version
Print \fB/usr/bin/firefox-bin\fR version.
.TP
\fB\-CreateProfile\fR \fIprofile\fR
Create \fIprofile\fR.
.TP
\fB\-P\fR \fIprofile\fR
Start with \fIprofile\fR.
.TP
.B \-ProfileManager
Start with profile manager.
.TP
\fB\-UILocale\fR \fIlang-region\fR
Start with \fIlang-region\fR resources.
.TP
\fB\-contentLocale\fR \fIlang-region\fR
Start with \fIlang-region\fR resources.
.TP
\fB\-remote\fR \fIcommand\fR
Execute \fIcommand\fR in an already running Firefox process. For more info,
see: \fIhttp://www.mozilla.org/unix/remote.html\fR
.TP
.B \-no-remote
Don't try to control an already running instance.
.TP
.B \-jsconsole
Start with Javascript Console
.TP
\fB\-chrome\fR \fIurl\fR
Load the specified chrome.
.TP
\fB\-new-window\fR \fIurl\fR
Open URL in a new window if Firefox is already running.
.TP
\fB\-new-tab\fR \fIurl\fR
Open URL in a new tab if Firefox is already running.
.TP
\fB\-preferences\fR
Open Firefox preferences menu.
.TP
.B \-safe-mode
Disables extensions and themes for this session.
.TP
.SH FILES
\fI/usr/bin/firefox\fR - shell script wrapping
\fBfirefox\fR
.br
\fI/usr/lib/firefox/firefox\fR - \fBfirefox\fR
executable
.SH VERSION
3.0
.SH BUGS
To report a bug, please visit \fIhttp://bugzilla.mozilla.org/\fR
.SH "SEE ALSO"
.BR mozilla(1)
.SH AUTHORS
.TP
.B The Mozilla Organization
.I http://www.mozilla.org/about.html
++++++ firefox.js ++++++
pref("browser.preferences.instantApply", true);
++++++ kde.js ++++++
pref("browser.preferences.instantApply", false);
++++++ l10n_changesets.txt ++++++
ach 658769a76613
af 431e02c10881
an fe436c75f71d
ar bbcf06888dc5
as 8313f975ae77
ast 0300b60cd340
az fd96727d2a26
be b72077740aac
bg 9f7507dd2b92
bn-BD fe0a6bb82a2d
bn-IN a2ea6b87d80d
br 95b028350e29
bs cfee6f5b1e50
ca e8ca2d46b4a8
cs ed6004b91b51
cy 5bbcbba9b054
da 324fe068c0b9
de 217ff3f0054a
dsb 7cdfb5d9dc5d
el 22b959c9a739
en-GB 36012ab486ad
en-ZA 1c91f05aae5a
eo 049c1b065f4c
es-AR b3647b1d5927
es-CL e45186f983b9
es-ES 6fe131a8b07f
es-MX 4cd511663283
et ecae9df9c92a
eu 1a65e2c03dda
fa e5993d9fb76e
ff 8373353b43c4
fi b743718650bc
fr 7d0bb8edc149
fy-NL 02ee99ad3f83
ga-IE 713ecb614f77
gd e5b86736a5f9
gl c869caff337a
gn 65b2894520b6
gu-IN 6245b4309461
he ee92b661d299
hi-IN bba2a926e4f8
hr 8502beb4ee68
hsb c91a11523487
hu 09bbddfef7ee
hy-AM 3d7a9324fb25
id cb8f841d30d2
is 46c99105eb3b
it 6063a6d94e13
ja 590a31fbf396
ja-JP-mac 260664b702c5
kk 5a7bd05bf942
km 339790840ac1
kn b23d8fbcf41a
ko 5f303ed16778
lij e9113fac3a93
lt 628e96e62e44
lv 063998fdecf8
mai ce010a305377
mk ffdf2a789185
ml 1b85d75836cd
mr 553ff31f4edd
ms 41bbf86ac0d9
nb-NO 5e6e5710fac9
nl ac486141ab40
nn-NO be9e3eeb75fb
or febd1b04dbfc
pa-IN 6c5ed1be55fb
pl 49e141118acb
pt-BR cd1aef7b5045
pt-PT 2e4fd2a1f98f
rm 0a52db6a6117
ro c6ac34be77b1
ru 3f0b3c8e19a4
si 03a3b09a2203
sk 3505a5f99bff
sl 1e098ab8c27a
son 3ae9a4ff0453
sq c24e570a4207
sr 896d72a0fa21
sv-SE ea1de38fe731
ta f9dbc2cca1fb
te 286ff9885ea2
th d630f05d665f
tr b751d2d9b6ee
uk c5cdb9068667
uz dc28cf99c5cf
vi 68ce305343a3
xh f3eb8f92afe8
zh-CN d73d448f89d6
zh-TW 44c9950bb3e6
++++++ mozilla-check_return.patch ++++++
# HG changeset patch
# User Wolfgang Rosenauer <wr(a)rosenauer.org>
# Parent 5f8b5e8163ece92dc819896dd52b9dbf5f524fe3
diff --git a/media/libstagefright/binding/include/mp4_demuxer/ByteWriter.h b/media/libstagefright/binding/include/mp4_demuxer/ByteWriter.h
--- a/media/libstagefright/binding/include/mp4_demuxer/ByteWriter.h
+++ b/media/libstagefright/binding/include/mp4_demuxer/ByteWriter.h
@@ -19,57 +19,64 @@ public:
{
}
~ByteWriter()
{
}
void WriteU8(uint8_t aByte)
{
- mPtr.append(aByte);
+ bool rv;
+ rv = mPtr.append(aByte);
}
void WriteU16(uint16_t aShort)
{
uint8_t c[2];
+ bool rv;
mozilla::BigEndian::writeUint16(&c[0], aShort);
- mPtr.append(&c[0], 2);
+ rv = mPtr.append(&c[0], 2);
}
void WriteU32(uint32_t aLong)
{
uint8_t c[4];
+ bool rv;
mozilla::BigEndian::writeUint32(&c[0], aLong);
- mPtr.append(&c[0], 4);
+ rv = mPtr.append(&c[0], 4);
}
void Write32(int32_t aLong)
{
uint8_t c[4];
+ bool rv;
mozilla::BigEndian::writeInt32(&c[0], aLong);
- mPtr.append(&c[0], 4);
+ rv = mPtr.append(&c[0], 4);
}
void WriteU64(uint64_t aLongLong)
{
uint8_t c[8];
+ bool rv;
mozilla::BigEndian::writeUint64(&c[0], aLongLong);
- mPtr.append(&c[0], 8);
+ rv = mPtr.append(&c[0], 8);
}
void Write64(int64_t aLongLong)
{
uint8_t c[8];
+ bool rv;
mozilla::BigEndian::writeInt64(&c[0], aLongLong);
- mPtr.append(&c[0], 8);
+ rv = mPtr.append(&c[0], 8);
}
void Write(const uint8_t* aSrc, size_t aCount)
{
- mPtr.append(aSrc, aCount);
+ bool rv;
+ rv = mPtr.append(aSrc, aCount);
}
private:
mozilla::Vector<uint8_t>& mPtr;
};
}
#endif
++++++ mozilla-get-app-id ++++++
#!/usr/bin/perl -w
use XML::Simple;
my $file = shift || die "Usage: $0 [install.rdf|somefile.xpi]\n";
my $xml;
if ($file =~ /\.xpi$/) {
use Archive::Zip qw/:ERROR_CODES :CONSTANTS/;
my $zip = Archive::Zip->new();
if ( $zip->read($file) != AZ_OK ) {
die "zip file read error\n";
}
my $data = $zip->contents("install.rdf");
die "missing install.rdf in $file\n" unless $data;
$xml = XMLin($data) || die "$!\n";
} elsif ($file =~ /install.rdf/) {
$xml = XMLin($file) || die "$!\n";
} else {
die "unsupported file format\n";
}
my $desc;
for my $tag (qw/RDF:Description Description/) {
if (exists $xml->{$tag}) {
if (ref $xml->{$tag} eq 'ARRAY') {
$desc = $xml->{$tag};
} else {
$desc = [ $xml->{$tag} ];
}
}
}
my $uuid;
my $id;
for my $x (@$desc) {
if ($x->{"em:id"} =~ /{[[:xdigit:]]+-/) {
print STDERR "Warning: multiple uuids!\n" if defined $uuid;
$uuid = $x->{"em:id"};
} elsif ($x->{"em:id"} =~ /@/) {
print STDERR "Warning: multiple ids!\n" if defined $id;
$id = $x->{"em:id"};
}
}
if (defined $id) {
print "$id\n";
} elsif (defined $uuid) {
print "$uuid\n";
} else {
exit 1;
}
++++++ mozilla-gtk3_20.patch ++++++
++++ 1615 lines (skipped)
++++++ mozilla-kde.patch ++++++
++++ 3789 lines (skipped)
++++++ mozilla-language.patch ++++++
# HG changeset patch
# User Wolfgang Rosenauer <wr(a)rosenauer.org>
# Parent 5a29924228527f8882c83cf62d470963ea1ce62e
# Parent 55b6ae7fd3ebf28f960031801f1948dfc1bd80d2
Bug 583793 - Firefox interface language set to LANG, ignores LANGUAGE
diff --git a/intl/locale/nsLocaleService.cpp b/intl/locale/nsLocaleService.cpp
--- a/intl/locale/nsLocaleService.cpp
+++ b/intl/locale/nsLocaleService.cpp
@@ -122,16 +122,17 @@ nsLocaleService::nsLocaleService(void)
RefPtr<nsLocale> resultLocale(new nsLocale());
NS_ENSURE_TRUE_VOID(resultLocale);
#ifdef MOZ_WIDGET_QT
const char* lang = QLocale::system().name().toUtf8();
#else
// Get system configuration
const char* lang = getenv("LANG");
+ const char* language = getenv("LANGUAGE");
#endif
nsAutoString xpLocale, platformLocale;
nsAutoString category, category_platform;
int i;
for( i = 0; i < LocaleListLength; i++ ) {
nsresult result;
@@ -158,16 +159,21 @@ nsLocaleService::nsLocaleService(void)
} else {
CopyASCIItoUTF16(lang, platformLocale);
result = nsPosixLocale::GetXPLocale(lang, xpLocale);
}
}
if (NS_FAILED(result)) {
return;
}
+ // LANGUAGE is overriding LC_MESSAGES
+ if (i == LC_MESSAGES && language && *language) {
+ CopyASCIItoUTF16(language, platformLocale);
+ result = nsPosixLocale::GetXPLocale(language, xpLocale);
+ }
resultLocale->AddCategory(category, xpLocale);
resultLocale->AddCategory(category_platform, platformLocale);
}
mSystemLocale = do_QueryInterface(resultLocale);
mApplicationLocale = do_QueryInterface(resultLocale);
#endif // XP_UNIX
++++++ mozilla-libproxy.patch ++++++
# HG changeset patch
# User Wolfgang Rosenauer <wr(a)rosenauer.org>
# Parent 95b421ca30846be2b5d7230d72263e6dff042d0b
Bug 1220399 - building with libproxy support fails
diff --git a/toolkit/system/unixproxy/nsLibProxySettings.cpp b/toolkit/system/unixproxy/nsLibProxySettings.cpp
--- a/toolkit/system/unixproxy/nsLibProxySettings.cpp
+++ b/toolkit/system/unixproxy/nsLibProxySettings.cpp
@@ -2,16 +2,17 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "nsISystemProxySettings.h"
#include "mozilla/ModuleUtils.h"
#include "nsIServiceManager.h"
#include "nsIURI.h"
+#include "nsNetCID.h"
#include "nsString.h"
#include "nsCOMPtr.h"
#include "nspr.h"
extern "C" {
#include <proxy.h>
}
++++++ mozilla-no-stdcxx-check.patch ++++++
# HG changeset patch
# User Wolfgang Rosenauer <wr(a)rosenauer.org>
# Parent e96e9b3997ea31024687aaa1e9aa5ccf78bc0ee9
diff --git a/config/config.mk b/config/config.mk
--- a/config/config.mk
+++ b/config/config.mk
@@ -653,17 +653,16 @@ ifeq ($(MOZ_WIDGET_TOOLKIT),android)
# of the linker command line), if libmozglue.so ends up after libc.so, all
# hell breaks loose, so better safe than sorry, and check it's actually the
# case.
CHECK_MOZGLUE_ORDER = @$(TOOLCHAIN_PREFIX)readelf -d $(1) | grep NEEDED | awk '{ libs[$$NF] = ++n } END { if (libs["[libmozglue.so]"] && libs["[libc.so]"] < libs["[libmozglue.so]"]) { print "libmozglue.so must be linked before libc.so"; exit 1 } }'
endif
define CHECK_BINARY
$(call CHECK_GLIBC,$(1))
-$(call CHECK_STDCXX,$(1))
$(call CHECK_TEXTREL,$(1))
$(call LOCAL_CHECKS,$(1))
$(call CHECK_MOZGLUE_ORDER,$(1))
endef
# autoconf.mk sets OBJ_SUFFIX to an error to avoid use before including
# this file
OBJ_SUFFIX := $(_OBJ_SUFFIX)
++++++ mozilla-nongnome-proxies.patch ++++++
From: Wolfgang Rosenauer
Subject: Do not use gconf for proxy settings if not running within Gnome
Index: toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
===================================================================
RCS file: /cvsroot/mozilla/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp,v
retrieving revision 1.1
diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
--- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
+++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
@@ -53,23 +53,27 @@ nsUnixSystemProxySettings::GetMainThread
// dbus prevents us from being threadsafe, but this routine should not block anyhow
*aMainThreadOnly = true;
return NS_OK;
}
nsresult
nsUnixSystemProxySettings::Init()
{
- mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
- if (mGSettings) {
- mGSettings->GetCollectionForSchema(NS_LITERAL_CSTRING("org.gnome.system.proxy"),
- getter_AddRefs(mProxySettings));
- }
- if (!mProxySettings) {
- mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
+ // only use GSettings if that is a GNOME session
+ const char* sessionType = PR_GetEnv("DESKTOP_SESSION");
+ if (sessionType && !strcmp(sessionType, "gnome")) {
+ mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
+ if (mGSettings) {
+ mGSettings->GetCollectionForSchema(NS_LITERAL_CSTRING("org.gnome.system.proxy"),
+ getter_AddRefs(mProxySettings));
+ }
+ if (!mProxySettings) {
+ mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
+ }
}
return NS_OK;
}
bool
nsUnixSystemProxySettings::IsProxyMode(const char* aMode)
{
++++++ mozilla-ntlm-full-path.patch ++++++
# HG changeset patch
# User Petr Cerny <pcerny(a)novell.com>
# Parent 7308e4a7c1f769f4bbbc90870b849cadd99495a6
# Parent 03565086f1e230cf6f0f6c01bf9a792c732de50b
Bug 634334 - call to the ntlm_auth helper fails
diff --git a/extensions/auth/nsAuthSambaNTLM.cpp b/extensions/auth/nsAuthSambaNTLM.cpp
--- a/extensions/auth/nsAuthSambaNTLM.cpp
+++ b/extensions/auth/nsAuthSambaNTLM.cpp
@@ -169,17 +169,17 @@ static uint8_t* ExtractMessage(const nsA
nsresult
nsAuthSambaNTLM::SpawnNTLMAuthHelper()
{
const char* username = PR_GetEnv("USER");
if (!username)
return NS_ERROR_FAILURE;
const char* const args[] = {
- "ntlm_auth",
+ "/usr/bin/ntlm_auth",
"--helper-protocol", "ntlmssp-client-1",
"--use-cached-creds",
"--username", username,
nullptr
};
bool isOK = SpawnIOChild(const_cast<char* const*>(args), &mChildPID, &mFromChildFD, &mToChildFD);
if (!isOK)
++++++ mozilla-openaes-decl.patch ++++++
# HG changeset patch
# Parent 33024abb3c58dab7239e32388df58e14f99defd5
# User Wolfgang Rosenauer <wr(a)rosenauer.org>
# Parent 17196b2f3cd2bcba6a5b54f4496b5762a593c5b3
diff --git a/media/gmp-clearkey/0.1/openaes/oaes_lib.c b/media/gmp-clearkey/0.1/openaes/oaes_lib.c
--- a/media/gmp-clearkey/0.1/openaes/oaes_lib.c
+++ b/media/gmp-clearkey/0.1/openaes/oaes_lib.c
@@ -24,16 +24,17 @@
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
* ---------------------------------------------------------------------------
*/
#include <stdlib.h>
+#include <stdio.h>
#include <stddef.h>
#include <time.h>
#include <string.h>
#include "mozilla/Snprintf.h"
#ifdef WIN32
#include <process.h>
++++++ mozilla-preferences.patch ++++++
From: Wolfgang Rosenauer <wr(a)rosenauer.org>
Subject: use system locale if available
This setting used to live in the branding-openSUSE package but this is causing too much
confusion and therefore is currently the only setting we switch in the unbranded
package unconditionally.
# HG changeset patch
# Parent 8c1bfc96b05ef1836aad6e9f2af323f63ed1b69c
# Parent 35b625807600ea4a5a3c49bd1cab22fac5188406
diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -1790,17 +1790,17 @@ pref("converter.html2txt.always_include_
pref("intl.accept_languages", "chrome://global/locale/intl.properties");
pref("intl.menuitems.alwaysappendaccesskeys","chrome://global/locale/intl.properties");
pref("intl.menuitems.insertseparatorbeforeaccesskeys","chrome://global/locale/intl.properties");
pref("intl.charset.detector", "chrome://global/locale/intl.properties");
pref("intl.charset.fallback.override", "");
pref("intl.charset.fallback.tld", true);
pref("intl.ellipsis", "chrome://global-platform/locale/intl.properties");
-pref("intl.locale.matchOS", false);
+pref("intl.locale.matchOS", true);
// fallback charset list for Unicode conversion (converting from Unicode)
// currently used for mail send only to handle symbol characters (e.g Euro, trademark, smartquotes)
// for ISO-8859-1
pref("intl.fallbackCharsetList.ISO-8859-1", "windows-1252");
pref("font.language.group", "chrome://global/locale/intl.properties");
// Android-specific pref to use key-events-only mode for IME-unaware webapps.
#ifdef MOZ_WIDGET_ANDROID
++++++ mozilla-reduce-files-per-UnifiedBindings.patch ++++++
From: Andreas Stieger <astieger(a)suse.com>
Date: Fri, 26 Feb 2016 16:20:09 +0000
Subject: For UnifiedBindings*.cpp files, reduce number of files per unified file
Upstream: no
home/abuild/rpmbuild/BUILD/obj/dom/bindings/UnifiedBindings16.cpp
[ 1589s] UnifiedBindings17.o
[ 1612s] [ 1567.621989] Out of memory: Kill process 19849 (cc1plus) score 170 or sacrifice child
[ 1612s] [ 1567.625099] Killed process 19849 (cc1plus) total-vm:905704kB, anon-rss:102500kB, file-rss:156kB
[ 1616s] {standard input}: Assembler messages:
[ 1616s] {standard input}:316015: Warning: end of file not at end of a line; newline inserted
[ 1635s] {standard input}: Error: open CFI at the end of file; missing .cfi_endproc directive
[ 1636s] c++: internal compiler error: Killed (program cc1plus)
[ 1636s] Please submit a full bug report,
Index: mozilla/python/mozbuild/mozbuild/backend/common.py
===================================================================
--- mozilla.orig/python/mozbuild/mozbuild/backend/common.py 2016-02-26 17:19:30.331667693 +0100
+++ mozilla/python/mozbuild/mozbuild/backend/common.py 2016-02-26 17:19:39.792569676 +0100
@@ -333,7 +333,7 @@ class CommonBackend(BuildBackend):
unified_source_mapping = list(group_unified_files(webidls.all_regular_cpp_basenames(),
unified_prefix='UnifiedBindings',
unified_suffix='cpp',
- files_per_unified_file=32))
+ files_per_unified_file=16))
self._write_unified_files(unified_source_mapping, bindings_dir,
poison_windows_h=True)
self._handle_webidl_build(bindings_dir, unified_source_mapping,
++++++ mozilla-repo.patch ++++++
# HG changeset patch
# Parent 80b6464bd883864fce57e8748010869af1be69e9
# Parent 808d61f33afa6fb9921d3a7f994a71cf2dd9331a
diff --git a/toolkit/mozapps/installer/package-name.mk b/toolkit/mozapps/installer/package-name.mk
--- a/toolkit/mozapps/installer/package-name.mk
+++ b/toolkit/mozapps/installer/package-name.mk
@@ -147,24 +147,24 @@ else
BUILDID = $(shell $(PYTHON) $(MOZILLA_DIR)/config/printconfigsetting.py $(DIST)/bin/platform.ini Build BuildID)
endif
ifndef INCLUDED_RCS_MK
USE_RCS_MK := 1
include $(MOZILLA_DIR)/config/makefiles/makeutils.mk
endif
-MOZ_SOURCE_STAMP = $(firstword $(shell hg -R $(MOZILLA_DIR) parent --template="{node}\n" 2>/dev/null))
+#MOZ_SOURCE_STAMP = $(firstword $(shell hg -R $(MOZILLA_DIR) parent --template="{node}\n" 2>/dev/null))
###########################################################################
# bug: 746277 - preserve existing functionality.
# MOZILLA_DIR="": cd $(SPACE); hg # succeeds if ~/.hg exists
###########################################################################
ifdef MOZ_INCLUDE_SOURCE_INFO
-MOZ_SOURCE_REPO = $(call getSourceRepo,$(MOZILLA_DIR)$(NULL) $(NULL))
+#MOZ_SOURCE_REPO = $(call getSourceRepo,$(MOZILLA_DIR)$(NULL) $(NULL))
endif
MOZ_SOURCESTAMP_FILE = $(DIST)/$(PKG_PATH)/$(MOZ_INFO_BASENAME).txt
MOZ_BUILDINFO_FILE = $(DIST)/$(PKG_PATH)/$(MOZ_INFO_BASENAME).json
MOZ_BUILDID_INFO_TXT_FILE = $(DIST)/$(PKG_PATH)/$(MOZ_INFO_BASENAME)_info.txt
MOZ_MOZINFO_FILE = $(DIST)/$(PKG_PATH)/$(MOZ_INFO_BASENAME).mozinfo.json
MOZ_TEST_PACKAGES_FILE = $(DIST)/$(PKG_PATH)/test_packages.json
MOZ_TEST_PACKAGES_FILE_TC = $(DIST)/$(PKG_PATH)/test_packages_tc.json
++++++ mozilla-shared-nss-db.patch ++++++
From: Hans Petter Jansson <hpj(a)copyleft.no>
Wolfgang Rosenauer <wr(a)rosenauer.org>
Subject: use libnsssharedhelper if available at compile time
(can be disabled by exporting MOZ_XRE_NO_NSSHELPER=1)
References:
diff --git a/configure.in b/configure.in
--- a/configure.in
+++ b/configure.in
@@ -8310,16 +8310,31 @@ if test "$MOZ_ENABLE_SKIA"; then
AC_DEFINE(USE_SKIA_GPU)
AC_SUBST(MOZ_ENABLE_SKIA_GPU)
fi
fi
AC_SUBST(MOZ_ENABLE_SKIA)
AC_SUBST_LIST(SKIA_INCLUDES)
dnl ========================================================
+dnl Check for nss-shared-helper
+dnl ========================================================
+
+ PKG_CHECK_MODULES(NSSHELPER, nss-shared-helper,
+ [MOZ_ENABLE_NSSHELPER=1],
+ [MOZ_ENABLE_NSSHELPER=])
+
+if test "$MOZ_ENABLE_NSSHELPER"; then
+ AC_DEFINE(MOZ_ENABLE_NSSHELPER)
+fi
+AC_SUBST(MOZ_ENABLE_NSSHELPER)
+AC_SUBST_LIST(NSSHELPER_CFLAGS)
+AC_SUBST_LIST(NSSHELPER_LIBS)
+
+dnl ========================================================
dnl disable xul
dnl ========================================================
MOZ_ARG_DISABLE_BOOL(xul,
[ --disable-xul Disable XUL],
MOZ_XUL= )
if test "$MOZ_XUL"; then
AC_DEFINE(MOZ_XUL)
else
diff --git a/security/manager/ssl/moz.build b/security/manager/ssl/moz.build
--- a/security/manager/ssl/moz.build
+++ b/security/manager/ssl/moz.build
@@ -160,16 +160,19 @@ UNIFIED_SOURCES += [
FINAL_LIBRARY = 'xul'
LOCAL_INCLUDES += [
'/dom/base',
'/security/certverifier',
'/security/pkix/include',
]
+CXXFLAGS += sorted(CONFIG['NSSHELPER_CFLAGS'])
+OS_LIBS += sorted(CONFIG['NSSHELPER_LIBS'])
+
LOCAL_INCLUDES += [
'!/dist/public/nss',
]
if CONFIG['NSS_DISABLE_DBM']:
DEFINES['NSS_DISABLE_DBM'] = '1'
DEFINES['SSL_DISABLE_DEPRECATED_CIPHER_SUITE_NAMES'] = 'True'
diff --git a/security/manager/ssl/nsNSSComponent.cpp b/security/manager/ssl/nsNSSComponent.cpp
--- a/security/manager/ssl/nsNSSComponent.cpp
+++ b/security/manager/ssl/nsNSSComponent.cpp
@@ -1,14 +1,21 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+#ifdef MOZ_ENABLE_NSSHELPER
+#pragma GCC visibility push(default)
+#include <nss-shared-helper.h>
+#pragma GCC visibility pop
+#include "prenv.h"
+#endif
+
#include "nsNSSComponent.h"
#include "ExtendedValidation.h"
#include "NSSCertDBTrustDomain.h"
#include "SharedSSLState.h"
#include "mozilla/Preferences.h"
#include "mozilla/PublicSSL.h"
#include "mozilla/Services.h"
@@ -1007,17 +1014,31 @@ nsNSSComponent::InitializeNSS()
return rv;
}
}
MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("inSafeMode: %u\n", inSafeMode));
if (!nocertdb && !profileStr.IsEmpty()) {
// First try to initialize the NSS DB in read/write mode.
// Only load PKCS11 modules if we're not in safe mode.
+#ifdef MOZ_ENABLE_NSSHELPER
+ if (PR_GetEnv("MOZ_XRE_NO_NSSHELPER")) {
+ init_rv = ::mozilla::psm::InitializeNSS(profileStr.get(), false, !inSafeMode);
+ } else {
+ uint32_t flags = NSS_INIT_NOROOTINIT | NSS_INIT_OPTIMIZESPACE;
+ init_rv = ::nsshelp_open_db ("Firefox", profileStr.get(), flags);
+
+ if (init_rv != SECSuccess) {
+ MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("can not init NSS using nsshelp_open_db in %s\n", profileStr.get()));
+ init_rv = ::mozilla::psm::InitializeNSS(profileStr.get(), false, !inSafeMode);
+ }
+ }
+#else
init_rv = ::mozilla::psm::InitializeNSS(profileStr.get(), false, !inSafeMode);
+#endif
// If that fails, attempt read-only mode.
if (init_rv != SECSuccess) {
MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("could not init NSS r/w in %s\n", profileStr.get()));
init_rv = ::mozilla::psm::InitializeNSS(profileStr.get(), true, !inSafeMode);
}
if (init_rv != SECSuccess) {
MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("could not init in r/o either\n"));
}
diff --git a/toolkit/library/moz.build b/toolkit/library/moz.build
--- a/toolkit/library/moz.build
+++ b/toolkit/library/moz.build
@@ -205,16 +205,18 @@ if CONFIG['MOZ_B2G_CAMERA'] and CONFIG['
'stagefright_omx',
]
if CONFIG['OS_ARCH'] == 'Linux' and CONFIG['OS_TARGET'] != 'Android':
OS_LIBS += [
'rt',
]
+OS_LIBS += sorted(CONFIG['NSSHELPER_LIBS'])
+
OS_LIBS += CONFIG['MOZ_CAIRO_OSLIBS']
OS_LIBS += CONFIG['MOZ_WEBRTC_X11_LIBS']
if CONFIG['MOZ_NATIVE_JPEG']:
OS_LIBS += CONFIG['MOZ_JPEG_LIBS']
if CONFIG['MOZ_NATIVE_PNG']:
OS_LIBS += CONFIG['MOZ_PNG_LIBS']
++++++ mozilla.sh.in ++++++
#!/bin/sh
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
#
# The Original Code is mozilla.org Code.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1998
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
# Wolfgang Rosenauer <wolfgang.rosenauer(a)suse.de>
# <wr(a)rosenauer.org>
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
##
## Usage:
##
## $ mozilla [args]
##
## This script is meant to run a mozilla program from the mozilla
## rpm installation.
##
## The script will setup all the environment voodoo needed to make
## mozilla work.
cmdname=`basename $0`
##
## Variables
##
MOZ_DIST_BIN="%PREFIX"
MOZ_DIST_LIB="%PROGDIR"
MOZ_APPNAME="%APPNAME"
MOZ_PROGRAM="$MOZ_DIST_LIB/$MOZ_APPNAME"
MOZ_APP_LAUNCHER="$MOZ_DIST_LIB/$MOZ_APPNAME.sh"
if [ "$0" = "$MOZ_APP_LAUNCHER" ]; then
[ -h "/usr/bin/$MOZ_APPNAME" ] && \
_link=$(readlink -f "/usr/bin/$MOZ_APPNAME")
if [ "$_link" = "$MOZ_APP_LAUNCHER" ]; then
export MOZ_APP_LAUNCHER="/usr/bin/$MOZ_APPNAME"
fi
else
export MOZ_APP_LAUNCHER="/usr/bin/$MOZ_APPNAME"
fi
mozilla_lib=`file $MOZ_PROGRAM`
LIB=lib
echo $mozilla_lib | grep -q -E 'ELF.64-bit.*(x86-64|S/390|PowerPC)' && LIB=lib64
BROWSER_PLUGIN_DIR=/usr/$LIB/browser-plugins
if [ ! -d $BROWSER_PLUGIN_DIR ]; then
BROWSER_PLUGIN_DIR=/opt/netscape/plugins
fi
MOZILLA_FIVE_HOME="$MOZ_DIST_LIB"
export MOZILLA_FIVE_HOME
LD_LIBRARY_PATH=$MOZ_DIST_LIB${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
export LD_LIBRARY_PATH
# needed for SUN Java under Xorg >= 7.2
export LIBXCB_ALLOW_SLOPPY_LOCK=1
##
if [ -z "$MOZ_PLUGIN_PATH" ]; then
export MOZ_PLUGIN_PATH=$BROWSER_PLUGIN_DIR
else
# make sure that BROWSER_PLUGIN_DIR is in MOZ_PLUGIN_PATH
echo "$MOZ_PLUGIN_PATH" | grep "$BROWSER_PLUGIN_DIR" 2>&1 >/dev/null
_retval=$?
if [ ${_retval} -ne 0 ]; then
export MOZ_PLUGIN_PATH=$MOZ_PLUGIN_PATH:$BROWSER_PLUGIN_DIR
fi
fi
# disable Gnome crash dialog (doesn't make sense anyway)
export GNOME_DISABLE_CRASH_DIALOG=1
moz_debug=0
script_args=""
pass_arg_count=0
while [ $# -gt $pass_arg_count ]
do
case "$1" in
-d | --debugger)
moz_debugger=$2;
if [ "${moz_debugger}" != "" ]; then
shift 2
moz_debug=1
else
echo "-d requires an argument"
exit 1
fi
;;
*)
# Move the unrecognized argument to the end of the list.
arg="$1"
shift
set -- "$@" "$arg"
pass_arg_count=`expr $pass_arg_count + 1`
;;
esac
done
if [ $moz_debug -eq 1 ]; then
tmpfile=`mktemp /tmp/mozargs.XXXXXX` || { echo "Cannot create temporary file" >&2; exit 1; }
trap " [ -f \"$tmpfile\" ] && /bin/rm -f -- \"$tmpfile\"" 0 1 2 3 13 15
echo "set args ${1+"$@"}" > $tmpfile
echo "run" >> $tmpfile
echo "$moz_debugger $MOZ_PROGRAM -x $tmpfile"
exec $moz_debugger "$MOZ_PROGRAM" -x $tmpfile
else
exec $MOZ_PROGRAM "$@"
fi
++++++ source-stamp.txt ++++++
REV=078baf501b55
REPO=http://hg.mozilla.org/releases/mozilla-release
++++++ spellcheck.js ++++++
pref("spellchecker.dictionary_path", "/usr/share/myspell");
1
0
Hello community,
here is the log from the commit of package MozillaFirefox for openSUSE:13.2:Update checked in at 2016-05-04 11:38:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.2:Update/MozillaFirefox (Old)
and /work/SRC/openSUSE:13.2:Update/.MozillaFirefox.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "MozillaFirefox"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _link ++++++
--- /var/tmp/diff_new_pack.EWJivq/_old 2016-05-04 11:38:44.000000000 +0200
+++ /var/tmp/diff_new_pack.EWJivq/_new 2016-05-04 11:38:44.000000000 +0200
@@ -1 +1 @@
-<link package='MozillaFirefox.4805' cicount='copy' />
+<link package='MozillaFirefox.5017' cicount='copy' />
1
0
Hello community,
here is the log from the commit of package dovecot22 for openSUSE:Factory checked in at 2016-05-04 08:20:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/dovecot22 (Old)
and /work/SRC/openSUSE:Factory/.dovecot22.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dovecot22"
Changes:
--------
--- /work/SRC/openSUSE:Factory/dovecot22/dovecot22.changes 2016-04-11 10:27:02.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.dovecot22.new/dovecot22.changes 2016-05-04 08:20:30.000000000 +0200
@@ -1,0 +2,89 @@
+Tue Apr 26 22:56:03 UTC 2016 - mrueckert(a)suse.de
+
+- update pigeonhole 0.4.14
+ * The address test now allows specifying the X-Original-To header.
+ + Implemented the Sieve imapsieve extension and its IMAP
+ counterpart (RFC 6785) as a set of plugins. This allows running
+ Sieve scripts at IMAP activity, rather than at delivery. There
+ are also facilities for the familiar sieve_before/sieve_after
+ administrator scripts. A user script is defined for a mailbox
+ using an IMAP METADATA entry, whereas administrator scripts are
+ configured using mailbox matching rules defined in the plugin
+ settings.
+ + Adjusted the Sieve ihave extension to allow capability tests to
+ be performed at runtime. This way, scripts can be written that
+ work both at delivery and from IMAP.
+ + Implemented support for runtime trace debugging. This means
+ that detailed information about which commands, actions and
+ tests are performed is written to a file. That file is created
+ in the configured directory, but only if that directory exists.
+ This way, a particular user can be easily singled out for
+ debugging. This works much like the Dovecot rawlog facility.
+ The trace output is identical to what is produced using
+ sieve-test with its "-t" command line option.
+ + Added a "sieve_user_email" setting that configures the user's
+ primary email address. This is mainly useful to have a user
+ email address available in IMAP, where envelope data is
+ unavailable.
+ + Implemented the dovecot-specific "vnd.dovecot.report"
+ extension. This allows sending report messages in the Message
+ Abuse Reporting Format (RFC 5965).
+ - extprograms plugin: Fixed epoll() panic caused by closing the
+ output FD before the output stream.
+ - Made sure that the local part of a mail address is encoded
+ properly using quoted string syntax when it is not a dot-atom.
+
+-------------------------------------------------------------------
+Tue Apr 26 15:39:33 UTC 2016 - mrueckert(a)suse.de
+
+- update to 2.2.24
+ * doveconf now warns if it sees a global setting being changed
+ when the same setting was already set inside some filters. (A
+ common mistake has been adding more plugins to a global
+ mail_plugins setting after it was already set inside protocol
+ { .. }, which caused the global setting to be ignored for that
+ protocol.)
+ * LMTP proxy: Increased default timeout 30s -> 125s. This makes
+ it less likely to reach the timeout and cause duplicate
+ deliveries.
+ * LMTP and indexer now append ":suffix" to session IDs to make
+ it unique for the specific user's delivery. (Fixes duplicate
+ session ID warnings in stats process.)
+ + Added dict-ldap for performing read-only LDAP dict lookups.
+ + lazy-expunge: All mails can be saved to a single specified
+ mailbox.
+ + mailbox { autoexpunge } supports now wildcards in mailbox
+ names.
+ + doveadm HTTP API: Added support for proxy commands
+ + imapc: Reconnect when getting disconnected in non-selected
+ state.
+ + imapc: Added imapc_features=modseq to access
+ MODSEQs/HIGHESTMODSEQ. This is especially useful for
+ incremental dsync.
+ + doveadm auth/user: Auth lookup performs debug logging if -o
+ auth_debug=yes is given to doveadm.
+ + Added passdb/userdb { auth_verbose=yes|no } setting.
+ + Cassandra: Added user, password, num_threads, connect_timeout
+ and request_timeout settings.
+ + doveadm user -e <value>: Print <value> with %variables
+ expanded.
+ - Huge header lines could have caused Dovecot to use too much
+ memory (depending on config and used IMAP commands).
+ (Typically this would result in only the single user's process
+ dying with out of memory due to reaching service { vsz_limit }
+ - not a global DoS).
+ - dsync: Detect and handle invalid/stale -s state string better.
+ - dsync: Fixed crash caused by specific mailbox renames
+ - auth: Auth cache is now disabled passwd-file. It was
+ unnecessary and it broke %variables in extra fields.
+ - fts-tika: Don't crash if it returns 500 error
+ - dict-redis: Fixed timeout handling
+ - SEARCH INTHREAD was crashing
+ - stats: Only a single fifo_listeners was supported, making it
+ impossible to use both auth_stats=yes and mail stats plugin.
+ - SSL errors were logged in separate "Stacked error" log lines
+ instead of as part of the disconnection reason.
+ - MIME body parser didn't handle properly when a child MIME
+ part's --boundary had the same prefix as the parent.
+
+-------------------------------------------------------------------
Old:
----
dovecot-2.2-pigeonhole-0.4.13.tar.gz
dovecot-2.2.23.tar.gz
New:
----
dovecot-2.2-pigeonhole-0.4.14.tar.gz
dovecot-2.2.24.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ dovecot22.spec ++++++
--- /var/tmp/diff_new_pack.pgGcHY/_old 2016-05-04 08:20:31.000000000 +0200
+++ /var/tmp/diff_new_pack.pgGcHY/_new 2016-05-04 08:20:31.000000000 +0200
@@ -17,11 +17,11 @@
Name: dovecot22
-Version: 2.2.23
+Version: 2.2.24
Release: 0
%define pkg_name dovecot
-%define dovecot_version 2.2.23
-%define dovecot_pigeonhole_version 0.4.13
+%define dovecot_version 2.2.24
+%define dovecot_pigeonhole_version 0.4.14
%define dovecot_branch 2.2
%define dovecot_pigeonhole_source_dir %{pkg_name}-%{dovecot_branch}-pigeonhole-%{dovecot_pigeonhole_version}
%define dovecot_pigeonhole_docdir %{_docdir}/%{pkg_name}/dovecot-pigeonhole
@@ -577,6 +577,7 @@
%{_libdir}/%{pkg_name}/modules/lib11_imap_quota_plugin.so
%{_libdir}/%{pkg_name}/modules/lib90_sieve_plugin.so
%{_libdir}/%{pkg_name}/modules/lib90_stats_plugin.so
+%{_libdir}/%{pkg_name}/modules/lib95_imap_sieve_plugin.so
%{_libdir}/%{pkg_name}/modules/lib95_imap_stats_plugin.so
%{_libdir}/%{pkg_name}/modules/libfs_compress.so
%{_libdir}/%{pkg_name}/modules/libssl_iostream_openssl.so
@@ -602,6 +603,7 @@
%dir %{_libdir}/%{pkg_name}/modules/sieve
%{_libdir}/%{pkg_name}/modules/sieve/lib10_sieve_storage_ldap_plugin.so
%{_libdir}/%{pkg_name}/modules/sieve/lib90_sieve_extprograms_plugin.so
+%{_libdir}/%{pkg_name}/modules/sieve/lib90_sieve_imapsieve_plugin.so
#
%dir %{_libdir}/%{pkg_name}/modules/stats/
%{_libdir}/%{pkg_name}/modules/stats/libstats_auth.so
++++++ dovecot-2.2-pigeonhole-0.4.13.tar.gz -> dovecot-2.2-pigeonhole-0.4.14.tar.gz ++++++
++++ 10529 lines of diff (skipped)
++++++ dovecot-2.2-pigeonhole-0.4.13.tar.gz -> dovecot-2.2.24.tar.gz ++++++
++++ 947171 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package cinnamon for openSUSE:Factory checked in at 2016-05-04 08:20:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cinnamon (Old)
and /work/SRC/openSUSE:Factory/.cinnamon.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cinnamon"
Changes:
--------
--- /work/SRC/openSUSE:Factory/cinnamon/cinnamon.changes 2016-04-30 23:29:21.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.cinnamon.new/cinnamon.changes 2016-05-04 08:20:28.000000000 +0200
@@ -1,0 +2,8 @@
+Wed Apr 27 08:23:43 UTC 2016 - sor.alexei(a)meowr.ru
+
+- Update to version 3.0.1:
+ * extensions: Fix the alignment of the rating number in the
+ "Get more" pages so it won't get covered by overlay scrollbars.
+ * Bump Muffin version requirement because of API changes.
+
+-------------------------------------------------------------------
Old:
----
cinnamon-3.0.0.tar.gz
New:
----
cinnamon-3.0.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cinnamon.spec ++++++
--- /var/tmp/diff_new_pack.0510Eg/_old 2016-05-04 08:20:29.000000000 +0200
+++ /var/tmp/diff_new_pack.0510Eg/_new 2016-05-04 08:20:29.000000000 +0200
@@ -21,7 +21,7 @@
%define _name Cinnamon
%define _version 3.0.0
Name: cinnamon
-Version: 3.0.0
+Version: 3.0.1
Release: 0
Summary: GNU/Linux Desktop featuring a traditional layout
License: GPL-2.0+ and LGPL-2.1
@@ -54,7 +54,7 @@
BuildRequires: pkg-config
BuildRequires: python-devel
BuildRequires: update-desktop-files
-BuildRequires: pkgconfig(cinnamon-desktop)
+BuildRequires: pkgconfig(cinnamon-desktop) >= %{_version}
BuildRequires: pkgconfig(cjs-internals-1.0)
BuildRequires: pkgconfig(gconf-2.0)
BuildRequires: pkgconfig(gnome-bluetooth-1.0)
@@ -63,7 +63,7 @@
BuildRequires: pkgconfig(gstreamer-1.0)
BuildRequires: pkgconfig(libcinnamon-menu-3.0)
BuildRequires: pkgconfig(libcroco-0.6)
-BuildRequires: pkgconfig(libmuffin)
+BuildRequires: pkgconfig(libmuffin) >= %{_version}
BuildRequires: pkgconfig(libnm-glib)
BuildRequires: pkgconfig(libnm-util)
BuildRequires: pkgconfig(libsoup-2.4)
++++++ cinnamon-3.0.0.tar.gz -> cinnamon-3.0.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Cinnamon-3.0.0/configure.ac new/Cinnamon-3.0.1/configure.ac
--- old/Cinnamon-3.0.0/configure.ac 2016-04-24 15:03:11.000000000 +0200
+++ new/Cinnamon-3.0.1/configure.ac 2016-04-25 11:11:29.000000000 +0200
@@ -1,5 +1,5 @@
AC_PREREQ(2.63)
-AC_INIT([cinnamon],[3.0.0],[https://github.com/linuxmint/Cinnamon/issues],[cinnamon])
+AC_INIT([cinnamon],[3.0.1],[https://github.com/linuxmint/Cinnamon/issues],[cinnamon])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_SRCDIR([src/cinnamon-global.c])
@@ -64,7 +64,7 @@
CLUTTER_MIN_VERSION=1.10.0
GOBJECT_INTROSPECTION_MIN_VERSION=0.9.2
GJS_MIN_VERSION=2.3.1
-MUFFIN_MIN_VERSION=2.5.0
+MUFFIN_MIN_VERSION=3.0.0
GTK_MIN_VERSION=3.9.12
GIO_MIN_VERSION=2.35.0
POLKIT_MIN_VERSION=0.100
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Cinnamon-3.0.0/debian/changelog new/Cinnamon-3.0.1/debian/changelog
--- old/Cinnamon-3.0.0/debian/changelog 2016-04-24 15:03:11.000000000 +0200
+++ new/Cinnamon-3.0.1/debian/changelog 2016-04-25 11:11:29.000000000 +0200
@@ -1,3 +1,13 @@
+cinnamon (3.0.1) sarah; urgency=medium
+
+ [ JosephMcc ]
+ * extensions: Fix the alignment of the rating number in the "Get more" pages so it won't get covered by overlay scrollbars
+
+ [ leigh123linux ]
+ * bump muffin version because of API changes
+
+ -- Clement Lefebvre <root(a)linuxmint.com> Mon, 25 Apr 2016 10:10:43 +0100
+
cinnamon (3.0.0) sarah; urgency=medium
[ A-Shahbazi ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Cinnamon-3.0.0/files/usr/share/cinnamon/cinnamon-settings/bin/ExtensionCore.py new/Cinnamon-3.0.1/files/usr/share/cinnamon/cinnamon-settings/bin/ExtensionCore.py
--- old/Cinnamon-3.0.0/files/usr/share/cinnamon/cinnamon-settings/bin/ExtensionCore.py 2016-04-24 15:03:11.000000000 +0200
+++ new/Cinnamon-3.0.1/files/usr/share/cinnamon/cinnamon-settings/bin/ExtensionCore.py 2016-04-25 11:11:29.000000000 +0200
@@ -375,9 +375,8 @@
right = Gtk.CellRendererText()
- right.set_property('xalign', 1.0)
+ right.set_property('xalign', 0.5)
gm_column4 = Gtk.TreeViewColumn("Score", right, markup=4)
- gm_column4.set_alignment(1.0)
gm_column4.set_expand(True)
self.gm_treeview.append_column(gm_column1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Cinnamon-3.0.0/files/usr/share/cinnamon/cinnamon-settings/modules/cs_themes.py new/Cinnamon-3.0.1/files/usr/share/cinnamon/cinnamon-settings/modules/cs_themes.py
--- old/Cinnamon-3.0.0/files/usr/share/cinnamon/cinnamon-settings/modules/cs_themes.py 2016-04-24 15:03:11.000000000 +0200
+++ new/Cinnamon-3.0.1/files/usr/share/cinnamon/cinnamon-settings/modules/cs_themes.py 2016-04-25 11:11:29.000000000 +0200
@@ -198,7 +198,7 @@
box = Gtk.VBox()
window.add(box)
window.set_title(_("Desktop themes"))
- window.set_default_size(640, 480)
+ window.set_default_size(720, 480)
window.set_border_width(6)
window.set_position(Gtk.WindowPosition.CENTER)
page = ExtensionSidePage(self.name, self.icon, self.keywords, box, "theme", None)
1
0
Hello community,
here is the log from the commit of package cinnamon-themes for openSUSE:Factory checked in at 2016-05-04 08:20:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cinnamon-themes (Old)
and /work/SRC/openSUSE:Factory/.cinnamon-themes.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cinnamon-themes"
Changes:
--------
--- /work/SRC/openSUSE:Factory/cinnamon-themes/cinnamon-themes.changes 2016-04-28 17:00:00.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.cinnamon-themes.new/cinnamon-themes.changes 2016-05-04 08:20:27.000000000 +0200
@@ -1,0 +2,6 @@
+Tue May 3 13:13:00 UTC 2016 - sor.alexei(a)meowr.ru
+
+- Update to version 2016.05.03:
+ * Linux Mint: Switch snap OSD tint from blue to green.
+
+-------------------------------------------------------------------
Old:
----
cinnamon-themes_2016.04.22.tar.xz
New:
----
cinnamon-themes_2016.05.03.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cinnamon-themes.spec ++++++
--- /var/tmp/diff_new_pack.LQjp1b/_old 2016-05-04 08:20:28.000000000 +0200
+++ /var/tmp/diff_new_pack.LQjp1b/_new 2016-05-04 08:20:28.000000000 +0200
@@ -17,7 +17,7 @@
Name: cinnamon-themes
-Version: 2016.04.22
+Version: 2016.05.03
Release: 0
Summary: Default Cinnamon Themes
License: GPL-3.0+
++++++ cinnamon-themes_2016.04.22.tar.xz -> cinnamon-themes_2016.05.03.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cinnamon-themes/debian/changelog new/cinnamon-themes/debian/changelog
--- old/cinnamon-themes/debian/changelog 2016-04-22 15:18:23.000000000 +0200
+++ new/cinnamon-themes/debian/changelog 2016-05-03 13:19:55.000000000 +0200
@@ -1,3 +1,9 @@
+cinnamon-themes (2016.05.03) sarah; urgency=medium
+
+ * Linux Mint theme: Switch snap OSD tint from blue to green
+
+ -- Clement Lefebvre <root(a)linuxmint.com> Tue, 03 May 2016 12:19:30 +0100
+
cinnamon-themes (2016.04.22) sarah; urgency=medium
* Fix sound applet -> applications -> volume sliders
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cinnamon-themes/usr/share/themes/Linux Mint/cinnamon/cinnamon.css new/cinnamon-themes/usr/share/themes/Linux Mint/cinnamon/cinnamon.css
--- old/cinnamon-themes/usr/share/themes/Linux Mint/cinnamon/cinnamon.css 2016-04-22 15:17:33.000000000 +0200
+++ new/cinnamon-themes/usr/share/themes/Linux Mint/cinnamon/cinnamon.css 2016-05-03 13:18:28.000000000 +0200
@@ -2128,7 +2128,7 @@
.tile-preview.snap,
.tile-hud.snap {
- background-color: rgba(134, 134, 170, 0.5);
+ background-color: rgba(134, 170, 134, 0.5);
border: 1px solid rgba(85, 85, 85, 0.8);
}
1
0
Hello community,
here is the log from the commit of package qmmp for openSUSE:Factory checked in at 2016-05-04 08:20:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qmmp (Old)
and /work/SRC/openSUSE:Factory/.qmmp.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qmmp"
Changes:
--------
--- /work/SRC/openSUSE:Factory/qmmp/qmmp.changes 2016-04-06 11:52:04.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.qmmp.new/qmmp.changes 2016-05-04 08:20:24.000000000 +0200
@@ -1,0 +2,10 @@
+Tue May 3 10:34:12 UTC 2016 - sor.alexei(a)meowr.ru
+
+- Update to version 1.0.9 (changes since 1.0.7):
+ * Fix session check in the scrobbler plugin.
+ * Fix working with both libre.fm and last.fm.
+ * Fix cell height in the stream browser.
+ * Remove borders from statusbar in the qsui plugin.
+ * Fix taglib-1.9 support.
+
+-------------------------------------------------------------------
Old:
----
qmmp-1.0.7.tar.bz2
New:
----
qmmp-1.0.9.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ qmmp.spec ++++++
--- /var/tmp/diff_new_pack.ZdkS3B/_old 2016-05-04 08:20:25.000000000 +0200
+++ /var/tmp/diff_new_pack.ZdkS3B/_new 2016-05-04 08:20:25.000000000 +0200
@@ -19,7 +19,7 @@
%define sover 1
%bcond_with restricted
Name: qmmp
-Version: 1.0.7
+Version: 1.0.9
Release: 0
Summary: Qt-based Multimedia Player
License: GPL-2.0+
@@ -37,6 +37,7 @@
BuildRequires: hicolor-icon-theme
BuildRequires: libmpcdec-devel
BuildRequires: libqt5-qttools-devel >= 5.4
+BuildRequires: pkg-config
BuildRequires: pkgconfig(Qt5Core) >= 5.4
BuildRequires: pkgconfig(Qt5DBus) >= 5.4
BuildRequires: pkgconfig(Qt5Network) >= 5.4
++++++ qmmp-1.0.7.tar.bz2 -> qmmp-1.0.9.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/CMakeLists.txt new/qmmp-1.0.9/CMakeLists.txt
--- old/qmmp-1.0.7/CMakeLists.txt 2016-04-03 14:15:58.000000000 +0200
+++ new/qmmp-1.0.9/CMakeLists.txt 2016-05-02 14:23:19.000000000 +0200
@@ -5,7 +5,7 @@
SET(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} /usr/local/include)
#Qt5 modules
-SET(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} /opt/qt55/lib/cmake)
+SET(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} /opt/qt56/lib/cmake)
#extract version from qmmp.h
FILE(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/src/qmmp/qmmp.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/ChangeLog new/qmmp-1.0.9/ChangeLog
--- old/qmmp-1.0.7/ChangeLog 2016-04-03 14:15:58.000000000 +0200
+++ new/qmmp-1.0.9/ChangeLog 2016-05-02 14:23:19.000000000 +0200
@@ -1109,3 +1109,14 @@
* fixed sendig multiple play commands when opening several files for playback
* fixed memory leaks
* fixed qt5.6 support
+
+Version 1.0.8
+* fixed session check in the scrobbler plugin
+* fixed working with both libre.fm and last.fm
+* fixed cell height in the stream browser
+* fixed unicode support under windows
+* fixed problem with file access under windows
+* removed borders from statusbar in the qsui plugin
+
+Version 1.0.9
+* fixed taglib-1.9 support
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/ChangeLog.rus new/qmmp-1.0.9/ChangeLog.rus
--- old/qmmp-1.0.7/ChangeLog.rus 2016-04-03 14:15:58.000000000 +0200
+++ new/qmmp-1.0.9/ChangeLog.rus 2016-05-02 14:23:19.000000000 +0200
@@ -1111,3 +1111,14 @@
* устранена отправка множества команд "воспроизвести" при открытии нескольких файлов для воспроизведения
* устранены утечки памяти
* исправлена поддержка qt5.6
+
+Версия 1.0.8
+* исправлена проверка сессии в модуле scrobbler
+* исправлена одновременная работа с last.fm и libre.fm
+* исправлен размер ячеек в списке интернет-радиостанций
+* исправлена поддержка юникода под windows
+* исправлена проблема доступа к файлам под windows
+* отключены отсупы в строке состояния интерфейса qsui
+
+Версия 1.0.9
+* исправлена поддержка taglib-1.9
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/ChangeLog.svn new/qmmp-1.0.9/ChangeLog.svn
--- old/qmmp-1.0.7/ChangeLog.svn 2016-04-03 14:15:58.000000000 +0200
+++ new/qmmp-1.0.9/ChangeLog.svn 2016-05-02 14:23:19.000000000 +0200
@@ -1,4 +1,44 @@
------------------------------------------------------------------------
+r6316 | trialuser02 | 2016-05-02 15:22:28 +0300 (Пн., 02 мая 2016) | 1 line
+
+updated changelogs
+------------------------------------------------------------------------
+r6315 | trialuser02 | 2016-05-02 14:36:43 +0300 (Пн., 02 мая 2016) | 1 line
+
+fixed taglib-1.9 support
+------------------------------------------------------------------------
+r6314 | trialuser02 | 2016-05-02 14:25:06 +0300 (Пн., 02 мая 2016) | 1 line
+
+version bump
+------------------------------------------------------------------------
+r6298 | trialuser02 | 2016-05-02 11:50:06 +0300 (Пн., 02 мая 2016) | 1 line
+
+qsui: removed borders from statusbar
+------------------------------------------------------------------------
+r6297 | trialuser02 | 2016-05-02 11:48:41 +0300 (Пн., 02 мая 2016) | 1 line
+
+fixed problems with metadata reading
+------------------------------------------------------------------------
+r6289 | trialuser02 | 2016-05-01 17:33:32 +0300 (Вс., 01 мая 2016) | 1 line
+
+updated changelog
+------------------------------------------------------------------------
+r6256 | trialuser02 | 2016-04-22 08:43:03 +0300 (Пт., 22 апр. 2016) | 1 line
+
+stream browser: fixed cell height
+------------------------------------------------------------------------
+r6253 | trialuser02 | 2016-04-19 09:00:03 +0300 (Вт., 19 апр. 2016) | 1 line
+
+fixed multiscrobbling
+------------------------------------------------------------------------
+r6248 | trialuser02 | 2016-04-17 14:27:52 +0300 (Вс., 17 апр. 2016) | 1 line
+
+scrobbler: fixed session check
+------------------------------------------------------------------------
+r6224 | trialuser02 | 2016-04-03 18:25:50 +0300 (Вс., 03 апр. 2016) | 1 line
+
+version bump
+------------------------------------------------------------------------
r6197 | trialuser02 | 2016-03-25 09:57:21 +0300 (Пт., 25 марта 2016) | 1 line
updated changelogs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/bin/qmmp_launcher new/qmmp-1.0.9/bin/qmmp_launcher
--- old/qmmp-1.0.7/bin/qmmp_launcher 2016-04-03 14:15:52.000000000 +0200
+++ new/qmmp-1.0.9/bin/qmmp_launcher 2016-05-02 14:23:19.000000000 +0200
@@ -1,7 +1,7 @@
#!/bin/sh
MYDIR=$(dirname $0)
#QT_LIB_DIR=$(dirname $(which qmake))/../lib
-QT_LIB_DIR=/opt/qt55/lib
+QT_LIB_DIR=/opt/qt56/lib
QMMP_LIB_DIRS=$MYDIR/../lib:$MYDIR/../src/qmmpui
if [ -z ${LD_LIBRARY_PATH} ]; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/qmmp.pri new/qmmp-1.0.9/qmmp.pri
--- old/qmmp-1.0.7/qmmp.pri 2016-04-03 14:15:58.000000000 +0200
+++ new/qmmp-1.0.9/qmmp.pri 2016-05-02 14:23:19.000000000 +0200
@@ -13,7 +13,7 @@
#Version
-QMMP_VERSION = 1.0.7
+QMMP_VERSION = 1.0.9
#Comment/uncomment this if you want to change plugins list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/app/qmmp.rc new/qmmp-1.0.9/src/app/qmmp.rc
--- old/qmmp-1.0.7/src/app/qmmp.rc 2016-04-03 14:15:52.000000000 +0200
+++ new/qmmp-1.0.9/src/app/qmmp.rc 2016-05-02 14:23:19.000000000 +0200
@@ -1,7 +1,7 @@
#include <winver.h>
-#define QMMP_FILEVERSION 1,0,7,0
-#define QMMP_PRODUCTVERSION "1.0.7.0"
+#define QMMP_FILEVERSION 1,0,9,0
+#define QMMP_PRODUCTVERSION "1.0.9.0"
IDI_ICON1 ICON DISCARDABLE "images\\ico\\qmmp.ico"
IDI_ICON2 ICON DISCARDABLE "images\\ico\\qmmp_file.ico"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/General/rgscan/rgscandialog.cpp new/qmmp-1.0.9/src/plugins/General/rgscan/rgscandialog.cpp
--- old/qmmp-1.0.7/src/plugins/General/rgscan/rgscandialog.cpp 2016-04-03 14:15:53.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/General/rgscan/rgscandialog.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -39,9 +39,13 @@
#include "gain_analysis.h"
#include "rgscandialog.h"
-#define QStringToTString_qt4(s) TagLib::String(s.toUtf8().constData(), TagLib::String::UTF8)
#define FILE_SKIPPED (Qt::UserRole + 1)
+#if ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION <= 9))
+#undef QStringToTString
+#define QStringToTString(s) TagLib::String(s.toUtf8().constData(), TagLib::String::UTF8)
+#endif
+
struct ReplayGainInfoItem
{
QMap<Qmmp::ReplayGainKey, double> info;
@@ -283,12 +287,12 @@
TagLib::String RGScanDialog::gainToString(double value)
{
- return QStringToTString_qt4(QString("%1 dB").arg(value, 0, 'f', 2));
+ return QStringToTString(QString("%1 dB").arg(value, 0, 'f', 2));
}
TagLib::String RGScanDialog::peakToString(double value)
{
- return QStringToTString_qt4(QString("%1").arg(value, 0, 'f', 6));
+ return QStringToTString(QString("%1").arg(value, 0, 'f', 6));
}
void RGScanDialog::writeAPETag(TagLib::APE::Tag *tag, ReplayGainInfoItem *item)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/General/scrobbler/scrobbler.cpp new/qmmp-1.0.9/src/plugins/General/scrobbler/scrobbler.cpp
--- old/qmmp-1.0.7/src/plugins/General/scrobbler/scrobbler.cpp 2016-04-03 14:15:53.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/General/scrobbler/scrobbler.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2010-2015 by Ilya Kotov *
+ * Copyright (C) 2010-2016 by Ilya Kotov *
* forkotov02(a)hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -87,7 +87,8 @@
m_submitReply = 0;
m_scrobblerUrl = scrobblerUrl;
m_name = name;
- m_state = Qmmp::Stopped;
+ m_previousState = Qmmp::Stopped;
+ m_elapsed = 0;
m_time = new QTime();
m_cache = new ScrobblerCache(Qmmp::configDir() +"scrobbler_"+name+".cache");
m_ua = QString("qmmp-plugins/%1").arg(Qmmp::strVersion().toLower()).toLatin1();
@@ -125,29 +126,26 @@
void Scrobbler::setState(Qmmp::State state)
{
- static Qmmp::State previousState = state;
- static int elapsed = 0;
- m_state = state;
switch ((uint) state)
{
case Qmmp::Playing:
- if (previousState != Qmmp::Paused)
+ if (m_previousState != Qmmp::Paused)
{
qDebug("Scrobbler[%s]: new song started", qPrintable(m_name));
m_start_ts = QDateTime::currentDateTime().toTime_t();
- elapsed = 0;
+ m_elapsed = 0;
}
else
{
- qDebug("Scrobbler[%s]: resuming from %d seconds played", qPrintable(m_name), elapsed / 1000);
+ qDebug("Scrobbler[%s]: resuming from %d seconds played", qPrintable(m_name), m_elapsed / 1000);
}
m_time->restart();
break;
case Qmmp::Stopped:
- if (previousState != Qmmp::Paused)
- elapsed += m_time->elapsed();
+ if (m_previousState != Qmmp::Paused)
+ m_elapsed += m_time->elapsed();
if (!m_song.metaData().isEmpty()
- && ((elapsed / 1000 > 240) || (elapsed / 1000 > int(m_song.length()/2)))
+ && ((m_elapsed / 1000 > 240) || (m_elapsed / 1000 > int(m_song.length()/2)))
&& (m_song.length() > MIN_SONG_LENGTH))
{
m_song.setTimeStamp(m_start_ts);
@@ -163,19 +161,19 @@
submit();
break;
case Qmmp::Paused:
- elapsed += m_time->elapsed();
- qDebug("Scrobbler[%s]: pausing after %d seconds played", qPrintable(m_name), elapsed / 1000);
+ m_elapsed += m_time->elapsed();
+ qDebug("Scrobbler[%s]: pausing after %d seconds played", qPrintable(m_name), m_elapsed / 1000);
break;
default:
;
}
- previousState = state;
+ m_previousState = state;
}
void Scrobbler::updateMetaData()
{
QMap <Qmmp::MetaData, QString> metadata = m_core->metaData();
- if(m_state != Qmmp::Playing || m_core->totalTime() <= 0) //skip stream
+ if(m_core->state() != Qmmp::Playing || m_core->totalTime() <= 0) //skip stream
return;
if(metadata.value(Qmmp::TITLE).isEmpty() || metadata.value(Qmmp::ARTIST).isEmpty()) //skip empty tags
return;
@@ -464,8 +462,7 @@
QMap <QString, QString> params;
params.insert("api_key", API_KEY);
params.insert("sk", session);
- params.insert("method", "user.getRecommendedArtists");
- params.insert("limit", "1");
+ params.insert("method", "user.getInfo");
QUrl url(m_scrobblerUrl);
url.setPort(m_scrobblerUrl.startsWith("https") ? 443 : 80);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/General/scrobbler/scrobbler.h new/qmmp-1.0.9/src/plugins/General/scrobbler/scrobbler.h
--- old/qmmp-1.0.7/src/plugins/General/scrobbler/scrobbler.h 2016-04-03 14:15:53.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/General/scrobbler/scrobbler.h 2016-05-02 14:23:19.000000000 +0200
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2010-2015 by Ilya Kotov *
+ * Copyright (C) 2010-2016 by Ilya Kotov *
* forkotov02(a)hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -83,6 +83,8 @@
QTime *m_time;
ScrobblerCache *m_cache;
QString m_scrobblerUrl, m_name;
+ Qmmp::State m_previousState;
+ int m_elapsed;
};
/**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/General/streambrowser/streamwindow.cpp new/qmmp-1.0.9/src/plugins/General/streambrowser/streamwindow.cpp
--- old/qmmp-1.0.7/src/plugins/General/streambrowser/streamwindow.cpp 2016-04-03 14:15:53.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/General/streambrowser/streamwindow.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2012-2015 by Ilya Kotov *
+ * Copyright (C) 2012-2016 by Ilya Kotov *
* forkotov02(a)hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -59,7 +59,7 @@
m_iceCastFilterModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
//icecast table
ui.icecastTableView->setModel(m_iceCastFilterModel);
- ui.icecastTableView->verticalHeader()->setDefaultSectionSize(fontMetrics().height());
+ ui.icecastTableView->verticalHeader()->setDefaultSectionSize(fontMetrics().height() + 3);
ui.icecastTableView->verticalHeader()->setSectionResizeMode(QHeaderView::Fixed);
ui.icecastTableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
ui.icecastTableView->setContextMenuPolicy(Qt::CustomContextMenu);
@@ -77,7 +77,7 @@
m_favoritesFilterModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
//favorites table
ui.favoritesTableView->setModel(m_favoritesFilterModel);
- ui.favoritesTableView->verticalHeader()->setDefaultSectionSize(fontMetrics().height());
+ ui.favoritesTableView->verticalHeader()->setDefaultSectionSize(fontMetrics().height() + 3);
ui.favoritesTableView->verticalHeader()->setSectionResizeMode(QHeaderView::Fixed);
ui.favoritesTableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
ui.favoritesTableView->setContextMenuPolicy(Qt::CustomContextMenu);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp new/qmmp-1.0.9/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
--- old/qmmp-1.0.7/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp 2016-04-03 14:15:53.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -190,7 +190,11 @@
QList <FileInfo*> list;
AVFormatContext *in = 0;
+#ifdef Q_OS_WIN
+ if (avformat_open_input(&in,fileName.toUtf8().constData(), 0, 0) < 0)
+#else
if (avformat_open_input(&in,fileName.toLocal8Bit().constData(), 0, 0) < 0)
+#endif
{
qDebug("DecoderFFmpegFactory: unable to open file");
return list;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/Input/ffmpeg/ffmpegmetadatamodel.cpp new/qmmp-1.0.9/src/plugins/Input/ffmpeg/ffmpegmetadatamodel.cpp
--- old/qmmp-1.0.7/src/plugins/Input/ffmpeg/ffmpegmetadatamodel.cpp 2016-04-03 14:15:53.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/Input/ffmpeg/ffmpegmetadatamodel.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -23,7 +23,11 @@
FFmpegMetaDataModel::FFmpegMetaDataModel(const QString &path, QObject *parent) : MetaDataModel(parent)
{
m_in = 0;
+#ifdef Q_OS_WIN
+ if (avformat_open_input(&m_in, path.toUtf8().constData(), 0, 0) < 0)
+#else
if (avformat_open_input(&m_in, path.toLocal8Bit().constData(), 0, 0) < 0)
+#endif
return;
avformat_find_stream_info(m_in, 0);
av_read_play(m_in);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/Input/flac/decoder_flac.cpp new/qmmp-1.0.9/src/plugins/Input/flac/decoder_flac.cpp
--- old/qmmp-1.0.7/src/plugins/Input/flac/decoder_flac.cpp 2016-04-03 14:15:52.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/Input/flac/decoder_flac.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -268,7 +268,7 @@
QString p = m_path;
p.remove("flac://");
p.remove(QRegExp("#\\d+$"));
- TagLib::FLAC::File fileRef(p.toLocal8Bit().constData());
+ TagLib::FLAC::File fileRef(QStringToFileName(p));
//looking for cuesheet comment
TagLib::Ogg::XiphComment *xiph_comment = fileRef.xiphComment();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/Input/flac/decoderflacfactory.cpp new/qmmp-1.0.9/src/plugins/Input/flac/decoderflacfactory.cpp
--- old/qmmp-1.0.7/src/plugins/Input/flac/decoderflacfactory.cpp 2016-04-03 14:15:52.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/Input/flac/decoderflacfactory.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2008-2015 by Ilya Kotov *
+ * Copyright (C) 2008-2016 by Ilya Kotov *
* forkotov02(a)hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -26,16 +26,13 @@
#include <taglib/oggflacfile.h>
#include <taglib/xiphcomment.h>
#include <taglib/tmap.h>
-#if (TAGLIB_MAJOR_VERSION > 1) || ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION >= 8))
#include <taglib/tfilestream.h>
#include <taglib/id3v2framefactory.h>
-#endif
#include "cueparser.h"
#include "decoder_flac.h"
#include "flacmetadatamodel.h"
#include "decoderflacfactory.h"
-
// DecoderFLACFactory
bool DecoderFLACFactory::supports(const QString &source) const
@@ -102,27 +99,18 @@
return QList<FileInfo *>() << info;
}
-#if (TAGLIB_MAJOR_VERSION > 1) || ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION >= 8))
- TagLib::FileStream stream(fileName.toLocal8Bit().constData(), true);
-#endif
+ TagLib::FileStream stream(QStringToFileName(fileName), true);
+
if(fileName.endsWith(".flac", Qt::CaseInsensitive))
{
-#if (TAGLIB_MAJOR_VERSION > 1) || ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION >= 8))
flacFile = new TagLib::FLAC::File(&stream, TagLib::ID3v2::FrameFactory::instance());
-#else
- flacFile = new TagLib::FLAC::File(fileName.toLocal8Bit().constData());
-#endif
tag = useMetaData ? flacFile->xiphComment() : 0;
ap = flacFile->audioProperties();
}
else if(fileName.endsWith(".oga", Qt::CaseInsensitive))
{
-#if (TAGLIB_MAJOR_VERSION > 1) || ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION >= 8))
oggFlacFile = new TagLib::Ogg::FLAC::File(&stream);
-#else
- oggFlacFile = new TagLib::Ogg::FLAC::File(fileName.toLocal8Bit().constData());
-#endif
tag = useMetaData ? oggFlacFile->tag() : 0;
ap = oggFlacFile->audioProperties();
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/Input/flac/flacmetadatamodel.cpp new/qmmp-1.0.9/src/plugins/Input/flac/flacmetadatamodel.cpp
--- old/qmmp-1.0.7/src/plugins/Input/flac/flacmetadatamodel.cpp 2016-04-03 14:15:52.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/Input/flac/flacmetadatamodel.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009-2012 by Ilya Kotov *
+ * Copyright (C) 2009-2016 by Ilya Kotov *
* forkotov02(a)hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -26,11 +26,15 @@
#include <qmmp/metadatamanager.h>
#include "flacmetadatamodel.h"
-#define QStringToTString_qt4(s) TagLib::String(s.toUtf8().constData(), TagLib::String::UTF8)
-#define TStringToQString_qt4(s) QString::fromUtf8(s.toCString(true)).trimmed()
+#if ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION <= 9))
+#undef QStringToTString
+#define QStringToTString(s) TagLib::String(s.toUtf8().constData(), TagLib::String::UTF8)
+#endif
FLACMetaDataModel::FLACMetaDataModel(const QString &path, QObject *parent) : MetaDataModel(parent)
{
+ m_file = 0;
+
if(path.startsWith("flac://"))
{
QString p = path;
@@ -39,39 +43,49 @@
m_path = p;
}
else
- {
m_path = path;
- m_tags << new VorbisCommentModel(path);
+
+ TagLib::Ogg::XiphComment *tag = 0;
+
+ if(m_path.endsWith(".flac", Qt::CaseInsensitive))
+ {
+ TagLib::FLAC::File *f = new TagLib::FLAC::File(QStringToFileName(m_path));
+ tag = f->xiphComment();
+ m_file = f;
}
+ else if(m_path.endsWith(".oga", Qt::CaseInsensitive))
+ {
+ TagLib::Ogg::FLAC::File *f = new TagLib::Ogg::FLAC::File(QStringToFileName(m_path));
+ tag = f->tag();
+ m_file = f;
+ }
+
+ if(m_file && m_file->isValid() && !path.startsWith("flac://"))
+ m_tags << new VorbisCommentModel(tag, m_file);
}
FLACMetaDataModel::~FLACMetaDataModel()
{
while(!m_tags.isEmpty())
delete m_tags.takeFirst();
+ if(m_file)
+ {
+ delete m_file;
+ m_file = 0;
+ }
}
QHash<QString, QString> FLACMetaDataModel::audioProperties()
{
QHash<QString, QString> ap;
- TagLib::FLAC::File *flacFile = 0;
- TagLib::Ogg::FLAC::File *oggFlacFile = 0;
- TagLib::FLAC::Properties *taglib_ap = 0;
+ TagLib::AudioProperties *taglib_ap = 0;
qint64 size = 0;
- if(m_path.endsWith(".flac", Qt::CaseInsensitive))
- {
- flacFile = new TagLib::FLAC::File(m_path.toLocal8Bit().constData());
- taglib_ap = flacFile->audioProperties();
- size = flacFile->length();
- }
- else if(m_path.endsWith(".oga", Qt::CaseInsensitive))
+
+ if(m_file && m_file->isValid())
{
- oggFlacFile = new TagLib::Ogg::FLAC::File(m_path.toLocal8Bit().constData());
- taglib_ap = oggFlacFile->audioProperties();
- size = oggFlacFile->length();
+ taglib_ap = m_file->audioProperties();
+ size = m_file->length();
}
- else
- return ap;
if(taglib_ap)
{
@@ -81,12 +95,8 @@
ap.insert(tr("Sample rate"), QString("%1 " + tr("Hz")).arg(taglib_ap->sampleRate()));
ap.insert(tr("Channels"), QString("%1").arg(taglib_ap->channels()));
ap.insert(tr("Bitrate"), QString("%1 " + tr("kbps")).arg(taglib_ap->bitrate()));
+ ap.insert(tr("File size"), QString("%1 "+tr("KB")).arg(size/1000));
}
- ap.insert(tr("File size"), QString("%1 "+tr("KB")).arg(size/1024));
- if(flacFile)
- delete flacFile;
- if(oggFlacFile)
- delete oggFlacFile;
return ap;
}
@@ -120,30 +130,14 @@
return MetaDataManager::instance()->getCoverPath(m_path);
}
-VorbisCommentModel::VorbisCommentModel(const QString &path) : TagModel(TagModel::Save)
+VorbisCommentModel::VorbisCommentModel(TagLib::Ogg::XiphComment *tag, TagLib::File *file) : TagModel(TagModel::Save)
{
- m_file = 0;
- m_ogg_file = 0;
- m_tag = 0;
- if(path.endsWith(".flac"))
- {
- m_file = new TagLib::FLAC::File (path.toLocal8Bit().constData());
- m_tag = m_file->xiphComment();
- }
- else if (path.endsWith(".oga"))
- {
- m_ogg_file = new TagLib::Ogg::FLAC::File(path.toLocal8Bit().constData());
- m_tag = m_ogg_file->tag();
- }
+ m_file = file;
+ m_tag = tag;
}
VorbisCommentModel::~VorbisCommentModel()
-{
- if(m_file)
- delete m_file;
- if(m_ogg_file)
- delete m_ogg_file;
-}
+{}
const QString VorbisCommentModel::name()
{
@@ -157,25 +151,25 @@
switch((int) key)
{
case Qmmp::TITLE:
- return TStringToQString_qt4(m_tag->title());
+ return TStringToQString(m_tag->title());
case Qmmp::ARTIST:
- return TStringToQString_qt4(m_tag->artist());
+ return TStringToQString(m_tag->artist());
case Qmmp::ALBUMARTIST:
if(m_tag->fieldListMap()["ALBUMARTIST"].isEmpty())
return QString();
else
- return TStringToQString_qt4(m_tag->fieldListMap()["ALBUMARTIST"].front());
+ return TStringToQString(m_tag->fieldListMap()["ALBUMARTIST"].front());
case Qmmp::ALBUM:
- return TStringToQString_qt4(m_tag->album());
+ return TStringToQString(m_tag->album());
case Qmmp::COMMENT:
- return TStringToQString_qt4(m_tag->comment());
+ return TStringToQString(m_tag->comment());
case Qmmp::GENRE:
- return TStringToQString_qt4(m_tag->genre());
+ return TStringToQString(m_tag->genre());
case Qmmp::COMPOSER:
if(m_tag->fieldListMap()["COMPOSER"].isEmpty())
return QString();
else
- return TStringToQString_qt4(m_tag->fieldListMap()["COMPOSER"].front());
+ return TStringToQString(m_tag->fieldListMap()["COMPOSER"].front());
case Qmmp::YEAR:
return QString::number(m_tag->year());
case Qmmp::TRACK:
@@ -184,7 +178,7 @@
if(m_tag->fieldListMap()["DISCNUMBER"].isEmpty())
return QString();
else
- return TStringToQString_qt4(m_tag->fieldListMap()["DISCNUMBER"].front());
+ return TStringToQString(m_tag->fieldListMap()["DISCNUMBER"].front());
}
return QString();
}
@@ -194,7 +188,7 @@
if(!m_tag)
return;
- TagLib::String str = QStringToTString_qt4(value);
+ TagLib::String str = QStringToTString(value);
switch((int) key)
{
@@ -236,6 +230,4 @@
{
if(m_file)
m_file->save();
- else if(m_ogg_file)
- m_ogg_file->save();
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/Input/flac/flacmetadatamodel.h new/qmmp-1.0.9/src/plugins/Input/flac/flacmetadatamodel.h
--- old/qmmp-1.0.7/src/plugins/Input/flac/flacmetadatamodel.h 2016-04-03 14:15:52.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/Input/flac/flacmetadatamodel.h 2016-05-02 14:23:19.000000000 +0200
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009-2012 by Ilya Kotov *
+ * Copyright (C) 2009-2016 by Ilya Kotov *
* forkotov02(a)hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -40,12 +40,13 @@
private:
QString m_path;
QList<TagModel* > m_tags;
+ TagLib::File *m_file;
};
class VorbisCommentModel : public TagModel
{
public:
- VorbisCommentModel(const QString &path);
+ VorbisCommentModel(TagLib::Ogg::XiphComment *tag, TagLib::File *file);
~VorbisCommentModel();
const QString name();
const QString value(Qmmp::MetaData key);
@@ -53,8 +54,7 @@
void save();
private:
- TagLib::FLAC::File *m_file;
- TagLib::Ogg::FLAC::File *m_ogg_file;
+ TagLib::File *m_file;
TagLib::Ogg::XiphComment *m_tag;
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/Input/flac/replaygainreader.cpp new/qmmp-1.0.9/src/plugins/Input/flac/replaygainreader.cpp
--- old/qmmp-1.0.7/src/plugins/Input/flac/replaygainreader.cpp 2016-04-03 14:15:52.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/Input/flac/replaygainreader.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009-2013 by Ilya Kotov *
+ * Copyright (C) 2009-2016 by Ilya Kotov *
* forkotov02(a)hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -23,19 +23,22 @@
#include <taglib/fileref.h>
#include <taglib/flacfile.h>
#include <taglib/oggflacfile.h>
+#include <taglib/tfilestream.h>
+#include <taglib/id3v2framefactory.h>
#include "replaygainreader.h"
ReplayGainReader::ReplayGainReader(const QString &path)
{
+ TagLib::FileStream stream(QStringToFileName(path), true);
if(path.endsWith(".flac", Qt::CaseInsensitive))
{
- TagLib::FLAC::File fileRef(path.toLocal8Bit ().constData());
+ TagLib::FLAC::File fileRef(&stream, TagLib::ID3v2::FrameFactory::instance());
if(fileRef.xiphComment())
readVorbisComment(fileRef.xiphComment());
}
else if(path.endsWith(".oga", Qt::CaseInsensitive))
{
- TagLib::Ogg::FLAC::File fileRef(path.toLocal8Bit ().constData());
+ TagLib::Ogg::FLAC::File fileRef(&stream);
if(fileRef.tag())
readVorbisComment(fileRef.tag());
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/Input/mad/decodermadfactory.cpp new/qmmp-1.0.9/src/plugins/Input/mad/decodermadfactory.cpp
--- old/qmmp-1.0.7/src/plugins/Input/mad/decodermadfactory.cpp 2016-04-03 14:15:52.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/Input/mad/decodermadfactory.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2008-2015 by Ilya Kotov *
+ * Copyright (C) 2008-2016 by Ilya Kotov *
* forkotov02(a)hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -32,9 +32,7 @@
#include <taglib/apetag.h>
#include <taglib/tfile.h>
#include <taglib/mpegfile.h>
-#if (TAGLIB_MAJOR_VERSION > 1) || ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION >= 8))
#include <taglib/tfilestream.h>
-#endif
#include "mpegmetadatamodel.h"
#include "replaygainreader.h"
#include "settingsdialog.h"
@@ -129,12 +127,8 @@
FileInfo *info = new FileInfo(fileName);
TagLib::Tag *tag = 0;
-#if (TAGLIB_MAJOR_VERSION > 1) || ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION >= 8))
- TagLib::FileStream stream(fileName.toLocal8Bit().constData(), true);
+ TagLib::FileStream stream(QStringToFileName(fileName), true);
TagLib::MPEG::File fileRef(&stream, TagLib::ID3v2::FrameFactory::instance());
-#else
- TagLib::MPEG::File fileRef(fileName.toLocal8Bit ().constData());
-#endif
if (useMetaData)
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/Input/mad/mpegmetadatamodel.cpp new/qmmp-1.0.9/src/plugins/Input/mad/mpegmetadatamodel.cpp
--- old/qmmp-1.0.7/src/plugins/Input/mad/mpegmetadatamodel.cpp 2016-04-03 14:15:52.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/Input/mad/mpegmetadatamodel.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009-2015 by Ilya Kotov *
+ * Copyright (C) 2009-2016 by Ilya Kotov *
* forkotov02(a)hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -37,7 +37,7 @@
MPEGMetaDataModel::MPEGMetaDataModel(bool using_rusxmms, const QString &path, QObject *parent) : MetaDataModel(parent)
{
- m_file = new TagLib::MPEG::File(path.toLocal8Bit().constData());
+ m_file = new TagLib::MPEG::File(QStringToFileName(path));
m_tags << new MpegFileTagModel(using_rusxmms, m_file, TagLib::MPEG::File::ID3v1);
m_tags << new MpegFileTagModel(using_rusxmms, m_file, TagLib::MPEG::File::ID3v2);
m_tags << new MpegFileTagModel(using_rusxmms, m_file, TagLib::MPEG::File::APE);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/Input/mad/replaygainreader.cpp new/qmmp-1.0.9/src/plugins/Input/mad/replaygainreader.cpp
--- old/qmmp-1.0.7/src/plugins/Input/mad/replaygainreader.cpp 2016-04-03 14:15:52.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/Input/mad/replaygainreader.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009-2014 by Ilya Kotov *
+ * Copyright (C) 2009-2016 by Ilya Kotov *
* forkotov02(a)hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -25,11 +25,14 @@
#include <taglib/id3v1tag.h>
#include <taglib/id3v2header.h>
#include <taglib/textidentificationframe.h>
+#include <taglib/tfilestream.h>
+#include <taglib/id3v2framefactory.h>
#include "replaygainreader.h"
ReplayGainReader::ReplayGainReader(const QString &path)
{
- TagLib::MPEG::File fileRef(path.toLocal8Bit().constData());
+ TagLib::FileStream stream(QStringToFileName(path), true);
+ TagLib::MPEG::File fileRef(&stream, TagLib::ID3v2::FrameFactory::instance());
if(fileRef.ID3v2Tag())
readID3v2(fileRef.ID3v2Tag());
if(m_values.isEmpty() && fileRef.APETag())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/Input/mpc/decodermpcfactory.cpp new/qmmp-1.0.9/src/plugins/Input/mpc/decodermpcfactory.cpp
--- old/qmmp-1.0.7/src/plugins/Input/mpc/decodermpcfactory.cpp 2016-04-03 14:15:52.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/Input/mpc/decodermpcfactory.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2008-2015 by Ilya Kotov *
+ * Copyright (C) 2008-2016 by Ilya Kotov *
* forkotov02(a)hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -24,19 +24,15 @@
#include <taglib/fileref.h>
#include <taglib/mpcfile.h>
#include <taglib/apetag.h>
-#if (TAGLIB_MAJOR_VERSION > 1) || ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION >= 8))
#include <taglib/tfilestream.h>
-#endif
#include "mpcmetadatamodel.h"
#include "decoder_mpc.h"
#include "decodermpcfactory.h"
-
// DecoderMPCFactory
bool DecoderMPCFactory::supports(const QString &source) const
{
-
return (source.right(4).toLower() == ".mpc");
}
@@ -79,12 +75,8 @@
{
FileInfo *info = new FileInfo(fileName);
-#if (TAGLIB_MAJOR_VERSION > 1) || ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION >= 8))
- TagLib::FileStream stream(fileName.toLocal8Bit().constData(), true);
+ TagLib::FileStream stream(QStringToFileName(fileName), true);
TagLib::MPC::File fileRef(&stream);
-#else
- TagLib::MPC::File fileRef(fileName.toLocal8Bit().constData());
-#endif
TagLib::APE::Tag *tag = useMetaData ? fileRef.APETag() : 0;
if (tag && !tag->isEmpty())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/Input/mpc/mpcmetadatamodel.cpp new/qmmp-1.0.9/src/plugins/Input/mpc/mpcmetadatamodel.cpp
--- old/qmmp-1.0.7/src/plugins/Input/mpc/mpcmetadatamodel.cpp 2016-04-03 14:15:52.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/Input/mpc/mpcmetadatamodel.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009-2015 by Ilya Kotov *
+ * Copyright (C) 2009-2016 by Ilya Kotov *
* forkotov02(a)hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -26,7 +26,7 @@
MPCMetaDataModel::MPCMetaDataModel(const QString &path, QObject *parent) : MetaDataModel(parent)
{
- m_file = new TagLib::MPC::File (path.toLocal8Bit().constData());
+ m_file = new TagLib::MPC::File (QStringToFileName(path));
m_tags << new MPCFileTagModel(m_file, TagLib::MPC::File::ID3v1);
m_tags << new MPCFileTagModel(m_file, TagLib::MPC::File::APE);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/Input/opus/decoderopusfactory.cpp new/qmmp-1.0.9/src/plugins/Input/opus/decoderopusfactory.cpp
--- old/qmmp-1.0.7/src/plugins/Input/opus/decoderopusfactory.cpp 2016-04-03 14:15:52.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/Input/opus/decoderopusfactory.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2013-2015 by Ilya Kotov *
+ * Copyright (C) 2013-2016 by Ilya Kotov *
* forkotov02(a)hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -28,7 +28,6 @@
#include "opusmetadatamodel.h"
#include "decoderopusfactory.h"
-
// DecoderOpusFactory
bool DecoderOpusFactory::supports(const QString &source) const
{
@@ -78,7 +77,7 @@
{
FileInfo *info = new FileInfo(fileName);
- TagLib::Ogg::Opus::File fileRef(fileName.toLocal8Bit().constData());
+ TagLib::Ogg::Opus::File fileRef(QStringToFileName(fileName));
TagLib::Ogg::XiphComment *tag = useMetaData ? fileRef.tag() : 0;
if (tag && !tag->isEmpty())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/Input/opus/opusmetadatamodel.cpp new/qmmp-1.0.9/src/plugins/Input/opus/opusmetadatamodel.cpp
--- old/qmmp-1.0.7/src/plugins/Input/opus/opusmetadatamodel.cpp 2016-04-03 14:15:52.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/Input/opus/opusmetadatamodel.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2013-2015 by Ilya Kotov *
+ * Copyright (C) 2013-2016 by Ilya Kotov *
* forkotov02(a)hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -18,6 +18,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
+#include <QtGlobal>
#include <taglib/tag.h>
#include <taglib/fileref.h>
#include <taglib/opusfile.h>
@@ -25,34 +26,42 @@
#include <taglib/tmap.h>
#include "opusmetadatamodel.h"
-#define QStringToTString_qt4(s) TagLib::String(s.toUtf8().constData(), TagLib::String::UTF8)
-#define TStringToQString_qt4(s) QString::fromUtf8(s.toCString(true)).trimmed()
+#if ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION <= 9))
+#undef QStringToTString
+#define QStringToTString(s) TagLib::String(s.toUtf8().constData(), TagLib::String::UTF8)
+#endif
OpusMetaDataModel::OpusMetaDataModel(const QString &path, QObject *parent) : MetaDataModel(parent)
{
m_path = path;
- m_tags << new VorbisCommentModel(path);
+ m_file = new TagLib::Ogg::Opus::File(QStringToFileName(m_path));
+ m_tags << new VorbisCommentModel(m_file);
}
OpusMetaDataModel::~OpusMetaDataModel()
{
while(!m_tags.isEmpty())
delete m_tags.takeFirst();
+ if(m_file)
+ {
+ delete m_file;
+ m_file = 0;
+ }
}
QHash<QString, QString> OpusMetaDataModel::audioProperties()
{
QHash<QString, QString> ap;
- TagLib::Ogg::Opus::File f (m_path.toLocal8Bit().constData());
- if(f.audioProperties())
+ TagLib::Ogg::Opus::File f (QStringToFileName(m_path));
+ if(m_file && m_file->isValid())
{
- QString text = QString("%1").arg(f.audioProperties()->length()/60);
- text +=":"+QString("%1").arg(f.audioProperties()->length()%60,2,10,QChar('0'));
+ QString text = QString("%1").arg(m_file->audioProperties()->length()/60);
+ text +=":"+QString("%1").arg(m_file->audioProperties()->length()%60,2,10,QChar('0'));
ap.insert(tr("Length"), text);
- ap.insert(tr("Sample rate"), QString("%1 " + tr("Hz")).arg(f.audioProperties()->sampleRate()));
- ap.insert(tr("Channels"), QString("%1").arg(f.audioProperties()->channels()));
- ap.insert(tr("Bitrate"), QString("%1 " + tr("kbps")).arg(f.audioProperties()->bitrate()));
- ap.insert(tr("File size"), QString("%1 "+tr("KB")).arg(f.length()/1024));
+ ap.insert(tr("Sample rate"), QString("%1 " + tr("Hz")).arg(m_file->audioProperties()->sampleRate()));
+ ap.insert(tr("Channels"), QString("%1").arg(m_file->audioProperties()->channels()));
+ ap.insert(tr("Bitrate"), QString("%1 " + tr("kbps")).arg(m_file->audioProperties()->bitrate()));
+ ap.insert(tr("File size"), QString("%1 "+tr("KB")).arg(m_file->length()/1024));
}
return ap;
}
@@ -64,8 +73,10 @@
QPixmap OpusMetaDataModel::cover()
{
- TagLib::Ogg::Opus::File file(m_path.toLocal8Bit().constData());
- TagLib::Ogg::XiphComment *tag = file.tag();
+ if(!m_file || !m_file->isValid())
+ return QPixmap();
+
+ TagLib::Ogg::XiphComment *tag = m_file->tag();
if(!tag)
return QPixmap();
TagLib::StringList list = tag->fieldListMap()["METADATA_BLOCK_PICTURE"];
@@ -74,7 +85,7 @@
for(uint i = 0; i < list.size(); ++i)
{
TagLib::String value = list[i];
- QByteArray block = QByteArray::fromBase64(TStringToQString_qt4(value).toLatin1());
+ QByteArray block = QByteArray::fromBase64(TStringToQString(value).toLatin1());
if(block.size() < 32)
continue;
qint64 pos = 0;
@@ -109,16 +120,14 @@
}
-VorbisCommentModel::VorbisCommentModel(const QString &path) : TagModel(TagModel::Save)
+VorbisCommentModel::VorbisCommentModel(TagLib::Ogg::Opus::File *file) : TagModel(TagModel::Save)
{
- m_file = new TagLib::Ogg::Opus::File (path.toLocal8Bit().constData());
- m_tag = m_file->tag();
+ m_file = file;
+ m_tag = file->tag();
}
VorbisCommentModel::~VorbisCommentModel()
-{
- delete m_file;
-}
+{}
const QString VorbisCommentModel::name()
{
@@ -132,25 +141,25 @@
switch((int) key)
{
case Qmmp::TITLE:
- return TStringToQString_qt4(m_tag->title());
+ return TStringToQString(m_tag->title());
case Qmmp::ARTIST:
- return TStringToQString_qt4(m_tag->artist());
- case Qmmp::ALBUM:
- return TStringToQString_qt4(m_tag->album());
+ return TStringToQString(m_tag->artist());
case Qmmp::ALBUMARTIST:
if(m_tag->fieldListMap()["ALBUMARTIST"].isEmpty())
return QString();
else
- return TStringToQString_qt4(m_tag->fieldListMap()["ALBUMARTIST"].front());
+ return TStringToQString(m_tag->fieldListMap()["ALBUMARTIST"].front());
+ case Qmmp::ALBUM:
+ return TStringToQString(m_tag->album());
case Qmmp::COMMENT:
- return TStringToQString_qt4(m_tag->comment());
+ return TStringToQString(m_tag->comment());
case Qmmp::GENRE:
- return TStringToQString_qt4(m_tag->genre());
+ return TStringToQString(m_tag->genre());
case Qmmp::COMPOSER:
if(m_tag->fieldListMap()["COMPOSER"].isEmpty())
return QString();
else
- return TStringToQString_qt4(m_tag->fieldListMap()["COMPOSER"].front());
+ return TStringToQString(m_tag->fieldListMap()["COMPOSER"].front());
case Qmmp::YEAR:
return QString::number(m_tag->year());
case Qmmp::TRACK:
@@ -159,7 +168,7 @@
if(m_tag->fieldListMap()["DISCNUMBER"].isEmpty())
return QString();
else
- return TStringToQString_qt4(m_tag->fieldListMap()["DISCNUMBER"].front());
+ return TStringToQString(m_tag->fieldListMap()["DISCNUMBER"].front());
}
return QString();
}
@@ -169,7 +178,7 @@
if(!m_tag)
return;
- TagLib::String str = QStringToTString_qt4(value);
+ TagLib::String str = QStringToTString(value);
switch((int) key)
{
@@ -179,12 +188,12 @@
case Qmmp::ARTIST:
m_tag->setArtist(str);
return;
- case Qmmp::ALBUM:
- m_tag->setAlbum(str);
- return;
case Qmmp::ALBUMARTIST:
m_tag->addField("ALBUMARTIST", str, true);
return;
+ case Qmmp::ALBUM:
+ m_tag->setAlbum(str);
+ return;
case Qmmp::COMMENT:
m_tag->setComment(str);
return;
@@ -209,11 +218,6 @@
void VorbisCommentModel::save()
{
- if(m_tag)
+ if(m_file)
m_file->save();
- //taglib bug workarround
- QString path = QString::fromLocal8Bit(m_file->name());
- delete m_file;
- m_file = new TagLib::Ogg::Opus::File(path.toLocal8Bit().constData());
- m_tag = m_file->tag();
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/Input/opus/opusmetadatamodel.h new/qmmp-1.0.9/src/plugins/Input/opus/opusmetadatamodel.h
--- old/qmmp-1.0.7/src/plugins/Input/opus/opusmetadatamodel.h 2016-04-03 14:15:52.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/Input/opus/opusmetadatamodel.h 2016-05-02 14:23:19.000000000 +0200
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2013-2015 by Ilya Kotov *
+ * Copyright (C) 2013-2016 by Ilya Kotov *
* forkotov02(a)hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -38,13 +38,14 @@
private:
QString m_path;
QList<TagModel* > m_tags;
+ TagLib::Ogg::Opus::File *m_file;
ulong readPictureBlockField(QByteArray data, int offset);
};
class VorbisCommentModel : public TagModel
{
public:
- VorbisCommentModel(const QString &path);
+ VorbisCommentModel(TagLib::Ogg::Opus::File *file);
~VorbisCommentModel();
const QString name();
const QString value(Qmmp::MetaData key);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/Input/opus/replaygainreader.cpp new/qmmp-1.0.9/src/plugins/Input/opus/replaygainreader.cpp
--- old/qmmp-1.0.7/src/plugins/Input/opus/replaygainreader.cpp 2016-04-03 14:15:52.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/Input/opus/replaygainreader.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2013-2015 by Ilya Kotov *
+ * Copyright (C) 2013-2016 by Ilya Kotov *
* forkotov02(a)hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -22,11 +22,13 @@
#include <taglib/tag.h>
#include <taglib/fileref.h>
#include <taglib/opusfile.h>
+#include <taglib/tfilestream.h>
#include "replaygainreader.h"
ReplayGainReader::ReplayGainReader(const QString &path)
{
- TagLib::Ogg::Opus::File fileRef(path.toLocal8Bit ().constData());
+ TagLib::FileStream stream(QStringToFileName(path), true);
+ TagLib::Ogg::Opus::File fileRef(&stream);
if(fileRef.tag())
readVorbisComment(fileRef.tag());
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/Input/vorbis/decodervorbisfactory.cpp new/qmmp-1.0.9/src/plugins/Input/vorbis/decodervorbisfactory.cpp
--- old/qmmp-1.0.7/src/plugins/Input/vorbis/decodervorbisfactory.cpp 2016-04-03 14:15:53.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/Input/vorbis/decodervorbisfactory.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2008-2015 by Ilya Kotov *
+ * Copyright (C) 2008-2016 by Ilya Kotov *
* forkotov02(a)hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -23,15 +23,12 @@
#include <taglib/tag.h>
#include <taglib/fileref.h>
#include <taglib/vorbisfile.h>
-#if (TAGLIB_MAJOR_VERSION > 1) || ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION >= 8))
#include <taglib/tfilestream.h>
-#endif
#include "replaygainreader.h"
#include "decoder_vorbis.h"
#include "vorbismetadatamodel.h"
#include "decodervorbisfactory.h"
-
// DecoderOggFactory
bool DecoderVorbisFactory::supports(const QString &source) const
@@ -83,12 +80,8 @@
{
FileInfo *info = new FileInfo(fileName);
-#if (TAGLIB_MAJOR_VERSION > 1) || ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION >= 8))
- TagLib::FileStream stream(fileName.toLocal8Bit().constData(), true);
+ TagLib::FileStream stream(QStringToFileName(fileName), true);
TagLib::Ogg::Vorbis::File fileRef(&stream);
-#else
- TagLib::Ogg::Vorbis::File fileRef(fileName.toLocal8Bit().constData());
-#endif
TagLib::Ogg::XiphComment *tag = useMetaData ? fileRef.tag() : 0;
if (tag && !tag->isEmpty())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/Input/vorbis/replaygainreader.cpp new/qmmp-1.0.9/src/plugins/Input/vorbis/replaygainreader.cpp
--- old/qmmp-1.0.7/src/plugins/Input/vorbis/replaygainreader.cpp 2016-04-03 14:15:53.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/Input/vorbis/replaygainreader.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009 by Ilya Kotov *
+ * Copyright (C) 2009-2016 by Ilya Kotov *
* forkotov02(a)hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -22,11 +22,15 @@
#include <taglib/tag.h>
#include <taglib/fileref.h>
#include <taglib/vorbisfile.h>
+#include <taglib/tfilestream.h>
+#include <taglib/id3v2framefactory.h>
#include "replaygainreader.h"
ReplayGainReader::ReplayGainReader(const QString &path)
{
- TagLib::Ogg::Vorbis::File fileRef(path.toLocal8Bit ().constData());
+ TagLib::FileStream stream(QStringToFileName(path), true);
+ TagLib::Ogg::Vorbis::File fileRef(&stream);
+
if(fileRef.tag())
readVorbisComment(fileRef.tag());
}
@@ -39,7 +43,7 @@
void ReplayGainReader::readVorbisComment(TagLib::Ogg::XiphComment *comment)
{
TagLib::Ogg::FieldListMap items = comment->fieldListMap();
- if (items.contains("REPLAYGAIN_TRACK_GAIN"))
+ if (items.contains("REPLAYGAIN_TRACK_GAIN"))
setValue(Qmmp::REPLAYGAIN_TRACK_GAIN,TStringToQString(items["REPLAYGAIN_TRACK_GAIN"].front()));
if (items.contains("REPLAYGAIN_TRACK_PEAK"))
setValue(Qmmp::REPLAYGAIN_TRACK_PEAK,TStringToQString(items["REPLAYGAIN_TRACK_PEAK"].front()));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/Input/vorbis/vorbismetadatamodel.cpp new/qmmp-1.0.9/src/plugins/Input/vorbis/vorbismetadatamodel.cpp
--- old/qmmp-1.0.7/src/plugins/Input/vorbis/vorbismetadatamodel.cpp 2016-04-03 14:15:53.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/Input/vorbis/vorbismetadatamodel.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009-2015 by Ilya Kotov *
+ * Copyright (C) 2009-2016 by Ilya Kotov *
* forkotov02(a)hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -18,6 +18,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
+#include <QtGlobal>
#include <taglib/tag.h>
#include <taglib/fileref.h>
#include <taglib/vorbisfile.h>
@@ -25,34 +26,43 @@
#include <taglib/tmap.h>
#include "vorbismetadatamodel.h"
-#define QStringToTString_qt4(s) TagLib::String(s.toUtf8().constData(), TagLib::String::UTF8)
-#define TStringToQString_qt4(s) QString::fromUtf8(s.toCString(true)).trimmed()
+#if ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION <= 9))
+#undef QStringToTString
+#define QStringToTString(s) TagLib::String(s.toUtf8().constData(), TagLib::String::UTF8)
+#endif
VorbisMetaDataModel::VorbisMetaDataModel(const QString &path, QObject *parent) : MetaDataModel(parent)
{
m_path = path;
- m_tags << new VorbisCommentModel(path);
+ m_file = new TagLib::Ogg::Vorbis::File(QStringToFileName(path));
+ m_tag = m_file->tag();
+ m_tags << new VorbisCommentModel(this);
}
VorbisMetaDataModel::~VorbisMetaDataModel()
{
while(!m_tags.isEmpty())
delete m_tags.takeFirst();
+
+ if(m_file)
+ {
+ delete m_file;
+ m_file = 0;
+ }
}
QHash<QString, QString> VorbisMetaDataModel::audioProperties()
{
QHash<QString, QString> ap;
- TagLib::Ogg::Vorbis::File f (m_path.toLocal8Bit().constData());
- if(f.audioProperties())
+ if(m_file->audioProperties())
{
- QString text = QString("%1").arg(f.audioProperties()->length()/60);
- text +=":"+QString("%1").arg(f.audioProperties()->length()%60,2,10,QChar('0'));
+ QString text = QString("%1").arg(m_file->audioProperties()->length()/60);
+ text +=":"+QString("%1").arg(m_file->audioProperties()->length()%60,2,10,QChar('0'));
ap.insert(tr("Length"), text);
- ap.insert(tr("Sample rate"), QString("%1 " + tr("Hz")).arg(f.audioProperties()->sampleRate()));
- ap.insert(tr("Channels"), QString("%1").arg(f.audioProperties()->channels()));
- ap.insert(tr("Bitrate"), QString("%1 " + tr("kbps")).arg(f.audioProperties()->bitrate()));
- ap.insert(tr("File size"), QString("%1 "+tr("KB")).arg(f.length()/1024));
+ ap.insert(tr("Sample rate"), QString("%1 " + tr("Hz")).arg(m_file->audioProperties()->sampleRate()));
+ ap.insert(tr("Channels"), QString("%1").arg(m_file->audioProperties()->channels()));
+ ap.insert(tr("Bitrate"), QString("%1 " + tr("kbps")).arg(m_file->audioProperties()->bitrate()));
+ ap.insert(tr("File size"), QString("%1 "+tr("KB")).arg(m_file->length()/1024));
}
return ap;
}
@@ -64,17 +74,15 @@
QPixmap VorbisMetaDataModel::cover()
{
- TagLib::Ogg::Vorbis::File file(m_path.toLocal8Bit().constData());
- TagLib::Ogg::XiphComment *tag = file.tag();
- if(!tag)
+ if(!m_tag || m_tag->isEmpty())
return QPixmap();
- TagLib::StringList list = tag->fieldListMap()["METADATA_BLOCK_PICTURE"];
+ TagLib::StringList list = m_tag->fieldListMap()["METADATA_BLOCK_PICTURE"];
if(list.isEmpty())
return QPixmap();
for(uint i = 0; i < list.size(); ++i)
{
TagLib::String value = list[i];
- QByteArray block = QByteArray::fromBase64(TStringToQString_qt4(value).toLatin1());
+ QByteArray block = QByteArray::fromBase64(TStringToQString(value).toLatin1());
if(block.size() < 32)
continue;
qint64 pos = 0;
@@ -109,16 +117,13 @@
}
-VorbisCommentModel::VorbisCommentModel(const QString &path) : TagModel(TagModel::Save)
+VorbisCommentModel::VorbisCommentModel(VorbisMetaDataModel *model) : TagModel(TagModel::Save)
{
- m_file = new TagLib::Ogg::Vorbis::File (path.toLocal8Bit().constData());
- m_tag = m_file->tag();
+ m_model = model;
}
VorbisCommentModel::~VorbisCommentModel()
-{
- delete m_file;
-}
+{}
const QString VorbisCommentModel::name()
{
@@ -127,93 +132,99 @@
const QString VorbisCommentModel::value(Qmmp::MetaData key)
{
- if(!m_tag)
+ if(!m_model->m_tag || m_model->m_tag->isEmpty())
return QString();
+
+ TagLib::Ogg::XiphComment *tag = m_model->m_tag;
switch((int) key)
{
case Qmmp::TITLE:
- return TStringToQString_qt4(m_tag->title());
+ return TStringToQString(tag->title());
case Qmmp::ARTIST:
- return TStringToQString_qt4(m_tag->artist());
+ return TStringToQString(tag->artist());
case Qmmp::ALBUMARTIST:
- if(m_tag->fieldListMap()["ALBUMARTIST"].isEmpty())
+ if(tag->fieldListMap()["ALBUMARTIST"].isEmpty())
return QString();
else
- return TStringToQString_qt4(m_tag->fieldListMap()["ALBUMARTIST"].front());
+ return TStringToQString(tag->fieldListMap()["ALBUMARTIST"].front());
case Qmmp::ALBUM:
- return TStringToQString_qt4(m_tag->album());
+ return TStringToQString(tag->album());
case Qmmp::COMMENT:
- return TStringToQString_qt4(m_tag->comment());
+ return TStringToQString(tag->comment());
case Qmmp::GENRE:
- return TStringToQString_qt4(m_tag->genre());
+ return TStringToQString(tag->genre());
case Qmmp::COMPOSER:
- if(m_tag->fieldListMap()["COMPOSER"].isEmpty())
+ if(tag->fieldListMap()["COMPOSER"].isEmpty())
return QString();
else
- return TStringToQString_qt4(m_tag->fieldListMap()["COMPOSER"].front());
+ return TStringToQString(tag->fieldListMap()["COMPOSER"].front());
case Qmmp::YEAR:
- return QString::number(m_tag->year());
+ return QString::number(tag->year());
case Qmmp::TRACK:
- return QString::number(m_tag->track());
+ return QString::number(tag->track());
case Qmmp::DISCNUMBER:
- if(m_tag->fieldListMap()["DISCNUMBER"].isEmpty())
+ if(tag->fieldListMap()["DISCNUMBER"].isEmpty())
return QString();
else
- return TStringToQString_qt4(m_tag->fieldListMap()["DISCNUMBER"].front());
+ return TStringToQString(tag->fieldListMap()["DISCNUMBER"].front());
}
return QString();
}
void VorbisCommentModel::setValue(Qmmp::MetaData key, const QString &value)
{
- if(!m_tag)
+ if(!m_model->m_tag || m_model->m_tag->isEmpty())
return;
- TagLib::String str = QStringToTString_qt4(value);
+ TagLib::Ogg::XiphComment *tag = m_model->m_tag;
+
+ TagLib::String str = QStringToTString(value);
switch((int) key)
{
case Qmmp::TITLE:
- m_tag->setTitle(str);
+ tag->setTitle(str);
return;
case Qmmp::ARTIST:
- m_tag->setArtist(str);
+ tag->setArtist(str);
return;
case Qmmp::ALBUM:
- m_tag->setAlbum(str);
+ tag->setAlbum(str);
return;
case Qmmp::ALBUMARTIST:
- m_tag->addField("ALBUMARTIST", str, true);
+ tag->addField("ALBUMARTIST", str, true);
return;
case Qmmp::COMMENT:
- m_tag->setComment(str);
+ tag->setComment(str);
return;
case Qmmp::GENRE:
- m_tag->setGenre(str);
+ tag->setGenre(str);
return;
case Qmmp::COMPOSER:
- m_tag->addField("COMPOSER", str, true);
+ tag->addField("COMPOSER", str, true);
return;
case Qmmp::TRACK:
- m_tag->setTrack(value.toInt());
+ tag->setTrack(value.toInt());
return;
case Qmmp::YEAR:
- m_tag->setYear(value.toInt());
+ tag->setYear(value.toInt());
return;
case Qmmp::DISCNUMBER:
value == "0" ?
- m_tag->removeField("DISCNUMBER"):
- m_tag->addField("DISCNUMBER", str, true);
+ tag->removeField("DISCNUMBER"):
+ tag->addField("DISCNUMBER", str, true);
}
}
void VorbisCommentModel::save()
{
- if(m_tag)
- m_file->save();
+ if(m_model->m_tag)
+ m_model->m_file->save();
+
+#if ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION <= 10))
//taglib bug workarround
- QString path = QString::fromLocal8Bit(m_file->name());
- delete m_file;
- m_file = new TagLib::Ogg::Vorbis::File(path.toLocal8Bit().constData());
- m_tag = m_file->tag();
+ delete m_model->m_file;
+ m_model->m_file = new TagLib::Ogg::Vorbis::File(QStringToFileName(m_model->m_path));
+ m_model->m_tag = m_model->m_file->tag();
+#endif
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/Input/vorbis/vorbismetadatamodel.h new/qmmp-1.0.9/src/plugins/Input/vorbis/vorbismetadatamodel.h
--- old/qmmp-1.0.7/src/plugins/Input/vorbis/vorbismetadatamodel.h 2016-04-03 14:15:53.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/Input/vorbis/vorbismetadatamodel.h 2016-05-02 14:23:19.000000000 +0200
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009-2012 by Ilya Kotov *
+ * Copyright (C) 2009-2016 by Ilya Kotov *
* forkotov02(a)hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -21,9 +21,11 @@
#ifndef VORBISMETADATAMODEL_H
#define VORBISMETADATAMODEL_H
+#include <qmmp/metadatamodel.h>
#include <taglib/vorbisfile.h>
#include <taglib/xiphcomment.h>
-#include <qmmp/metadatamodel.h>
+
+class VorbisCommentModel;
class VorbisMetaDataModel : public MetaDataModel
{
@@ -31,12 +33,16 @@
public:
VorbisMetaDataModel(const QString &path, QObject *parent);
~VorbisMetaDataModel();
+ friend class VorbisCommentModel;
+
QHash<QString, QString> audioProperties();
QList<TagModel* > tags();
QPixmap cover();
private:
QString m_path;
+ TagLib::Ogg::Vorbis::File *m_file;
+ TagLib::Ogg::XiphComment *m_tag;
QList<TagModel* > m_tags;
ulong readPictureBlockField(QByteArray data, int offset);
};
@@ -44,7 +50,7 @@
class VorbisCommentModel : public TagModel
{
public:
- VorbisCommentModel(const QString &path);
+ VorbisCommentModel(VorbisMetaDataModel *model);
~VorbisCommentModel();
const QString name();
const QString value(Qmmp::MetaData key);
@@ -52,8 +58,7 @@
void save();
private:
- TagLib::Ogg::Vorbis::File *m_file;
- TagLib::Ogg::XiphComment *m_tag;
+ VorbisMetaDataModel *m_model;
};
#endif // VORBISMETADATAMODEL_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/plugins/Ui/qsui/mainwindow.cpp new/qmmp-1.0.9/src/plugins/Ui/qsui/mainwindow.cpp
--- old/qmmp-1.0.7/src/plugins/Ui/qsui/mainwindow.cpp 2016-04-03 14:15:52.000000000 +0200
+++ new/qmmp-1.0.9/src/plugins/Ui/qsui/mainwindow.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -130,6 +130,7 @@
m_statusLabel = new QLabel(this);
m_ui.statusbar->addPermanentWidget(m_statusLabel, 0);
m_ui.statusbar->addPermanentWidget(m_timeLabel, 1);
+ m_ui.statusbar->setStyleSheet("QStatusBar::item { border: 0px solid black };");
//volume
m_ui.progressToolBar->addSeparator();
m_volumeSlider = new QSlider(Qt::Horizontal, this);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/qmmp/metadatamanager.cpp new/qmmp-1.0.9/src/qmmp/metadatamanager.cpp
--- old/qmmp-1.0.7/src/qmmp/metadatamanager.cpp 2016-04-03 14:15:52.000000000 +0200
+++ new/qmmp-1.0.9/src/qmmp/metadatamanager.cpp 2016-05-02 14:23:19.000000000 +0200
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009-2015 by Ilya Kotov *
+ * Copyright (C) 2009-2016 by Ilya Kotov *
* forkotov02(a)hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -183,7 +183,7 @@
if(model)
{
QPixmap pix = model->cover();
- model->deleteLater();
+ delete model;
if(!pix.isNull())
return pix;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qmmp-1.0.7/src/qmmp/qmmp.h new/qmmp-1.0.9/src/qmmp/qmmp.h
--- old/qmmp-1.0.7/src/qmmp/qmmp.h 2016-04-03 14:15:59.000000000 +0200
+++ new/qmmp-1.0.9/src/qmmp/qmmp.h 2016-05-02 14:23:19.000000000 +0200
@@ -24,11 +24,20 @@
#define QMMP_VERSION_MAJOR 1
#define QMMP_VERSION_MINOR 0
-#define QMMP_VERSION_PATCH 7
+#define QMMP_VERSION_PATCH 9
#define QMMP_VERSION_STABLE 1
#define QMMP_VERSION_INT (QMMP_VERSION_MAJOR<<16 | QMMP_VERSION_MINOR<<8 | QMMP_VERSION_PATCH)
+/*!
+ * Converts a \b QString to a \b TagLib::FileName
+ */
+#ifdef Q_OS_WIN
+#define QStringToFileName(s) TagLib::FileName(reinterpret_cast<const wchar_t *>(s.utf16()))
+#else
+#define QStringToFileName(s) s.toLocal8Bit().constData()
+#endif
+
/*! @brief The Qmmp class stores global settings and enums.
* @author Ilya Kotov <forkotov02(a)hotmail.ru>
1
0
Hello community,
here is the log from the commit of package qpid-proton for openSUSE:Factory checked in at 2016-05-04 08:20:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qpid-proton (Old)
and /work/SRC/openSUSE:Factory/.qpid-proton.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qpid-proton"
Changes:
--------
--- /work/SRC/openSUSE:Factory/qpid-proton/qpid-proton.changes 2016-04-14 13:07:21.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.qpid-proton.new/qpid-proton.changes 2016-05-04 08:20:22.000000000 +0200
@@ -1,0 +2,8 @@
+Tue May 3 10:26:01 UTC 2016 - fstrba(a)suse.com
+
+- Upgrade to version 0.12.2
+ * Bugs fixed
+ - PROTON-1171 - [proton-j] transport SSL wrapper does not flush
+ all decoded bytes to the underlying input
+
+-------------------------------------------------------------------
Old:
----
qpid-proton-0.12.1.tar.gz
New:
----
qpid-proton-0.12.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ qpid-proton.spec ++++++
--- /var/tmp/diff_new_pack.d6O30X/_old 2016-05-04 08:20:23.000000000 +0200
+++ /var/tmp/diff_new_pack.d6O30X/_new 2016-05-04 08:20:23.000000000 +0200
@@ -18,7 +18,7 @@
%global qpid_proton_soversion 6
Name: qpid-proton
-Version: 0.12.1
+Version: 0.12.2
Release: 0
Summary: A high performance, lightweight messaging library
License: Apache-2.0
++++++ qpid-proton-0.12.1.tar.gz -> qpid-proton-0.12.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qpid-proton-0.12.1/contrib/proton-hawtdispatch/pom.xml new/qpid-proton-0.12.2/contrib/proton-hawtdispatch/pom.xml
--- old/qpid-proton-0.12.1/contrib/proton-hawtdispatch/pom.xml 2016-03-17 17:27:04.000000000 +0100
+++ new/qpid-proton-0.12.2/contrib/proton-hawtdispatch/pom.xml 2016-04-14 17:50:53.000000000 +0200
@@ -19,7 +19,7 @@
<parent>
<groupId>org.apache.qpid</groupId>
<artifactId>proton-project</artifactId>
- <version>0.12.1</version>
+ <version>0.12.2</version>
<relativePath>../..</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qpid-proton-0.12.1/contrib/proton-jms/pom.xml new/qpid-proton-0.12.2/contrib/proton-jms/pom.xml
--- old/qpid-proton-0.12.1/contrib/proton-jms/pom.xml 2016-03-17 17:27:04.000000000 +0100
+++ new/qpid-proton-0.12.2/contrib/proton-jms/pom.xml 2016-04-14 17:50:53.000000000 +0200
@@ -19,7 +19,7 @@
<parent>
<groupId>org.apache.qpid</groupId>
<artifactId>proton-project</artifactId>
- <version>0.12.1</version>
+ <version>0.12.2</version>
<relativePath>../..</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qpid-proton-0.12.1/examples/engine/java/pom.xml new/qpid-proton-0.12.2/examples/engine/java/pom.xml
--- old/qpid-proton-0.12.1/examples/engine/java/pom.xml 2016-03-17 17:27:04.000000000 +0100
+++ new/qpid-proton-0.12.2/examples/engine/java/pom.xml 2016-04-14 17:50:53.000000000 +0200
@@ -19,7 +19,7 @@
<parent>
<groupId>org.apache.qpid</groupId>
<artifactId>proton-project</artifactId>
- <version>0.12.1</version>
+ <version>0.12.2</version>
<relativePath>../../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qpid-proton-0.12.1/examples/java/messenger/pom.xml new/qpid-proton-0.12.2/examples/java/messenger/pom.xml
--- old/qpid-proton-0.12.1/examples/java/messenger/pom.xml 2016-03-17 17:27:04.000000000 +0100
+++ new/qpid-proton-0.12.2/examples/java/messenger/pom.xml 2016-04-14 17:50:53.000000000 +0200
@@ -19,7 +19,7 @@
<parent>
<groupId>org.apache.qpid</groupId>
<artifactId>proton-project</artifactId>
- <version>0.12.1</version>
+ <version>0.12.2</version>
<relativePath>../../..</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qpid-proton-0.12.1/examples/java/reactor/pom.xml new/qpid-proton-0.12.2/examples/java/reactor/pom.xml
--- old/qpid-proton-0.12.1/examples/java/reactor/pom.xml 2016-03-17 17:27:04.000000000 +0100
+++ new/qpid-proton-0.12.2/examples/java/reactor/pom.xml 2016-04-14 17:50:53.000000000 +0200
@@ -19,7 +19,7 @@
<parent>
<groupId>org.apache.qpid</groupId>
<artifactId>proton-project</artifactId>
- <version>0.12.1</version>
+ <version>0.12.2</version>
<relativePath>../../..</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qpid-proton-0.12.1/pom.xml new/qpid-proton-0.12.2/pom.xml
--- old/qpid-proton-0.12.1/pom.xml 2016-03-17 17:27:04.000000000 +0100
+++ new/qpid-proton-0.12.2/pom.xml 2016-04-14 17:50:53.000000000 +0200
@@ -26,7 +26,7 @@
<groupId>org.apache.qpid</groupId>
<artifactId>proton-project</artifactId>
- <version>0.12.1</version>
+ <version>0.12.2</version>
<packaging>pom</packaging>
<properties>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qpid-proton-0.12.1/proton-c/bindings/python/setuputils/bundle.py new/qpid-proton-0.12.2/proton-c/bindings/python/setuputils/bundle.py
--- old/qpid-proton-0.12.1/proton-c/bindings/python/setuputils/bundle.py 2016-03-17 17:27:04.000000000 +0100
+++ new/qpid-proton-0.12.2/proton-c/bindings/python/setuputils/bundle.py 2016-04-14 17:50:53.000000000 +0200
@@ -35,7 +35,7 @@
min_qpid_proton = (0, 12, 0)
min_qpid_proton_str = "%i.%i.%i" % min_qpid_proton
-bundled_version = (0, 12, 1)
+bundled_version = (0, 12, 2)
bundled_version_str = "%i.%i.%i" % bundled_version
libqpid_proton = "qpid-proton-%s.tar.gz" % bundled_version_str
libqpid_proton_url = ("http://www.apache.org/dist/qpid/proton/%s/%s" %
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qpid-proton-0.12.1/proton-j/pom.xml new/qpid-proton-0.12.2/proton-j/pom.xml
--- old/qpid-proton-0.12.1/proton-j/pom.xml 2016-03-17 17:27:04.000000000 +0100
+++ new/qpid-proton-0.12.2/proton-j/pom.xml 2016-04-14 17:50:53.000000000 +0200
@@ -19,7 +19,7 @@
<parent>
<groupId>org.apache.qpid</groupId>
<artifactId>proton-project</artifactId>
- <version>0.12.1</version>
+ <version>0.12.2</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qpid-proton-0.12.1/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SimpleSslTransportWrapper.java new/qpid-proton-0.12.2/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SimpleSslTransportWrapper.java
--- old/qpid-proton-0.12.1/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SimpleSslTransportWrapper.java 2016-03-17 17:27:04.000000000 +0100
+++ new/qpid-proton-0.12.2/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SimpleSslTransportWrapper.java 2016-04-14 17:50:53.000000000 +0200
@@ -115,27 +115,35 @@
HandshakeStatus hstatus = result.getHandshakeStatus();
int capacity = _underlyingInput.capacity();
- if (capacity == Transport.END_OF_STREAM) {
+ if (capacity == Transport.END_OF_STREAM || capacity <= 0) {
_tail_closed = true;
if (_decodedInputBuffer.position() > 0) {
throw new TransportException("bytes left unconsumed");
}
} else {
- ByteBuffer tail = _underlyingInput.tail();
_decodedInputBuffer.flip();
- int limit = _decodedInputBuffer.limit();
- int overflow = _decodedInputBuffer.remaining() - capacity;
- if (overflow > 0) {
- _decodedInputBuffer.limit(limit - overflow);
+
+ while (_decodedInputBuffer.hasRemaining() && capacity > 0) {
+ ByteBuffer tail = _underlyingInput.tail();
+ int limit = _decodedInputBuffer.limit();
+ int overflow = _decodedInputBuffer.remaining() - capacity;
+ if (overflow > 0) {
+ _decodedInputBuffer.limit(limit - overflow);
+ }
+ tail.put(_decodedInputBuffer);
+ _decodedInputBuffer.limit(limit);
+ _underlyingInput.process();
+ capacity = _underlyingInput.capacity();
}
- tail.put(_decodedInputBuffer);
- _decodedInputBuffer.limit(limit);
- _decodedInputBuffer.compact();
- _underlyingInput.process();
- capacity = _underlyingInput.capacity();
- if (capacity == Transport.END_OF_STREAM) {
+
+ if (capacity == Transport.END_OF_STREAM || capacity <= 0) {
_tail_closed = true;
+ if (_decodedInputBuffer.hasRemaining()) {
+ throw new TransportException("bytes left unconsumed");
+ }
}
+
+ _decodedInputBuffer.compact();
}
switch (status) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qpid-proton-0.12.1/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/TransportTestHelper.java new/qpid-proton-0.12.2/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/TransportTestHelper.java
--- old/qpid-proton-0.12.1/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/TransportTestHelper.java 2016-03-17 17:27:04.000000000 +0100
+++ new/qpid-proton-0.12.2/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/TransportTestHelper.java 2016-04-14 17:50:53.000000000 +0200
@@ -21,6 +21,7 @@
import static org.junit.Assert.assertEquals;
import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
public class TransportTestHelper
{
@@ -47,7 +48,7 @@
{
byte[] buf = new byte[sizeRequested];
int numberRead = ByteBufferUtils.pourBufferToArray(source, buf, 0, sizeRequested);
- return new String(buf, 0, numberRead);
+ return new String(buf, 0, numberRead, StandardCharsets.UTF_8);
}
public static String stringOfLength(String value, int repeat)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qpid-proton-0.12.1/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/CapitalisingDummySslEngine.java new/qpid-proton-0.12.2/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/CapitalisingDummySslEngine.java
--- old/qpid-proton-0.12.1/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/CapitalisingDummySslEngine.java 2016-03-17 17:27:04.000000000 +0100
+++ new/qpid-proton-0.12.2/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/CapitalisingDummySslEngine.java 2016-04-14 17:50:53.000000000 +0200
@@ -41,7 +41,7 @@
public class CapitalisingDummySslEngine implements ProtonSslEngine
{
static final int SHORT_ENCODED_CHUNK_SIZE = 2;
- private static final int MAX_ENCODED_CHUNK_SIZE = 5;
+ static final int MAX_ENCODED_CHUNK_SIZE = 5;
private static final char ENCODED_TEXT_BEGIN = '<';
private static final char ENCODED_TEXT_END = '>';
private static final char ENCODED_TEXT_INNER_CHAR = '-';
@@ -49,6 +49,9 @@
private static final int CLEAR_CHUNK_SIZE = 2;
private static final char CLEARTEXT_PADDING = '_';
private SSLException _nextException;
+ private int _applicationBufferSize = CLEAR_CHUNK_SIZE;
+ private int _packetBufferSize = MAX_ENCODED_CHUNK_SIZE;
+ private int _unwrapCount;
/**
* Converts a_ to <-A->. z_ is special and encodes as <> (to give us packets of different lengths).
@@ -116,6 +119,8 @@
public SSLEngineResult unwrap(ByteBuffer src, ByteBuffer dst)
throws SSLException
{
+ _unwrapCount++;
+
if(_nextException != null)
{
throw _nextException;
@@ -185,13 +190,23 @@
private int getApplicationBufferSize()
{
- return CLEAR_CHUNK_SIZE;
+ return _applicationBufferSize;
}
@Override
public int getPacketBufferSize()
{
- return MAX_ENCODED_CHUNK_SIZE;
+ return _packetBufferSize;
+ }
+
+ public void setApplicationBufferSize(int value)
+ {
+ _applicationBufferSize = value;
+ }
+
+ public void setPacketBufferSize(int value)
+ {
+ _packetBufferSize = value;
}
@Override
@@ -244,4 +259,8 @@
{
_nextException = nextException;
}
+
+ int getUnwrapCount() {
+ return _unwrapCount;
+ }
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qpid-proton-0.12.1/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/RememberingTransportInput.java new/qpid-proton-0.12.2/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/RememberingTransportInput.java
--- old/qpid-proton-0.12.1/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/RememberingTransportInput.java 2016-03-17 17:27:04.000000000 +0100
+++ new/qpid-proton-0.12.2/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/RememberingTransportInput.java 2016-04-14 17:50:53.000000000 +0200
@@ -30,7 +30,10 @@
private StringBuilder _receivedInput = new StringBuilder();
private String _nextError;
private int _inputBufferSize = 1024;
- private ByteBuffer _buffer = ByteBuffer.allocate(_inputBufferSize);
+ private ByteBuffer _buffer;
+ private int _processCount = 0;
+ private Integer _zeroCapacityAtCount = null;
+ private int _capacityCount = 0;
String getAcceptedInput()
{
@@ -46,24 +49,37 @@
@Override
public int capacity()
{
+ initIntermediateBuffer();
+
+ _capacityCount++;
+ if(_zeroCapacityAtCount != null && _capacityCount >= _zeroCapacityAtCount) {
+ return 0;
+ }
+
return _buffer.remaining();
}
@Override
public int position()
{
+ initIntermediateBuffer();
return _buffer.position();
}
@Override
public ByteBuffer tail()
{
+ initIntermediateBuffer();
return _buffer;
}
@Override
public void process() throws TransportException
{
+ _processCount++;
+
+ initIntermediateBuffer();
+
if(_nextError != null)
{
throw new TransportException(_nextError);
@@ -87,8 +103,51 @@
_nextError = nextError;
}
- public void setInputBufferSize(int inputBufferSize)
+ /**
+ * If called before the object is otherwise used, the intermediate input buffer will be
+ * initiated to the given size. If called after use, an ISE will be thrown.
+ *
+ * @param inputBufferSize size of the intermediate input buffer
+ * @throws IllegalStateException if the buffer was already initialised
+ */
+ public void setInputBufferSize(int inputBufferSize) throws IllegalStateException
{
+ if (_buffer != null)
+ {
+ throw new IllegalStateException("Intermediate input buffer already initialised");
+ }
+
_inputBufferSize = inputBufferSize;
}
+
+ private void initIntermediateBuffer()
+ {
+ if (_buffer == null)
+ {
+ _buffer = ByteBuffer.allocate(_inputBufferSize);
+ }
+ }
+
+ int getProcessCount()
+ {
+ return _processCount;
+ }
+
+ int getCapacityCount()
+ {
+ return _capacityCount;
+ }
+
+ /**
+ * Sets a point at which calls to capacity will return 0 regardless of the actual buffer state.
+ *
+ * @param zeroCapacityAtCount number of calls to capacity at which zero starts being returned.
+ */
+ void setZeroCapacityAtCount(Integer zeroCapacityAtCount)
+ {
+ if(zeroCapacityAtCount != null && zeroCapacityAtCount < 1) {
+ throw new IllegalArgumentException("Value must be null, or at least 1");
+ }
+ _zeroCapacityAtCount = zeroCapacityAtCount;
+ }
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qpid-proton-0.12.1/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SimpleSslTransportWrapperTest.java new/qpid-proton-0.12.2/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SimpleSslTransportWrapperTest.java
--- old/qpid-proton-0.12.1/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SimpleSslTransportWrapperTest.java 2016-03-17 17:27:04.000000000 +0100
+++ new/qpid-proton-0.12.2/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SimpleSslTransportWrapperTest.java 2016-04-14 17:50:53.000000000 +0200
@@ -29,6 +29,7 @@
import static org.junit.Assert.fail;
import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
import javax.net.ssl.SSLException;
@@ -46,12 +47,10 @@
*/
public class SimpleSslTransportWrapperTest
{
- private RememberingTransportInput _underlyingInput = new RememberingTransportInput();
- private CannedTransportOutput _underlyingOutput = new CannedTransportOutput();
-
+ private RememberingTransportInput _underlyingInput;
+ private CannedTransportOutput _underlyingOutput;
private SimpleSslTransportWrapper _sslWrapper;
-
- private CapitalisingDummySslEngine _dummySslEngine = new CapitalisingDummySslEngine();
+ private CapitalisingDummySslEngine _dummySslEngine;
@Rule
public ExpectedException _expectedException = ExpectedException.none();
@@ -59,6 +58,9 @@
@Before
public void setUp()
{
+ _underlyingInput = new RememberingTransportInput();
+ _underlyingOutput = new CannedTransportOutput();
+ _dummySslEngine = new CapitalisingDummySslEngine();
_sslWrapper = new SimpleSslTransportWrapper(_dummySslEngine, _underlyingInput, _underlyingOutput);
}
@@ -70,8 +72,16 @@
putBytesIntoTransport(encodedBytes);
assertEquals("a_", _underlyingInput.getAcceptedInput());
+ assertEquals(CapitalisingDummySslEngine.MAX_ENCODED_CHUNK_SIZE, _sslWrapper.capacity());
+ assertEquals(2, _dummySslEngine.getUnwrapCount());// 1 packet, 1 underflow
+ assertEquals(1, _underlyingInput.getProcessCount());
}
+ /**
+ * Note that this only feeds 1 encoded packet in at a time due to default settings of the dummy engine,
+ * See {@link #testUnderlyingInputUsingSmallBuffer_receivesAllDecodedInputRequiringMultipleUnwraps}
+ * for a related test that passes multiple encoded packets into the ssl wrapper at once.
+ */
@Test
public void testInputWithMultiplePackets()
{
@@ -80,6 +90,9 @@
putBytesIntoTransport(encodedBytes);
assertEquals("a_b_c_z_", _underlyingInput.getAcceptedInput());
+ assertEquals(CapitalisingDummySslEngine.MAX_ENCODED_CHUNK_SIZE, _sslWrapper.capacity());
+ assertEquals(8, _dummySslEngine.getUnwrapCount()); // (1 decode + 1 underflow) * 4 packets
+ assertEquals(4, _underlyingInput.getProcessCount()); // 1 process per decoded packet
}
@Test
@@ -90,9 +103,15 @@
putBytesIntoTransport(incompleteEncodedBytes);
assertEquals("a_b_", _underlyingInput.getAcceptedInput());
+ assertEquals(5, _dummySslEngine.getUnwrapCount()); // 2 * (1 decode + 1 underflow) + 1 underflow
+ assertEquals(2, _underlyingInput.getProcessCount()); // 1 process per decoded packet
putBytesIntoTransport(remainingEncodedBytes);
assertEquals("a_b_c_d_", _underlyingInput.getAcceptedInput());
+ assertEquals(4, _underlyingInput.getProcessCount()); // earlier + 2
+ assertEquals(9, _dummySslEngine.getUnwrapCount()); // Earlier + 2 * (1 decode + 1 underflow)
+ // due to way the bytes are fed in across
+ // boundary of encoded packets
}
/**
@@ -108,22 +127,221 @@
putBytesIntoTransport(firstEncodedBytes);
assertEquals("a_b_", _underlyingInput.getAcceptedInput());
+ assertEquals(5, _dummySslEngine.getUnwrapCount()); // 2 * (1 decode + 1 underflow) + 1 underflow
+ assertEquals(2, _underlyingInput.getProcessCount()); // 1 process per decoded packet
putBytesIntoTransport(secondEncodedBytes);
assertEquals("a_b_", _underlyingInput.getAcceptedInput());
+ assertEquals(6, _dummySslEngine.getUnwrapCount()); // earlier + 1 underflow
+ assertEquals(2, _underlyingInput.getProcessCount()); // as earlier
putBytesIntoTransport(thirdEncodedBytes);
assertEquals("a_b_c_d_", _underlyingInput.getAcceptedInput());
+ assertEquals(4, _underlyingInput.getProcessCount()); // 1 process per decoded packet
+ assertEquals(10, _dummySslEngine.getUnwrapCount()); // Earlier + (decode + underflow) * 2
+ // due to way the bytes are fed in across
+ // boundary of encoded packets
}
+ /**
+ * Tests that when a small underlying input buffer (1 byte here) is used, all of the encoded
+ * data packet (5 bytes each here) can be processed despite multiple attempts being required to
+ * pass the decoded bytes (2 bytes here) to the underlying input layer for processing.
+ */
@Test
- public void testUnderlyingInputUsingSmallBuffer_receivesAllDecodedInput() throws Exception
+ public void testUnderlyingInputUsingSmallBuffer_receivesAllDecodedInputRequiringMultipleUnderlyingProcesses()
{
- _underlyingInput.setInputBufferSize(1);
+ int underlyingInputBufferSize = 1;
+ int encodedPacketSize = 5;
- putBytesIntoTransport("<-A->");
+ _underlyingInput.setInputBufferSize(underlyingInputBufferSize);
+ assertEquals("Unexpected underlying input capacity", underlyingInputBufferSize, _underlyingInput.capacity());
- assertEquals("a_", _underlyingInput.getAcceptedInput());
+ assertEquals("Unexpected max encoded chunk size", encodedPacketSize, CapitalisingDummySslEngine.MAX_ENCODED_CHUNK_SIZE);
+
+ byte[] bytes = "<-A-><-B->".getBytes(StandardCharsets.UTF_8);
+ ByteBuffer encodedByteSource = ByteBuffer.wrap(bytes);
+
+ assertEquals("Unexpected initial capacity", encodedPacketSize, _sslWrapper.capacity());
+
+ // Process the first 'encoded packet' (<-A->)
+ int numberPoured = pour(encodedByteSource, _sslWrapper.tail());
+ assertEquals("Unexpected number of bytes poured into the wrapper input buffer", encodedPacketSize, numberPoured);
+ assertEquals("Unexpected position in encoded source byte buffer", encodedPacketSize * 1, encodedByteSource.position());
+ assertEquals("Unexpected capacity", 0, _sslWrapper.capacity());
+ _sslWrapper.process();
+ assertEquals("Unexpected capacity", encodedPacketSize, _sslWrapper.capacity());
+
+ assertEquals("unexpected underlying output after first wrapper process", "a_", _underlyingInput.getAcceptedInput());
+ assertEquals("unexpected underlying process count after first wrapper process", 2 , _underlyingInput.getProcessCount());
+
+ // Process the second 'encoded packet' (<-B->)
+ numberPoured = pour(encodedByteSource, _sslWrapper.tail());
+ assertEquals("Unexpected number of bytes poured into the wrapper input buffer", encodedPacketSize, numberPoured);
+ assertEquals("Unexpected position in encoded source byte buffer", encodedPacketSize * 2, encodedByteSource.position());
+ assertEquals("Unexpected capacity", 0, _sslWrapper.capacity());
+ _sslWrapper.process();
+ assertEquals("Unexpected capacity", encodedPacketSize, _sslWrapper.capacity());
+
+ assertEquals("unexpected underlying output after second wrapper process", "a_b_", _underlyingInput.getAcceptedInput());
+ assertEquals("unexpected underlying process count after second wrapper process", 4 , _underlyingInput.getProcessCount());
+ }
+
+ /**
+ * Tests that when a small underlying input buffer (1 byte here) is used, all of the encoded
+ * data packets (20 bytes total here) can be processed despite multiple unwraps being required
+ * to process a given set of input (3 packets, 15 bytes here) and then as a result also multiple
+ * attempts to pass the decoded packet (2 bytes here) to the underlying input layer for processing.
+ */
+ @Test
+ public void testUnderlyingInputUsingSmallBuffer_receivesAllDecodedInputRequiringMultipleUnwraps()
+ {
+ int underlyingInputBufferSize = 1;
+ int encodedPacketSize = 5;
+ int sslEngineBufferSize = 15;
+
+ assertEquals("Unexpected max encoded chunk size", encodedPacketSize, CapitalisingDummySslEngine.MAX_ENCODED_CHUNK_SIZE);
+
+ _underlyingOutput = new CannedTransportOutput();
+ _underlyingInput = new RememberingTransportInput();
+ _underlyingInput.setInputBufferSize(underlyingInputBufferSize);
+ assertEquals("Unexpected underlying input capacity", underlyingInputBufferSize, _underlyingInput.capacity());
+
+ // Create a dummy ssl engine that has buffers that holds multiple encoded/decoded
+ // packets, but still can't fit all of the input
+ _dummySslEngine = new CapitalisingDummySslEngine();
+ _dummySslEngine.setApplicationBufferSize(sslEngineBufferSize);
+ _dummySslEngine.setPacketBufferSize(sslEngineBufferSize);
+
+ _sslWrapper = new SimpleSslTransportWrapper(_dummySslEngine, _underlyingInput, _underlyingOutput);
+
+ byte[] bytes = "<-A-><-B-><-C-><-D->".getBytes(StandardCharsets.UTF_8);
+ ByteBuffer encodedByteSource = ByteBuffer.wrap(bytes);
+
+ assertEquals("Unexpected initial capacity", sslEngineBufferSize, _sslWrapper.capacity());
+
+ // Process the first three 'encoded packets' (<-A-><-B-><-C->). This will require 3 'proper' unwraps, and
+ // as each decoded packet is 2 bytes, each of those will require 2 underlying input processes.
+ int numberPoured = pour(encodedByteSource, _sslWrapper.tail());
+ assertEquals("Unexpected number of bytes poured into the wrapper input buffer", sslEngineBufferSize, numberPoured);
+ assertEquals("Unexpected position in encoded source byte buffer", encodedPacketSize * 3, encodedByteSource.position());
+ assertEquals("Unexpected capacity", 0, _sslWrapper.capacity());
+
+ _sslWrapper.process();
+
+ assertEquals("a_b_c_", _underlyingInput.getAcceptedInput());
+ assertEquals("Unexpected capacity", sslEngineBufferSize, _sslWrapper.capacity());
+ assertEquals("unexpected underlying process count after wrapper process", 6 , _underlyingInput.getProcessCount());
+ assertEquals(4, _dummySslEngine.getUnwrapCount()); // 3 decodes + 1 underflow
+
+ // Process the fourth 'encoded packet' (<-D->)
+ numberPoured = pour(encodedByteSource, _sslWrapper.tail());
+ assertEquals("Unexpected number of bytes poured into the wrapper input buffer", encodedPacketSize, numberPoured);
+ assertEquals("Unexpected position in encoded source byte buffer", encodedPacketSize * 4, encodedByteSource.position());
+ assertEquals("Unexpected capacity", sslEngineBufferSize - encodedPacketSize, _sslWrapper.capacity());
+
+ _sslWrapper.process();
+
+ assertEquals("a_b_c_d_", _underlyingInput.getAcceptedInput());
+ assertEquals("Unexpected capacity", sslEngineBufferSize, _sslWrapper.capacity());
+ assertEquals("unexpected underlying process count after second wrapper process", 8 , _underlyingInput.getProcessCount());
+ assertEquals(6, _dummySslEngine.getUnwrapCount()); // earlier + 1 decode + 1 underflow
+ }
+
+ /**
+ * Tests that an exception is thrown when the underlying input has zero capacity when the call
+ * with newly decoded input is initially made.
+ */
+ @Test (timeout = 5000)
+ public void testUnderlyingInputHasZeroCapacityInitially()
+ {
+ int underlyingInputBufferSize = 1;
+ int encodedPacketSize = 5;
+
+ assertEquals("Unexpected max encoded chunk size", encodedPacketSize, CapitalisingDummySslEngine.MAX_ENCODED_CHUNK_SIZE);
+
+ // Set the input to have a small buffer, but then return 0 from the 2nd capacity call onward.
+ _underlyingInput.setInputBufferSize(underlyingInputBufferSize);
+ _underlyingInput.setZeroCapacityAtCount(2);
+ assertEquals("Unexpected initial underlying input capacity", underlyingInputBufferSize, _underlyingInput.capacity());
+ assertEquals("Unexpected underlying input capacity", 0, _underlyingInput.capacity());
+
+ // Now try decoding the input, should fail
+ byte[] bytes = "<-A->".getBytes(StandardCharsets.UTF_8);
+ ByteBuffer encodedByteSource = ByteBuffer.wrap(bytes);
+
+ assertEquals("Unexpected initial wrapper capacity", encodedPacketSize, _sslWrapper.capacity());
+
+ int numberPoured = pour(encodedByteSource, _sslWrapper.tail());
+ assertEquals("Unexpected number of bytes poured into the wrapper input buffer", encodedPacketSize, numberPoured);
+ assertEquals("Unexpected position in encoded source byte buffer", encodedPacketSize, encodedByteSource.position());
+ assertEquals("Unexpected wrapper capacity", 0, _sslWrapper.capacity());
+
+ try
+ {
+ _sslWrapper.process();
+ fail("Expected an exception");
+ }
+ catch (TransportException te)
+ {
+ // expected.
+ }
+
+ //Check we got no chars of decoded output.
+ assertEquals("", _underlyingInput.getAcceptedInput());
+ assertEquals("Unexpected wrapper capacity", -1, _sslWrapper.capacity());
+ assertEquals("unexpected underlying process count after wrapper process", 0 , _underlyingInput.getProcessCount());
+ assertEquals("unexpected underlying capacity count after wrapper process", 3, _underlyingInput.getCapacityCount());
+ assertEquals("unexpected underlying capacity after wrapper process", 0 , _underlyingInput.capacity());
+ assertEquals(1, _dummySslEngine.getUnwrapCount()); // 1 decode (then exception)
+ }
+
+ /**
+ * Tests that an exception is thrown when the underlying input has no capacity (but isn't closed)
+ * during the process of incrementally passing the decoded bytes to its smaller input buffer
+ * for processing.
+ */
+ @Test (timeout = 5000)
+ public void testUnderlyingInputHasZeroCapacityMidProcessing()
+ {
+ int underlyingInputBufferSize = 1;
+ int encodedPacketSize = 5;
+
+ assertEquals("Unexpected max encoded chunk size", encodedPacketSize, CapitalisingDummySslEngine.MAX_ENCODED_CHUNK_SIZE);
+
+ // Set the input to have a small buffer, but then return 0 from the 3rd capacity call onward.
+ _underlyingInput.setInputBufferSize(underlyingInputBufferSize);
+ _underlyingInput.setZeroCapacityAtCount(3);
+ assertEquals("Unexpected initial underlying input capacity", underlyingInputBufferSize, _underlyingInput.capacity());
+
+ // Now try decoding the input, should fail
+ byte[] bytes = "<-A->".getBytes(StandardCharsets.UTF_8);
+ ByteBuffer encodedByteSource = ByteBuffer.wrap(bytes);
+
+ assertEquals("Unexpected initial wrapper capacity", encodedPacketSize, _sslWrapper.capacity());
+
+ int numberPoured = pour(encodedByteSource, _sslWrapper.tail());
+ assertEquals("Unexpected number of bytes poured into the wrapper input buffer", encodedPacketSize, numberPoured);
+ assertEquals("Unexpected position in encoded source byte buffer", encodedPacketSize, encodedByteSource.position());
+ assertEquals("Unexpected wrapper capacity", 0, _sslWrapper.capacity());
+
+ try
+ {
+ _sslWrapper.process();
+ fail("Expected an exception");
+ }
+ catch (TransportException te)
+ {
+ // expected.
+ }
+
+ //Check we got the first char (a) of decoded output, but not the second (_).
+ assertEquals("a", _underlyingInput.getAcceptedInput());
+ assertEquals("Unexpected wrapper capacity", -1, _sslWrapper.capacity());
+ assertEquals("unexpected underlying process count after wrapper process", 1 , _underlyingInput.getProcessCount());
+ assertEquals("unexpected underlying capacity count after wrapper process", 3, _underlyingInput.getCapacityCount());
+ assertEquals("unexpected underlying capacity after wrapper process", 0 , _underlyingInput.capacity());
+ assertEquals(1, _dummySslEngine.getUnwrapCount()); // 1 decode (then exception)
}
@Test
@@ -132,7 +350,7 @@
SSLException sslException = new SSLException("unwrap exception");
_dummySslEngine.rejectNextEncodedPacket(sslException);
- _sslWrapper.tail().put("<-A->".getBytes());
+ _sslWrapper.tail().put("<-A->".getBytes(StandardCharsets.UTF_8));
_sslWrapper.process();
assertEquals(_sslWrapper.capacity(), Transport.END_OF_STREAM);
}
@@ -143,7 +361,7 @@
String underlyingErrorDescription = "dummy underlying error";
_underlyingInput.rejectNextInput(underlyingErrorDescription);
- _sslWrapper.tail().put("<-A->".getBytes());
+ _sslWrapper.tail().put("<-A->".getBytes(StandardCharsets.UTF_8));
try {
_sslWrapper.process();
@@ -167,7 +385,7 @@
ByteBuffer outputBuffer = _sslWrapper.head();
- assertByteBufferContentEquals("<-A->".getBytes(), outputBuffer);
+ assertByteBufferContentEquals("<-A->".getBytes(StandardCharsets.UTF_8), outputBuffer);
}
@Test
@@ -218,7 +436,7 @@
private void putBytesIntoTransport(String encodedBytes)
{
- ByteBuffer byteBuffer = ByteBuffer.wrap(encodedBytes.getBytes());
+ ByteBuffer byteBuffer = ByteBuffer.wrap(encodedBytes.getBytes(StandardCharsets.UTF_8));
while(byteBuffer.hasRemaining())
{
int numberPoured = pour(byteBuffer, _sslWrapper.tail());
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qpid-proton-0.12.1/tests/pom.xml new/qpid-proton-0.12.2/tests/pom.xml
--- old/qpid-proton-0.12.1/tests/pom.xml 2016-03-17 17:27:04.000000000 +0100
+++ new/qpid-proton-0.12.2/tests/pom.xml 2016-04-14 17:50:53.000000000 +0200
@@ -27,7 +27,7 @@
<parent>
<groupId>org.apache.qpid</groupId>
<artifactId>proton-project</artifactId>
- <version>0.12.1</version>
+ <version>0.12.2</version>
</parent>
<description>The Proton python system tests execute against the Java or C implementation, using Maven (via this pom) and CMake/CTest respectively.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qpid-proton-0.12.1/version.txt new/qpid-proton-0.12.2/version.txt
--- old/qpid-proton-0.12.1/version.txt 2016-03-17 17:27:04.000000000 +0100
+++ new/qpid-proton-0.12.2/version.txt 2016-04-14 17:50:53.000000000 +0200
@@ -1 +1 @@
-0.12.1
+0.12.2
1
0