Imported Upstream version 17.1.3 upstream/17.1.3
authorDongHun Kwak <dh0128.kwak@samsung.com>
Mon, 2 Sep 2019 07:14:41 +0000 (16:14 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Mon, 2 Sep 2019 07:14:41 +0000 (16:14 +0900)
14 files changed:
.travis.yml [new file with mode: 0644]
CMakeLists.txt
VERSION.cmake
libzypp.pc.cmake
libzypp.spec.cmake
package/libzypp.changes
po/fi.po
po/nl.po
zypp/CMakeLists.txt
zypp/base/GzStream.cc
zypp/base/LocaleGuard.h [new file with mode: 0644]
zypp/media/MediaBlockList.cc
zypp/media/MetaLinkParser.cc
zypp/target/rpm/RpmDb.cc

diff --git a/.travis.yml b/.travis.yml
new file mode 100644 (file)
index 0000000..d8ba8bc
--- /dev/null
@@ -0,0 +1,29 @@
+sudo: required
+dist: trusty
+group: stable
+language: c++
+os: linux
+
+services:
+- docker
+
+before_install:
+- cat /proc/cpuinfo
+- docker pull opensuse:tumbleweed
+- docker run -i -d --name test opensuse:tumbleweed bash
+- docker exec test zypper ref
+- docker exec test zypper in -y --recommends cmake openssl-devel boost-devel dejagnu doxygen gcc-c++ gettext-devel graphviz libxml2-devel libproxy-devel pkg-config libsolv-devel libsolv-tools ruby rpm-devel libcurl-devel libboost_program_options*-devel libboost_test*-devel libudev-devel xorg-x11-fonts-core xorg-x11-fonts texlive-lm-fonts
+
+script:
+- docker cp ../libzypp/ test:/root
+- docker exec test mkdir /root/build
+- docker exec test bash -c "cd /root/build && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_SKIP_RPATH=1 ../libzypp"
+- docker exec test bash -c "cd /root/build && make -j4 VERBOSE=1"
+- docker exec test bash -c "cd /root/build && make -j4 -C doc/autodoc"
+- docker exec test bash -c "cd /root/build && make -j4 -C po translations"
+- docker exec test bash -c "cd /root/build && make -j4 -C tests"
+- docker exec test bash -c "cd /root/build/tests && LD_LIBRARY_PATH=$PWD/../zypp:$LD_LIBRARY_PATH ctest ."
+
+on:
+    repo: openSUSE/libzypp
+    tags: true
index 851a958..c042289 100644 (file)
@@ -52,8 +52,8 @@ include(CheckCXXCompilerFlag)
 CHECK_C_COMPILER_FLAG("-Werror=format-security" CC_FORMAT_SECURITY)
 CHECK_CXX_COMPILER_FLAG("-Werror=format-security" CXX_FORMAT_SECURITY)
 
-SET( CMAKE_C_FLAGS     "${CMAKE_C_FLAGS} -fno-strict-aliasing -fPIC -g -rdynamic -Wall -Wl,-as-needed" )
-SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing -fPIC -g -rdynamic -Wall -Wl,-as-needed" )
+SET( CMAKE_C_FLAGS     "${CMAKE_C_FLAGS} -fno-strict-aliasing -fPIC -g -rdynamic -Wall -Wl,-as-needed -Wp,-D_GLIBCXX_ASSERTIONS" )
+SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing -fPIC -g -rdynamic -Wall -Wl,-as-needed -Wp,-D_GLIBCXX_ASSERTIONS" )
 
 SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fvisibility-inlines-hidden -Woverloaded-virtual -Wnon-virtual-dtor" )
 
@@ -163,9 +163,6 @@ ELSE()
   INCLUDE_DIRECTORIES( ${LibSolv_INCLUDE_DIRS} )
 ENDIF()
 
-# libsolv uses expat and has open references to it:
-FIND_PACKAGE(EXPAT REQUIRED)
-
 FIND_PACKAGE(OpenSSL REQUIRED)
 
 FIND_PACKAGE(Udev)
index 82d4621..3e77998 100644 (file)
@@ -61,8 +61,8 @@
 SET(LIBZYPP_MAJOR "17")
 SET(LIBZYPP_COMPATMINOR "0")
 SET(LIBZYPP_MINOR "1")
-SET(LIBZYPP_PATCH "2")
+SET(LIBZYPP_PATCH "3")
 #
-# LAST RELEASED: 17.1.2 (0)
+# LAST RELEASED: 17.1.3 (0)
 # (The number in parenthesis is LIBZYPP_COMPATMINOR)
 #=======
index 1582d9f..6e3e970 100644 (file)
@@ -8,7 +8,7 @@ Version: @VERSION@
 Description: Package, Patch, Pattern, and Product Management
 
 Libs: -L${libdir} -lzypp
-Cflags: -I${includedir} @ZYPP_CFLAGS@
+Cflags: -I${includedir} -D_FILE_OFFSET_BITS=64 @ZYPP_CFLAGS@
 
 features=@ZYPP_FEATURES@
 
index 9b34c4d..e05c999 100644 (file)
@@ -16,8 +16,6 @@
 #
 
 
-%define force_gcc_46 0
-
 Name:           @PACKAGE@
 Version:        @VERSION@
 Release:        0
@@ -61,12 +59,7 @@ BuildRequires:  boost-devel
 %endif
 BuildRequires:  dejagnu
 BuildRequires:  doxygen
-%if 0%{?force_gcc_46}
-BuildRequires:  gcc46
-BuildRequires:  gcc46-c++
-%else
 BuildRequires:  gcc-c++ >= 4.6
-%endif
 BuildRequires:  gettext-devel
 BuildRequires:  graphviz
 BuildRequires:  libxml2-devel
@@ -92,12 +85,6 @@ Requires:       libsolv-tools
 # required for testsuite, webrick
 BuildRequires:  ruby
 
-%if 0%{?suse_version}
-BuildRequires:  libexpat-devel
-%else
-BuildRequires:  expat-devel
-%endif
-
 Requires:       rpm
 
 %if 0%{?suse_version}
@@ -116,8 +103,10 @@ BuildRequires:  librpm-devel > 4.4
 %endif
 
 %if 0%{?suse_version}
+BuildRequires:  gpg2
 Requires:       gpg2
 %else
+BuildRequires:  gnupg2
 Requires:       gnupg2
 %endif
 
@@ -201,10 +190,6 @@ Package, Patch, Pattern, and Product Management - developers files
 %build
 mkdir build
 cd build
-%if 0%{?force_gcc_46}
-export CC=gcc-4.6
-export CXX=g++-4.6
-%endif
 export CFLAGS="$RPM_OPT_FLAGS"
 export CXXFLAGS="$RPM_OPT_FLAGS"
 unset EXTRA_CMAKE_OPTIONS
@@ -223,15 +208,7 @@ cmake -DCMAKE_INSTALL_PREFIX=%{_prefix} \
 make %{?_smp_mflags} VERBOSE=1
 make -C doc/autodoc %{?_smp_mflags}
 make -C po %{?_smp_mflags} translations
-
-%if 0%{?run_testsuite}
-  make -C tests %{?_smp_mflags}
-  pushd tests
-  LD_LIBRARY_PATH=$PWD/../zypp:$LD_LIBRARY_PATH ctest .
-  popd
-%endif
-
-#make check
+make -C tests %{?_smp_mflags}
 
 %install
 rm -rf "$RPM_BUILD_ROOT"
@@ -270,6 +247,11 @@ make -C po install DESTDIR=$RPM_BUILD_ROOT
 cd ..
 %{find_lang} zypp
 
+%check
+pushd build/tests
+LD_LIBRARY_PATH=$RPM_BUILD_ROOT%{_libdir}:${LD_LIBRARY_PATH} ctest .
+popd
+
 %post
 /sbin/ldconfig
 if [ -f /var/cache/zypp/zypp.db ]; then rm /var/cache/zypp/zypp.db; fi
index b18c640..e9df2ef 100644 (file)
@@ -1,4 +1,14 @@
 -------------------------------------------------------------------
+Tue Feb 20 18:03:24 CET 2018 - ma@suse.de
+
+- RpmDb::checkPackage: fix parsing localized rpm output (bsc#1076415)
+- Replace libexpat with libxml
+- Fix libzypp tests failing with `-Wp,-D_GLIBCXX_ASSERTIONS`
+  compiler flag (fixes #84)
+- BuildRequire gpg2 as testcases need it (fixes #84)
+- version 17.1.3 (0)
+
+-------------------------------------------------------------------
 Fri Feb  2 16:07:08 CET 2018 - ma@suse.de
 
 - Fix crash when installing broken rpm packages (bsc#1078284)
index c4ef8d2..c7f6e8c 100644 (file)
--- a/po/fi.po
+++ b/po/fi.po
@@ -20,16 +20,16 @@ msgstr ""
 "Project-Id-Version: zypp.fi\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2017-12-01 07:26+0100\n"
-"PO-Revision-Date: 2017-07-10 15:05+0000\n"
-"Last-Translator: Jyri Palokangas <jmp@opensuse.org>\n"
-"Language-Team: Finnish <https://l10n.opensuse.org/projects/libzypp/master/fi/"
-">\n"
+"PO-Revision-Date: 2018-02-15 11:35+0000\n"
+"Last-Translator: Tommi Nieminen <software@legisign.org>\n"
+"Language-Team: Finnish "
+"<https://l10n.opensuse.org/projects/libzypp/master/fi/>\n"
 "Language: fi\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 2.13.1\n"
+"X-Generator: Weblate 2.18\n"
 
 #: zypp/target/hal/HalException.h:46 zypp/target/hal/HalException.h:55
 #: zypp/target/hal/HalException.h:64
@@ -1491,9 +1491,8 @@ msgstr ""
 "Yritettiin lisätä avain %s avainrenkaaseen %s, mutta tiedostoa ei löydetty"
 
 #: zypp/KeyRing.cc:583
-#, fuzzy
 msgid "Failed to import key."
-msgstr "Avaimen tuonti tiedostosta %1% epäonnistui"
+msgstr "Avaimen tuonti epäonnistui."
 
 #: zypp/KeyRing.cc:606
 msgid "Failed to delete key."
@@ -3940,21 +3939,20 @@ msgstr "Tehdään seuraavat toiminnot:"
 
 #. translators: an annotation to a gpg keys expiry date
 #: zypp/PublicKey.cc:60
-#, fuzzy
 msgid "does not expire"
-msgstr "(ei vanhene)"
+msgstr "ei vanhene"
 
 #. translators: an annotation to a gpg keys expiry date: "expired: 1999-04-12"
 #: zypp/PublicKey.cc:65
 #, boost-format
 msgid "expired: %1%"
-msgstr ""
+msgstr "vanhentunut: %1%"
 
 #. translators: an annotation to a gpg keys expiry date: "expires: 2111-04-12"
 #: zypp/PublicKey.cc:70
 #, boost-format
 msgid "expires: %1%"
-msgstr ""
+msgstr "vanhenee: %1%"
 
 #. translators: an annotation to a gpg keys expiry date
 #: zypp/PublicKey.cc:79
@@ -3973,11 +3971,11 @@ msgstr "(vanhenee 24 tunnin kuluessa)"
 
 #. translators: an annotation to a gpg keys expiry date
 #: zypp/PublicKey.cc:96
-#, fuzzy, c-format, boost-format
+#, boost-format, c-format
 msgid "(expires in %d day)"
 msgid_plural "(expires in %d days)"
-msgstr[0] "(vanhenee 24 tunnin kuluessa)"
-msgstr[1] "(vanhenee 24 tunnin kuluessa)"
+msgstr[0] "(vanhenee %d päivässä)"
+msgstr[1] "(vanhenee %d päivässä)"
 
 #: zypp/RepoManager.cc:312
 #, boost-format
@@ -4021,11 +4019,10 @@ msgstr "Tuntematon palvelu '%1%': Poistetaan orpo palvelulähde '%2%'"
 
 #. we will throw this later if no URL checks out fine
 #: zypp/RepoManager.cc:1098
-#, fuzzy
 msgid "Valid metadata not found at specified URL"
 msgid_plural "Valid metadata not found at specified URLs"
-msgstr[0] "Annetuista verkko-osoitteista ei löytynyt kelpaavia metatietoja"
-msgstr[1] "Annetuista verkko-osoitteista ei löytynyt kelpaavia metatietoja"
+msgstr[0] "Annetusta verkko-osoitteesta ei löytynyt kelvollista metatietoa"
+msgstr[1] "Annetuista verkko-osoitteista ei löytynyt kelvollista metatietoa"
 
 #: zypp/RepoManager.cc:1146 zypp/RepoManager.cc:1258 zypp/RepoManager.cc:1314
 #, c-format, boost-format
@@ -4401,6 +4398,8 @@ msgid ""
 "Create attach point: Can't find a writable directory to create an attach "
 "point"
 msgstr ""
+"Luo liitospiste: Kirjoitettavissa olevaa kansiota ei löydy liitospisteen "
+"luomiseksi"
 
 #: zypp/media/MediaUserAuth.cc:136
 #, c-format, boost-format
@@ -4422,9 +4421,8 @@ msgid "One or both of '%s' or '%s' attributes is required."
 msgstr "Tarvitaan joko %s tai %s -attribuutti."
 
 #: zypp/repo/PackageProvider.cc:216
-#, fuzzy
 msgid "Signature verification failed"
-msgstr " suoritus epäonnistui"
+msgstr "Allekirjoituksen todennus epäonnistui"
 
 #. TranslatorExplanation %s = package being checked for integrity
 #: zypp/repo/PackageProvider.cc:388
@@ -4618,9 +4616,8 @@ msgid "break %s by ignoring some of its dependencies"
 msgstr "jätä %s riippuvuuksia huomioimatta"
 
 #: zypp/solver/detail/ProblemSolutionIgnore.cc:48
-#, fuzzy
 msgid "generally ignore of some dependencies"
-msgstr "jätä joitakin vaatimuksia huomiotta"
+msgstr "jätä joitakin riippuvuuksia huomiotta"
 
 #: zypp/solver/detail/SATResolver.cc:979
 #, c-format, boost-format
@@ -4744,9 +4741,9 @@ msgid "keep %s"
 msgstr "pidä %s"
 
 #: zypp/solver/detail/SATResolver.cc:1170
-#, fuzzy, c-format, boost-format
+#, boost-format, c-format
 msgid "remove lock to allow installation of %s"
-msgstr "Älä estä %s asentamista"
+msgstr "poista lukitus asentaaksesi: %s"
 
 #: zypp/solver/detail/SATResolver.cc:1221
 #: zypp/solver/detail/SATResolver.cc:1242
@@ -4915,7 +4912,7 @@ msgstr "Julkisen avaimen %1% poisto epäonnistui"
 
 #: zypp/target/rpm/RpmDb.cc:1596
 msgid "Package is not signed!"
-msgstr ""
+msgstr "Pakettia ei ole allekirjoitettu!"
 
 #. Translator: %s = name of an rpm package. A list of diffs follows
 #. this message.
@@ -4970,9 +4967,8 @@ msgstr "luotiin varmuuskopio %s"
 
 #. translators: possible rpm package signature check result [brief]
 #: zypp/target/rpm/RpmDb.cc:2412
-#, fuzzy
 msgid "Signature is OK"
-msgstr "Allekirjoitustiedostoa %s ei löydetty"
+msgstr "Allekirjoitus kelpaa"
 
 #. translators: possible rpm package signature check result [brief]
 #: zypp/target/rpm/RpmDb.cc:2414
@@ -4981,15 +4977,13 @@ msgstr "Tuntematon allekirjoituksen tyyppi"
 
 #. translators: possible rpm package signature check result [brief]
 #: zypp/target/rpm/RpmDb.cc:2416
-#, fuzzy
 msgid "Signature does not verify"
-msgstr "Allekirjoitustiedostoa %s ei löydetty"
+msgstr "Allekirjoitusta ei voida todentaa"
 
 #. translators: possible rpm package signature check result [brief]
 #: zypp/target/rpm/RpmDb.cc:2418
-#, fuzzy
 msgid "Signature is OK, but key is not trusted"
-msgstr "Allekirjoitustiedostoa %s ei löydetty"
+msgstr "Allekirjoitus kelpaa, mutta avain ei ole luotettu"
 
 #. translators: possible rpm package signature check result [brief]
 #: zypp/target/rpm/RpmDb.cc:2420
@@ -5004,7 +4998,7 @@ msgstr "Tiedostoa ei ole tai allekirjoitusta ei voi tarkistaa"
 #. translators: possible rpm package signature check result [brief]
 #: zypp/target/rpm/RpmDb.cc:2424
 msgid "File is unsigned"
-msgstr ""
+msgstr "Tiedosto on allekirjoittamaton"
 
 #: zypp/thread/Mutex.cc:33
 msgid "Can't initialize mutex attributes"
index 9d3b8f9..16cf431 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -16,8 +16,8 @@ msgstr ""
 "Project-Id-Version: zypp.nl\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2017-12-01 07:26+0100\n"
-"PO-Revision-Date: 2018-01-06 11:27+0000\n"
-"Last-Translator: Nathan Follens <nthn@unseen.is>\n"
+"PO-Revision-Date: 2018-02-08 13:48+0000\n"
+"Last-Translator: Eva van Rein <vistatec@globaltextware.nl>\n"
 "Language-Team: Dutch <https://l10n.opensuse.org/projects/libzypp/master/nl/>"
 "\n"
 "Language: nl\n"
@@ -25,7 +25,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 2.17.1\n"
+"X-Generator: Weblate 2.18\n"
 
 #: zypp/target/hal/HalException.h:46 zypp/target/hal/HalException.h:55
 #: zypp/target/hal/HalException.h:64
@@ -106,7 +106,7 @@ msgstr "Argentinië"
 #. :ARG:032:
 #: zypp/CountryCode.cc:169
 msgid "American Samoa"
-msgstr "Amerikaans Samoa"
+msgstr "Amerikaans-Samoa"
 
 #. :ASM:016:
 #: zypp/CountryCode.cc:170
@@ -126,7 +126,7 @@ msgstr "Aruba"
 #. :ABW:533:
 #: zypp/CountryCode.cc:173
 msgid "Aland Islands"
-msgstr "Aland-eilanden"
+msgstr "Åland"
 
 #. :ALA:248:
 #: zypp/CountryCode.cc:174
@@ -211,7 +211,7 @@ msgstr "Bhutan"
 #. :BTN:064:
 #: zypp/CountryCode.cc:190
 msgid "Bouvet Island"
-msgstr "Bouvet-eiland"
+msgstr "Bouveteiland"
 
 #. :BVT:074:
 #: zypp/CountryCode.cc:191
@@ -236,7 +236,7 @@ msgstr "Canada"
 #. :CAN:124:
 #: zypp/CountryCode.cc:195
 msgid "Cocos (Keeling) Islands"
-msgstr "Cocos(Keeling)eilanden"
+msgstr "Cocoseilanden"
 
 #. :CCK:166:
 #. :CAF:140:
@@ -392,7 +392,7 @@ msgstr "Fiji"
 #. :FJI:242:
 #: zypp/CountryCode.cc:227
 msgid "Falkland Islands (Malvinas)"
-msgstr "Falkland Eilanden (Malvinas)"
+msgstr "Falklandeilanden"
 
 #. :FLK:238:
 #: zypp/CountryCode.cc:228
@@ -402,7 +402,7 @@ msgstr "Federale staten van Micronesia"
 #. :FSM:583:
 #: zypp/CountryCode.cc:229
 msgid "Faroe Islands"
-msgstr "Faroe Eilanden"
+msgstr "Faeröer"
 
 #. :FRO:234:
 #: zypp/CountryCode.cc:230
@@ -412,7 +412,7 @@ msgstr "Frankrijk"
 #. :FRA:250:
 #: zypp/CountryCode.cc:231
 msgid "Metropolitan France"
-msgstr "Metropolitaan Frankrijk"
+msgstr "Metropolitaans Frankrijk"
 
 #. :FXX:249:
 #: zypp/CountryCode.cc:232
@@ -486,7 +486,7 @@ msgstr "Griekenland"
 #. :GRC:300:
 #: zypp/CountryCode.cc:246
 msgid "South Georgia and the South Sandwich Islands"
-msgstr "Zuid Georgia en de Zuid Sandwich Eilanden"
+msgstr "Zuid-Georgia en de Zuidelijke Sandwicheilanden"
 
 #. :SGS:239:
 #: zypp/CountryCode.cc:247
@@ -511,12 +511,12 @@ msgstr "Guyana"
 #. :GUY:328:
 #: zypp/CountryCode.cc:251
 msgid "Hong Kong"
-msgstr "Hong Kong"
+msgstr "Hongkong"
 
 #. :HKG:344:
 #: zypp/CountryCode.cc:252
 msgid "Heard Island and McDonald Islands"
-msgstr "Heard Island en McDonald Islands"
+msgstr "Heard en McDonaldeilanden"
 
 #. :HMD:334:
 #: zypp/CountryCode.cc:253
@@ -556,7 +556,7 @@ msgstr "Israël"
 #. :ISR:376:
 #: zypp/CountryCode.cc:260
 msgid "Isle of Man"
-msgstr "Isle of Man"
+msgstr "Man (eiland)"
 
 #: zypp/CountryCode.cc:261
 msgid "India"
@@ -565,7 +565,7 @@ msgstr "India"
 #. :IND:356:
 #: zypp/CountryCode.cc:262
 msgid "British Indian Ocean Territory"
-msgstr "Brits Indian Ocean Territory"
+msgstr "Brits Indische Oceaanterritorium"
 
 #. :IOT:086:
 #: zypp/CountryCode.cc:263
@@ -634,7 +634,7 @@ msgstr "Comoren"
 #. :COM:174:
 #: zypp/CountryCode.cc:276
 msgid "Saint Kitts and Nevis"
-msgstr "Sint Kitts en Nevis"
+msgstr "Saint Kitts en Nevis"
 
 #. :KNA:659:
 #: zypp/CountryCode.cc:277
@@ -664,7 +664,7 @@ msgstr "Kazachstan"
 #. :KAZ:398:
 #: zypp/CountryCode.cc:282
 msgid "Lao People's Democratic Republic"
-msgstr "Democratische volksrepubliek Laos"
+msgstr "Democratische Volksrepubliek Laos"
 
 #. :LAO:418:
 #: zypp/CountryCode.cc:283
@@ -748,7 +748,7 @@ msgstr "Madagaskar"
 #. :MDG:450:
 #: zypp/CountryCode.cc:299
 msgid "Marshall Islands"
-msgstr "Marshall Eilanden"
+msgstr "Marshalleilanden"
 
 #. :MHL:584:
 #: zypp/CountryCode.cc:300
@@ -848,7 +848,7 @@ msgstr "Niger"
 #. :NER:562:
 #: zypp/CountryCode.cc:319
 msgid "Norfolk Island"
-msgstr "Norfolk eiland"
+msgstr "Norfolk (eiland)"
 
 #. :NFK:574:
 #: zypp/CountryCode.cc:320
@@ -1348,16 +1348,16 @@ msgstr "Kan geen fork (%s) uitvoeren."
 #: zypp/ExternalProgram.cc:510
 #, c-format, boost-format
 msgid "Command exited with status %d."
-msgstr "Commando beëindigd met status %d."
+msgstr "Opdracht beëindigd met status %d."
 
 #: zypp/ExternalProgram.cc:530
 #, c-format, boost-format
 msgid "Command was killed by signal %d (%s)."
-msgstr "Commando is gestopt door signaal %d (%s)."
+msgstr "Opdracht is gestopt door signaal %d (%s)."
 
 #: zypp/ExternalProgram.cc:535
 msgid "Command exited with unknown error."
-msgstr "Commando beëindigd met onbekende fout."
+msgstr "Opdracht beëindigd met onbekende fout."
 
 #. TranslatorExplanation first %s is key name, second is keyring name
 #: zypp/KeyRing.cc:561
@@ -1417,7 +1417,7 @@ msgstr "Adygees"
 #. language code: afa
 #: zypp/LanguageCode.cc:173
 msgid "Afro-Asiatic (Other)"
-msgstr "Afro-Aziatisch (Overige)"
+msgstr "Afro-Aziatisch (overig)"
 
 #. language code: afh
 #: zypp/LanguageCode.cc:175
@@ -1512,7 +1512,7 @@ msgstr "Arapaho"
 #. language code: art
 #: zypp/LanguageCode.cc:215
 msgid "Artificial (Other)"
-msgstr "Kunstmatig (Overige)"
+msgstr "Kunstmatig (overig)"
 
 #. language code: arw
 #: zypp/LanguageCode.cc:217
@@ -1607,7 +1607,7 @@ msgstr "Balinees"
 #. language code: bat
 #: zypp/LanguageCode.cc:255
 msgid "Baltic (Other)"
-msgstr "Baltisch (Overige)"
+msgstr "Baltisch (overig)"
 
 #. language code: bej
 #: zypp/LanguageCode.cc:257
@@ -1632,7 +1632,7 @@ msgstr "Bengaals"
 #. language code: ber
 #: zypp/LanguageCode.cc:265
 msgid "Berber (Other)"
-msgstr "Berbers (Overige)"
+msgstr "Berbers (overig)"
 
 #. language code: bho
 #: zypp/LanguageCode.cc:267
@@ -1667,7 +1667,7 @@ msgstr "Siksika"
 #. language code: bnt
 #: zypp/LanguageCode.cc:279
 msgid "Bantu (Other)"
-msgstr "Bantu (Overige)"
+msgstr "Bantu (overig)"
 
 #. language code: bos bs
 #: zypp/LanguageCode.cc:281
@@ -1722,7 +1722,7 @@ msgstr "Caddo"
 #. language code: cai
 #: zypp/LanguageCode.cc:303
 msgid "Central American Indian (Other)"
-msgstr "Centraal-Amerikaans Indiaans (Overige)"
+msgstr "Centraal-Amerikaans Indiaans (overig)"
 
 #. language code: car
 #: zypp/LanguageCode.cc:305
@@ -1737,7 +1737,7 @@ msgstr "Catalaans"
 #. language code: cau
 #: zypp/LanguageCode.cc:309
 msgid "Caucasian (Other)"
-msgstr "Kaukasisch (Overige)"
+msgstr "Kaukasisch (overig)"
 
 #. language code: ceb
 #: zypp/LanguageCode.cc:311
@@ -1747,7 +1747,7 @@ msgstr "Cebuano"
 #. language code: cel
 #: zypp/LanguageCode.cc:313
 msgid "Celtic (Other)"
-msgstr "Keltisch (Overige)"
+msgstr "Keltisch (overig)"
 
 #. language code: cha ch
 #: zypp/LanguageCode.cc:315
@@ -1879,7 +1879,7 @@ msgstr "Kasjoebisch"
 #. language code: cus
 #: zypp/LanguageCode.cc:367
 msgid "Cushitic (Other)"
-msgstr "Cusjitisch (Overige)"
+msgstr "Cusjitisch (overig)"
 
 #. language code: cze ces cs
 #: zypp/LanguageCode.cc:369 zypp/LanguageCode.cc:371
@@ -1939,7 +1939,7 @@ msgstr "Dogri"
 #. language code: dra
 #: zypp/LanguageCode.cc:393
 msgid "Dravidian (Other)"
-msgstr "Dravidiaans (Overige)"
+msgstr "Dravidiaans (overig)"
 
 #. language code: dsb
 #: zypp/LanguageCode.cc:395
@@ -2044,7 +2044,7 @@ msgstr "Fijisch"
 #. language code: fil
 #: zypp/LanguageCode.cc:437
 msgid "Filipino"
-msgstr "Filipino"
+msgstr "Filipijns"
 
 #. language code: fin fi
 #: zypp/LanguageCode.cc:439
@@ -2054,7 +2054,7 @@ msgstr "Fins"
 #. language code: fiu
 #: zypp/LanguageCode.cc:441
 msgid "Finno-Ugrian (Other)"
-msgstr "Fins-Oegrisch (Overige)"
+msgstr "Fins-Oegrisch (overig)"
 
 #. language code: fon
 #: zypp/LanguageCode.cc:443
@@ -2109,7 +2109,7 @@ msgstr "Gbaya"
 #. language code: gem
 #: zypp/LanguageCode.cc:465
 msgid "Germanic (Other)"
-msgstr "Germaans (Overige)"
+msgstr "Germaans (overig)"
 
 #. language code: geo kat ka
 #: zypp/LanguageCode.cc:467 zypp/LanguageCode.cc:469
@@ -2334,7 +2334,7 @@ msgstr "Interlingua (International Auxiliary Language Association)"
 #. language code: inc
 #: zypp/LanguageCode.cc:563
 msgid "Indic (Other)"
-msgstr "Indisch (Overige)"
+msgstr "Indisch (overig)"
 
 #. language code: ind id
 #: zypp/LanguageCode.cc:565
@@ -2344,7 +2344,7 @@ msgstr "Indonesisch"
 #. language code: ine
 #: zypp/LanguageCode.cc:567
 msgid "Indo-European (Other)"
-msgstr "Indo-Europees (Overige)"
+msgstr "Indo-Europees (overig)"
 
 #. language code: inh
 #: zypp/LanguageCode.cc:569
@@ -2359,7 +2359,7 @@ msgstr "Inupiak"
 #. language code: ira
 #: zypp/LanguageCode.cc:573
 msgid "Iranian (Other)"
-msgstr "Iraans (Overige)"
+msgstr "Iraans (overig)"
 
 #. language code: iro
 #: zypp/LanguageCode.cc:575
@@ -2464,7 +2464,7 @@ msgstr "Khasi"
 #. language code: khi
 #: zypp/LanguageCode.cc:615
 msgid "Khoisan (Other)"
-msgstr "Khoisaans (Overige)"
+msgstr "Khoisaans (overig)"
 
 #. language code: khm km
 #: zypp/LanguageCode.cc:617
@@ -2709,7 +2709,7 @@ msgstr "Maori"
 #. language code: map
 #: zypp/LanguageCode.cc:717
 msgid "Austronesian (Other)"
-msgstr "Austronesisch (Overige)"
+msgstr "Austronesisch (overig)"
 
 #. language code: mar mr
 #: zypp/LanguageCode.cc:719
@@ -2764,7 +2764,7 @@ msgstr "Diverse talen"
 #. language code: mkh
 #: zypp/LanguageCode.cc:741
 msgid "Mon-Khmer (Other)"
-msgstr "Mon-Khmer (Overige)"
+msgstr "Mon-Khmer (overig)"
 
 #. language code: mlg mg
 #: zypp/LanguageCode.cc:743
@@ -2904,7 +2904,7 @@ msgstr "Niaas"
 #. language code: nic
 #: zypp/LanguageCode.cc:799
 msgid "Niger-Kordofanian (Other)"
-msgstr "Niger-Kordofaniaans (Overige)"
+msgstr "Niger-Kordofaniaans (overig)"
 
 #. language code: niu
 #: zypp/LanguageCode.cc:801
@@ -3019,7 +3019,7 @@ msgstr "Otomi-talen"
 #. language code: paa
 #: zypp/LanguageCode.cc:845
 msgid "Papuan (Other)"
-msgstr "Papuaans (Overige)"
+msgstr "Papuaans (overig)"
 
 #. language code: pag
 #: zypp/LanguageCode.cc:847
@@ -3064,7 +3064,7 @@ msgstr "Perzisch"
 #. language code: phi
 #: zypp/LanguageCode.cc:865
 msgid "Philippine (Other)"
-msgstr "Filipijns (Overige)"
+msgstr "Filipijns (overig)"
 
 #. language code: phn
 #: zypp/LanguageCode.cc:867
@@ -3129,7 +3129,7 @@ msgstr "Rarotongaans"
 #. language code: roa
 #: zypp/LanguageCode.cc:891
 msgid "Romance (Other)"
-msgstr "Romaans (Overige)"
+msgstr "Romaans (overig)"
 
 #. language code: roh rm
 #: zypp/LanguageCode.cc:893
@@ -3174,7 +3174,7 @@ msgstr "Jakoets"
 #. language code: sai
 #: zypp/LanguageCode.cc:911
 msgid "South American Indian (Other)"
-msgstr "Zuid-Amerikaans Indiaans (Overige)"
+msgstr "Zuid-Amerikaans Indiaans (overig)"
 
 #. language code: sal
 #: zypp/LanguageCode.cc:913
@@ -3229,7 +3229,7 @@ msgstr "Sulkoeps"
 #. language code: sem
 #: zypp/LanguageCode.cc:937
 msgid "Semitic (Other)"
-msgstr "Semitisch (Overige)"
+msgstr "Semitisch (overig)"
 
 #. language code: sga
 #: zypp/LanguageCode.cc:939
@@ -3264,12 +3264,12 @@ msgstr "Siouaanse talen"
 #. language code: sit
 #: zypp/LanguageCode.cc:951
 msgid "Sino-Tibetan (Other)"
-msgstr "Sino-Tibetaans (Overige)"
+msgstr "Sino-Tibetaans (overig)"
 
 #. language code: sla
 #: zypp/LanguageCode.cc:953
 msgid "Slavic (Other)"
-msgstr "Slavisch (Overige)"
+msgstr "Slavisch (overig)"
 
 #. language code: slo slk sk
 #: zypp/LanguageCode.cc:955 zypp/LanguageCode.cc:957
@@ -3369,7 +3369,7 @@ msgstr "Serer"
 #. language code: ssa
 #: zypp/LanguageCode.cc:995
 msgid "Nilo-Saharan (Other)"
-msgstr "Nilo-Saharaans (Overige)"
+msgstr "Nilo-Saharaans (overig)"
 
 #. language code: ssw ss
 #: zypp/LanguageCode.cc:997
@@ -3419,7 +3419,7 @@ msgstr "Tahitisch"
 #. language code: tai
 #: zypp/LanguageCode.cc:1015
 msgid "Tai (Other)"
-msgstr "Tai (Overige)"
+msgstr "Tai (overig)"
 
 #. language code: tam ta
 #: zypp/LanguageCode.cc:1017
@@ -3554,7 +3554,7 @@ msgstr "Turks"
 #. language code: tut
 #: zypp/LanguageCode.cc:1073
 msgid "Altaic (Other)"
-msgstr "Altaïsch (Overige)"
+msgstr "Altaïsch (overig)"
 
 #. language code: twi tw
 #: zypp/LanguageCode.cc:1077
@@ -3738,7 +3738,7 @@ msgstr "Zuni"
 
 #: zypp/ProblemSolution.cc:114
 msgid "Following actions will be done:"
-msgstr "De volgende acties zullen uitgevoerd worden:"
+msgstr "De volgende acties worden uitgevoerd:"
 
 #. translators: an annotation to a gpg keys expiry date
 #: zypp/PublicKey.cc:60
@@ -3770,7 +3770,7 @@ msgstr "(VERLOPEN)"
 #. translators: an annotation to a gpg keys expiry date
 #: zypp/PublicKey.cc:92
 msgid "(expires within 24h)"
-msgstr "(verloopt binnen 24u)"
+msgstr "(verloopt binnen 24 uur)"
 
 #. translators: an annotation to a gpg keys expiry date
 #: zypp/PublicKey.cc:96
@@ -3783,7 +3783,7 @@ msgstr[1] "(verloopt binnen %d dagen)"
 #: zypp/RepoManager.cc:312
 #, boost-format
 msgid "Cannot read repo directory '%1%': Permission denied"
-msgstr "Kan map '%1%' van installatiebron niet lezen: Toegang geweigerd"
+msgstr "Kan map '%1%' van opslagruimte niet lezen: Toegang geweigerd"
 
 #. TranslatorExplanation '%s' is a pathname
 #: zypp/RepoManager.cc:320 zypp/RepoManager.cc:789 zypp/RepoManager.cc:1541
@@ -3795,12 +3795,11 @@ msgstr "Het lezen van map '%s' is mislukt"
 #: zypp/RepoManager.cc:330
 #, boost-format
 msgid "Cannot read repo file '%1%': Permission denied"
-msgstr "Kan installatiebronbestand '%1%' niet lezen: Toegang geweigerd"
+msgstr "Kan opslagruimtebestand '%1%' niet lezen: Toegang geweigerd"
 
 #: zypp/RepoManager.cc:353
 msgid "Repository alias cannot start with dot."
-msgstr ""
-"De alias van van een installatiebron mag niet met een punt (.) beginnen."
+msgstr "De alias van van een opslagruimte mag niet met een punt (.) beginnen."
 
 #: zypp/RepoManager.cc:364
 msgid "Service alias cannot start with dot."
@@ -3819,8 +3818,7 @@ msgstr "Kan bestand '%s' niet openen voor schrijven."
 #: zypp/RepoManager.cc:871
 #, boost-format
 msgid "Unknown service '%1%': Removing orphaned service repository '%2%'"
-msgstr ""
-"Onbekende service '%1%': Verweesde installatiebron '%2%' aan het verwijderen"
+msgstr "Onbekende service '%1%': Verweesde opslagruimte  '%2%' verwijderen"
 
 #. we will throw this later if no URL checks out fine
 #: zypp/RepoManager.cc:1098
@@ -3841,7 +3839,7 @@ msgstr "Kan map voor metadata-cache niet aanmaken."
 #: zypp/RepoManager.cc:1300
 #, c-format, boost-format
 msgid "Building repository '%s' cache"
-msgstr "Cache van installatiebron '%s' wordt gebouwd"
+msgstr "Cache van opslagruimte '%s' wordt gebouwd"
 
 #: zypp/RepoManager.cc:1320
 #, c-format, boost-format
@@ -3851,11 +3849,11 @@ msgstr "Kan cache in %s niet aanmaken - geen toegangsrechten."
 #: zypp/RepoManager.cc:1384
 #, c-format, boost-format
 msgid "Failed to cache repo (%d)."
-msgstr "Kan installatiebron (%d) niet opslaan in de cache."
+msgstr "Kan opslagruimte (%d) niet opslaan in de cache."
 
 #: zypp/RepoManager.cc:1395
 msgid "Unhandled repository type"
-msgstr "Niet behandeld type installatiebron"
+msgstr "Niet behandeld type opslagruimte"
 
 #. prepare exception to be thrown if the type could not be determined
 #. due to a media exception. We can't throw right away, because of some
@@ -3877,18 +3875,18 @@ msgstr "Onbekende fout bij lezen van '%s'"
 #: zypp/RepoManager.cc:1623
 #, c-format, boost-format
 msgid "Adding repository '%s'"
-msgstr "Installatiebron '%s' wordt toegevoegd"
+msgstr "Opslagruimte '%s' wordt toegevoegd"
 
 #. TranslatorExplanation '%s' is an URL
 #: zypp/RepoManager.cc:1711
 #, c-format, boost-format
 msgid "Invalid repo file name at '%s'"
-msgstr "Ongeldige naam van installatiebronbestand bij '%s'"
+msgstr "Ongeldige naam van opslagruimtebestand bij '%s'"
 
 #: zypp/RepoManager.cc:1752
 #, c-format, boost-format
 msgid "Removing repository '%s'"
-msgstr "Installatiebron '%s' wordt verwijderd"
+msgstr "Opslagruimte '%s' wordt verwijderd"
 
 #: zypp/RepoManager.cc:1771 zypp/RepoManager.cc:1849
 msgid "Can't figure out where the repo is stored."
@@ -4263,11 +4261,11 @@ msgstr "Service-plug-in ondersteunt geen wijzigen van een attribuut."
 #: zypp/repo/RepoProvideFile.cc:261
 #, c-format, boost-format
 msgid "Can't provide file '%s' from repository '%s'"
-msgstr "Kan bestand '%s' niet leveren uit installatiebron '%s'"
+msgstr "Kan bestand '%s' niet leveren uit opslagruimte '%s'"
 
 #: zypp/repo/RepoProvideFile.cc:267
 msgid "No url in repository."
-msgstr "Geen url in bron."
+msgstr "Geen URL in opslagruimte."
 
 #. [lhs][rhs] 0 = installed; 1 = to be installed
 #. TranslatorExplanation %1%(filename) %2%(package1) %3%(package2)
@@ -4432,7 +4430,7 @@ msgstr "negeer normaliter enige afhankelijkheden"
 #: zypp/solver/detail/SATResolver.cc:979
 #, c-format, boost-format
 msgid "%s does not belong to a distupgrade repository"
-msgstr "%s behoort niet tot een installatiebron voor distributieopwaardering"
+msgstr "%s behoort niet tot een opslagruimte voor distributie-upgrade"
 
 #: zypp/solver/detail/SATResolver.cc:983
 #, c-format, boost-format
@@ -4459,7 +4457,7 @@ msgstr "Niets levert het gevraagde %s"
 
 #: zypp/solver/detail/SATResolver.cc:997 zypp/solver/detail/SATResolver.cc:1001
 msgid "Have you enabled all requested repositories?"
-msgstr "Hebt u alle vereiste installatiebronnen ingeschakeld?"
+msgstr "Hebt u alle vereiste opslagruimtes ingeschakeld?"
 
 #: zypp/solver/detail/SATResolver.cc:1000
 #, c-format, boost-format
@@ -4598,12 +4596,12 @@ msgstr "verouderde %s handhaven"
 #: zypp/solver/detail/SATResolver.cc:1302
 #, c-format, boost-format
 msgid "install %s from excluded repository"
-msgstr "%s installeren uit een uitgesloten installatiebron"
+msgstr "%s installeren uit een uitgesloten opslagruimte"
 
 #: zypp/solver/detail/SATResolver.cc:1322
 #, c-format, boost-format
 msgid "downgrade of %s to %s"
-msgstr "waardeer %s af tot %s"
+msgstr "downgrade %s tot %s"
 
 #: zypp/solver/detail/SATResolver.cc:1329
 #, c-format, boost-format
index 4919a50..ed72bfd 100644 (file)
@@ -252,6 +252,7 @@ SET( zypp_base_HEADERS
   base/Iterable.h
   base/Iterator.h
   base/Json.h
+  base/LocaleGuard.h
   base/LogControl.h
   base/LogTools.h
   base/Logger.h
@@ -931,7 +932,7 @@ TARGET_LINK_LIBRARIES(zypp ${GETTEXT_LIBRARIES} )
 TARGET_LINK_LIBRARIES(zypp ${CURL_LIBRARIES} )
 TARGET_LINK_LIBRARIES(zypp ${LIBXML2_LIBRARIES} )
 TARGET_LINK_LIBRARIES(zypp ${ZLIB_LIBRARY} )
-TARGET_LINK_LIBRARIES(zypp ${LibSolv_LIBRARIES} ${EXPAT_LIBRARY})
+TARGET_LINK_LIBRARIES(zypp ${LibSolv_LIBRARIES} )
 TARGET_LINK_LIBRARIES(zypp ${OPENSSL_LIBRARIES} )
 TARGET_LINK_LIBRARIES(zypp ${CRYPTO_LIBRARIES} )
 TARGET_LINK_LIBRARIES(zypp ${SIGNALS_LIBRARY} )
index 2d9edfc..e0bce7a 100644 (file)
@@ -210,7 +210,7 @@ namespace zypp
           const std::streamsize got = zReadTo( &(_buffer[0]), _buffer.size() );
           if ( got > 0 )
             {
-              setg( &(_buffer[0]), &(_buffer[0]), &(_buffer[got]) );
+              setg( &(_buffer[0]), &(_buffer[0]), &(_buffer.data()[got]) );
               ret = traits_type::to_int_type( *gptr() );
             }
           else if ( got == 0 )
diff --git a/zypp/base/LocaleGuard.h b/zypp/base/LocaleGuard.h
new file mode 100644 (file)
index 0000000..79fc072
--- /dev/null
@@ -0,0 +1,66 @@
+/*---------------------------------------------------------------------\
+|                          ____ _   __ __ ___                          |
+|                         |__  / \ / / . \ . \                         |
+|                           / / \ V /|  _/  _/                         |
+|                          / /__ | | | | | |                           |
+|                         /_____||_| |_| |_|                           |
+|                                                                      |
+\---------------------------------------------------------------------*/
+/** \file      zypp/base/LocaleGuard.h
+ */
+#ifndef ZYPP_BASE_LOCALEGUARD_H
+#define ZYPP_BASE_LOCALEGUARD_H
+
+#include <locale.h>
+#include <string>
+
+#include "zypp/base/Easy.h"
+
+///////////////////////////////////////////////////////////////////
+namespace zypp
+{
+  ///////////////////////////////////////////////////////////////////
+  /// \class LocaleGuard
+  /// \brief Temorarily change a locale category value
+  /// \ingroup g_RAII
+  ///////////////////////////////////////////////////////////////////
+  class LocaleGuard
+  {
+    NON_COPYABLE(LocaleGuard);
+    NON_MOVABLE(LocaleGuard);
+
+  public:
+    /** Ctor saving the current locale category value. */
+    LocaleGuard( int category_r, const std::string & value_r = "C" )
+    : _category( -1 )
+    {
+      const char * ovalue = ::setlocale( category_r, nullptr );
+      if ( ovalue && ovalue != value_r )
+      {
+       _category = category_r;
+       _value    = ovalue;
+       ::setlocale( _category, value_r.c_str() );
+      }
+    }
+
+    /** Dtor asserts the saved locale category value is restored. */
+    ~LocaleGuard()
+    { restore(); }
+
+    /** immediately restore the saved locale category value. */
+    void restore()
+    {
+      if ( _category != -1 )
+      {
+       ::setlocale( _category, _value.c_str() );
+       _category = -1;
+      }
+    }
+
+  private:
+    int         _category;     ///< saved category or -1 if no restore needed
+    std::string _value;                ///< saved category value
+  };
+} // namespace zypp
+///////////////////////////////////////////////////////////////////
+#endif // ZYPP_BASE_LOCALEGUARD_H
index c33673a..57ccd58 100644 (file)
@@ -14,7 +14,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <expat.h>
 
 #include <vector>
 #include <iostream>
index bf937db..82612e4 100644 (file)
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <expat.h>
 
 #include <vector>
 #include <algorithm>
 #include <iostream>
 #include <fstream>
 
+#include <libxml2/libxml/SAX2.h>
+
 using namespace std;
 using namespace zypp::base;
 
@@ -86,13 +87,13 @@ struct ml_url {
   string url;
 };
 
-static void XMLCALL startElement(void *userData, const char *name, const char **atts);
-static void XMLCALL endElement(void *userData, const char *name);
-static void XMLCALL characterData(void *userData, const XML_Char *s, int len);
+static void XMLCALL startElement(void *userData, const xmlChar *name, const xmlChar **atts);
+static void XMLCALL endElement(void *userData, const xmlChar *name);
+static void XMLCALL characterData(void *userData, const xmlChar *s, int len);
 
 struct ml_parsedata : private zypp::base::NonCopyable {
   ml_parsedata()
-    : parser( XML_ParserCreate(NULL) )
+    : parser( nullptr )
     , depth( 0 )
     , state( STATE_START )
     , statedepth( 0 )
@@ -121,18 +122,27 @@ struct ml_parsedata : private zypp::base::NonCopyable {
        swtab[sw->from] = sw;
       sbtab[sw->to] = sw->from;
     }
-    XML_SetUserData(parser, this);
-    XML_SetElementHandler(parser, startElement, endElement);
-    XML_SetCharacterDataHandler(parser, characterData);
+
+    xmlSAXHandler sax;
+    memset(&sax, 0, sizeof(sax));
+    sax.startElement = startElement;
+    sax.endElement = endElement;
+    sax.characters = characterData;
+
+    //internally creates a copy of xmlSaxHandler, so having it as local variable is save
+    parser = xmlCreatePushParserCtxt(&sax, this, NULL, 0, NULL);
   }
 
   ~ml_parsedata()
   {
-    XML_ParserFree(parser);
+    if (parser) {
+      xmlFreeParserCtxt(parser);
+      parser = nullptr;
+    }
     free(content);
   }
 
-  XML_Parser parser;
+  xmlParserCtxtPtr parser;
   int depth;
   enum state state;
   int statedepth;
@@ -164,18 +174,22 @@ struct ml_parsedata : private zypp::base::NonCopyable {
 };
 
 static const char *
-find_attr(const char *txt, const char **atts)
+find_attr(const char *txt, const xmlChar **atts)
 {
+  if(!atts) {
+    return 0;
+  }
+
   for (; *atts; atts += 2)
     {
-      if (!strcmp(*atts, txt))
-        return atts[1];
+      if (!strcmp(reinterpret_cast<const char*>(*atts), txt))
+        return reinterpret_cast<const char*>(atts[1]);
     }
   return 0;
 }
 
 static void XMLCALL
-startElement(void *userData, const char *name, const char **atts)
+startElement(void *userData, const xmlChar *name, const xmlChar **atts)
 {
   struct ml_parsedata *pd = reinterpret_cast<struct ml_parsedata *>(userData);
   struct stateswitch *sw;
@@ -188,7 +202,7 @@ startElement(void *userData, const char *name, const char **atts)
   if (!pd->swtab[pd->state])
     return;
   for (sw = pd->swtab[pd->state]; sw->from == pd->state; sw++)  /* find name in statetable */
-    if (sw->ename == name)
+    if (sw->ename == reinterpret_cast<const char *>(name))
       break;
   if (sw->from != pd->state)
     return;
@@ -313,7 +327,7 @@ hexstr2bytes(unsigned char *buf, const char *str, int buflen)
 }
 
 static void XMLCALL
-endElement(void *userData, const char *name)
+endElement(void *userData, const xmlChar *name)
 {
   struct ml_parsedata *pd = reinterpret_cast<struct ml_parsedata *>(userData);
   // printf("end depth %d-%d name %s\n", pd->depth, pd->statedepth, name);
@@ -383,7 +397,7 @@ endElement(void *userData, const char *name)
 }
 
 static void XMLCALL
-characterData(void *userData, const XML_Char *s, int len)
+characterData(void *userData, const xmlChar *s, int len)
 {
   struct ml_parsedata *pd = reinterpret_cast<struct ml_parsedata *>(userData);
   int l;
@@ -438,8 +452,10 @@ MetaLinkParser::parseBytes(const char *buf, size_t len)
 {
   if (!len)
     return;
-  if (XML_Parse(pd->parser, buf, len, 0) == XML_STATUS_ERROR)
+
+  if (xmlParseChunk(pd->parser, buf, len, 0)) {
     ZYPP_THROW(Exception("Parse Error"));
+  }
 }
 
 static bool urlcmp(const ml_url &a, const ml_url &b)
@@ -450,8 +466,9 @@ static bool urlcmp(const ml_url &a, const ml_url &b)
 void
 MetaLinkParser::parseEnd()
 {
-  if (XML_Parse(pd->parser, 0, 0, 1) == XML_STATUS_ERROR)
+  if (xmlParseChunk(pd->parser, NULL, 0, 1)) {
     ZYPP_THROW(Exception("Parse Error"));
+  }
   if (pd->nurls)
     stable_sort(pd->urls.begin(), pd->urls.end(), urlcmp);
 }
index 1d07a0c..3b9da6a 100644 (file)
@@ -32,6 +32,7 @@ extern "C"
 #include "zypp/base/Logger.h"
 #include "zypp/base/String.h"
 #include "zypp/base/Gettext.h"
+#include "zypp/base/LocaleGuard.h"
 
 #include "zypp/Date.h"
 #include "zypp/Pathname.h"
@@ -1536,7 +1537,9 @@ namespace
     qva.qva_flags = (VERIFY_DIGEST|VERIFY_SIGNATURE);
 
     RpmlogCapture vresult;
+    LocaleGuard guard( LC_ALL, "C" );  // bsc#1076415: rpm log output is localized, but we need to parse it :(
     int res = ::rpmVerifySignatures( &qva, ts, fd, path_r.basename().c_str() );
+    guard.restore();
 
     ts = rpmtsFree(ts);
     ::Fclose( fd );