Hello community,

here is the log from the commit of package libzypp for openSUSE:Factory checked 
in at 2016-08-03 11:37:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libzypp (Old)
 and      /work/SRC/openSUSE:Factory/.libzypp.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libzypp"

Changes:
--------
--- /work/SRC/openSUSE:Factory/libzypp/libzypp.changes  2016-07-21 
07:53:58.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libzypp.new/libzypp.changes     2016-08-03 
11:37:34.000000000 +0200
@@ -1,0 +2,13 @@
+Thu Jul 21 13:09:33 CEST 2016 - m...@suse.de
+
+- Rebuild .solv-files not matching the parsers LIBSOLV_TOOLVERSION
+- BuildRequires:  libsolv-devel >= 0.6.23
+- version 16.2.1 (0)
+
+-------------------------------------------------------------------
+Mon Jul 18 16:36:25 CEST 2016 - m...@suse.de
+
+- Product: Offer tri-state hasEndOfLife details (FATE#320699)
+- version 16.2.0 (0)
+
+-------------------------------------------------------------------

Old:
----
  libzypp-16.1.3.tar.bz2

New:
----
  libzypp-16.2.1.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libzypp.spec ++++++
--- /var/tmp/diff_new_pack.R7QFeB/_old  2016-08-03 11:37:35.000000000 +0200
+++ /var/tmp/diff_new_pack.R7QFeB/_new  2016-08-03 11:37:35.000000000 +0200
@@ -19,7 +19,7 @@
 %define force_gcc_46 0
 
 Name:           libzypp
-Version:        16.1.3
+Version:        16.2.1
 Release:        0
 Url:            git://gitorious.org/opensuse/libzypp.git
 Summary:        Package, Patch, Pattern, and Product Management
@@ -75,7 +75,7 @@
 BuildRequires:  pkg-config
 %endif
 
-BuildRequires:  libsolv-devel >= 0.6.19
+BuildRequires:  libsolv-devel >= 0.6.23
 %if 0%{?suse_version} >= 1100
 BuildRequires:  libsolv-tools
 %requires_eq    libsolv-tools

++++++ libzypp-16.1.3.tar.bz2 -> libzypp-16.2.1.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-16.1.3/VERSION.cmake 
new/libzypp-16.2.1/VERSION.cmake
--- old/libzypp-16.1.3/VERSION.cmake    2016-07-14 19:05:04.000000000 +0200
+++ new/libzypp-16.2.1/VERSION.cmake    2016-07-21 13:13:04.000000000 +0200
@@ -60,9 +60,9 @@
 #
 SET(LIBZYPP_MAJOR "16")
 SET(LIBZYPP_COMPATMINOR "0")
-SET(LIBZYPP_MINOR "1")
-SET(LIBZYPP_PATCH "3")
+SET(LIBZYPP_MINOR "2")
+SET(LIBZYPP_PATCH "1")
 #
-# LAST RELEASED: 16.1.3 (0)
+# LAST RELEASED: 16.2.1 (0)
 # (The number in parenthesis is LIBZYPP_COMPATMINOR)
 #=======
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-16.1.3/libzypp.spec.cmake 
new/libzypp-16.2.1/libzypp.spec.cmake
--- old/libzypp-16.1.3/libzypp.spec.cmake       2016-06-09 18:53:03.000000000 
+0200
+++ new/libzypp-16.2.1/libzypp.spec.cmake       2016-07-20 15:41:07.000000000 
+0200
@@ -75,7 +75,7 @@
 BuildRequires:  pkg-config
 %endif
 
-BuildRequires:  libsolv-devel >= 0.6.19
+BuildRequires:  libsolv-devel >= 0.6.23
 %if 0%{?suse_version} >= 1100
 BuildRequires:  libsolv-tools
 %requires_eq    libsolv-tools
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-16.1.3/package/libzypp.changes 
new/libzypp-16.2.1/package/libzypp.changes
--- old/libzypp-16.1.3/package/libzypp.changes  2016-07-14 19:05:04.000000000 
+0200
+++ new/libzypp-16.2.1/package/libzypp.changes  2016-07-21 13:13:04.000000000 
+0200
@@ -1,4 +1,17 @@
 -------------------------------------------------------------------
+Thu Jul 21 13:09:33 CEST 2016 - m...@suse.de
+
+- Rebuild .solv-files not matching the parsers LIBSOLV_TOOLVERSION
+- BuildRequires:  libsolv-devel >= 0.6.23
+- version 16.2.1 (0)
+
+-------------------------------------------------------------------
+Mon Jul 18 16:36:25 CEST 2016 - m...@suse.de
+
+- Product: Offer tri-state hasEndOfLife details (FATE#320699)
+- version 16.2.0 (0)
+
+-------------------------------------------------------------------
 Thu Jul 14 19:02:57 CEST 2016 - m...@suse.de
 
 - use more user friendly command names for "zypper ps" (bsc#980541)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-16.1.3/po/CMakeLists.txt 
new/libzypp-16.2.1/po/CMakeLists.txt
--- old/libzypp-16.1.3/po/CMakeLists.txt        2016-05-20 14:36:58.000000000 
+0200
+++ new/libzypp-16.2.1/po/CMakeLists.txt        2016-07-21 14:41:05.000000000 
+0200
@@ -56,13 +56,13 @@
 SET( SOURCE_POT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/${POT_NAME}.pot )
 
 ADD_CUSTOM_TARGET( translations ALL
-  COMMAND diff -u -I ^\#: -I ^.POT-Creation-Date: ${SOURCE_POT_FILE} 
${POT_FILE} | grep '^[+-][^\#]' || true
+  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/PotfileDiff.sh ${SOURCE_POT_FILE} 
${POT_FILE} | grep '^[+-][^+-]' || true
   DEPENDS ${GMO_FILES}
+  COMMENT ".pot file diff..."
 )
 
 ADD_CUSTOM_TARGET( potfile_update
-  COMMAND diff -q -I ^\#: -I ^.POT-Creation-Date: ${SOURCE_POT_FILE} 
${POT_FILE}
-       || ./PotfileUpadte.sh ${CMAKE_CURRENT_BINARY_DIR}
+  COMMAND ./PotfileDiff.sh ${SOURCE_POT_FILE} ${POT_FILE} -q || 
./PotfileUpadte.sh ${CMAKE_CURRENT_BINARY_DIR}
   WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
   DEPENDS translations
   COMMENT "Checking for uncommitted changes to the .pot file..."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-16.1.3/po/PotfileDiff.sh 
new/libzypp-16.2.1/po/PotfileDiff.sh
--- old/libzypp-16.1.3/po/PotfileDiff.sh        1970-01-01 01:00:00.000000000 
+0100
+++ new/libzypp-16.2.1/po/PotfileDiff.sh        2016-07-21 14:41:05.000000000 
+0200
@@ -0,0 +1,14 @@
+#! /bin/bash
+set -e
+function extract() { grep '^\(msgid\|"\)' "$1" | grep -v "POT-Creation-Date" | 
sort -u; }
+
+OLDTMP=$(mktemp)
+trap " [ -f \"$OLDTMP\" ] && /bin/rm -f -- \"$OLDTMP\" " 0 1 2 3 13 15
+extract "$1" >"$OLDTMP"
+
+NEWTMP=$(mktemp)
+trap " [ -f \"$NEWTMP\" ] && /bin/rm -f -- \"$NEWTMP\" " 0 1 2 3 13 15
+extract "$2" >"$NEWTMP"
+
+shift 2        # additional args for diff
+diff -u0 "$@" "$OLDTMP" "$NEWTMP"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-16.1.3/po/ar.po new/libzypp-16.2.1/po/ar.po
--- old/libzypp-16.1.3/po/ar.po 2016-07-11 20:01:06.000000000 +0200
+++ new/libzypp-16.2.1/po/ar.po 2016-07-17 15:01:05.000000000 +0200
@@ -13,7 +13,7 @@
 "Project-Id-Version: YaST (@memory@)\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2016-05-03 15:55+0200\n"
-"PO-Revision-Date: 2016-07-11 15:29+0000\n"
+"PO-Revision-Date: 2016-07-17 10:30+0000\n"
 "Last-Translator: George Yacoub <george.yac...@arabize.com>\n"
 "Language-Team: Arabic <https://l10n.opensuse.org/projects/libzypp/master/ar/>"
 "\n"
@@ -676,7 +676,7 @@
 #. :AFG:004:
 #: zypp/CountryCode.cc:161
 msgid "Antigua and Barbuda"
-msgstr "أنتيغوا و باربودا"
+msgstr "أنتيغوا وباربودا"
 
 #. :ATG:028:
 #: zypp/CountryCode.cc:162
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-16.1.3/po/el.po new/libzypp-16.2.1/po/el.po
--- old/libzypp-16.1.3/po/el.po 2016-07-11 04:01:05.000000000 +0200
+++ new/libzypp-16.2.1/po/el.po 2016-07-16 16:01:05.000000000 +0200
@@ -19,7 +19,7 @@
 "Project-Id-Version: zypp.el\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2016-05-03 15:55+0200\n"
-"PO-Revision-Date: 2016-07-10 23:49+0000\n"
+"PO-Revision-Date: 2016-07-16 11:02+0000\n"
 "Last-Translator: Michail Vourlakos <mvourla...@gmail.com>\n"
 "Language-Team: Greek <https://l10n.opensuse.org/projects/libzypp/master/el/>"
 "\n"
@@ -4488,7 +4488,7 @@
 #: zypp/solver/detail/SATResolver.cc:1318
 #, c-format, boost-format
 msgid "downgrade of %s to %s"
-msgstr "υποβάθμιση του %s από %s"
+msgstr "υποβάθμιση του %s σε %s"
 
 #: zypp/solver/detail/SATResolver.cc:1325
 #, c-format, boost-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-16.1.3/po/pt_BR.po 
new/libzypp-16.2.1/po/pt_BR.po
--- old/libzypp-16.1.3/po/pt_BR.po      2016-07-14 04:01:06.000000000 +0200
+++ new/libzypp-16.2.1/po/pt_BR.po      2016-07-19 21:01:07.000000000 +0200
@@ -14,7 +14,7 @@
 "Project-Id-Version: zypp\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2016-05-03 15:55+0200\n"
-"PO-Revision-Date: 2016-07-13 23:30+0000\n"
+"PO-Revision-Date: 2016-07-19 16:17+0000\n"
 "Last-Translator: Marcos Teofilo <mteof...@tesbrasil.com>\n"
 "Language-Team: Portuguese (Brazil) "
 "<https://l10n.opensuse.org/projects/libzypp/master/pt_BR/>\n"
@@ -52,7 +52,7 @@
 
 #: zypp/Url.cc:326 zypp/Url.cc:340
 msgid "Unable to parse Url components"
-msgstr "Não foi possível analisar os componentes do URL"
+msgstr "Não foi possível analisar os componentes da URL"
 
 #: zypp/thread/Mutex.cc:33
 msgid "Can't initialize mutex attributes"
@@ -114,7 +114,7 @@
 #: zypp/CheckSum.cc:136
 #, c-format, boost-format
 msgid "Dubious type '%s' for %u byte checksum '%s'"
-msgstr "Tipo '%s' duvidoso da checksum '%s' de  %u byte(s)"
+msgstr "Tipo '%s' duvidoso da soma de verificação '%s' de  %u byte(s)"
 
 #: zypp/target/TargetImpl.cc:310
 msgid " executed"
@@ -134,7 +134,7 @@
 
 #: zypp/target/TargetImpl.cc:459
 msgid " execution skipped while aborting"
-msgstr " execução ignorada durante a interrupção"
+msgstr " execução ignorada durante o cancelamento"
 
 #: zypp/target/TargetImpl.cc:514 zypp/target/TargetImpl.cc:534
 #: zypp/target/TargetImpl.cc:562 zypp/target/TargetImpl.cc:599
@@ -154,7 +154,8 @@
 
 #: zypp/target/hal/HalContext.cc:24
 msgid "Sorry, but this version of libzypp was built without HAL support."
-msgstr "Esta versão do libzypp foi criada sem o suporte ao HAL."
+msgstr ""
+"Desculpe, mas esta versão do libzypp foi compilada sem o suporte ao HAL."
 
 #: zypp/target/hal/HalContext.cc:117
 msgid "HalContext not connected"
@@ -220,7 +221,7 @@
 #: zypp/target/rpm/RpmDb.cc:2024
 #, c-format, boost-format
 msgid "rpm saved %s as %s, but it was impossible to determine the difference"
-msgstr "o rpm salvou %s como %s, mas não foi possível determinar a diferença"
+msgstr "o RPM salvou %s como %s, mas não foi possível determinar a diferença"
 
 #. %s = filenames
 #: zypp/target/rpm/RpmDb.cc:2026
@@ -282,12 +283,12 @@
 #. translators: possible rpm package signature check result [brief]
 #: zypp/target/rpm/RpmDb.cc:2373
 msgid "Signatures public key is not available"
-msgstr "A chave de assinatura pública não está disponível"
+msgstr "Chave pública das assinaturas não disponível"
 
 #. translators: possible rpm package signature check result [brief]
 #: zypp/target/rpm/RpmDb.cc:2375
 msgid "File does not exist or signature can't be checked"
-msgstr "O arquivo não existe ou a assinatura não pôde ser verificada"
+msgstr "O arquivo não existe ou a assinatura não pode ser verificada"
 
 #: zypp/ProblemSolution.cc:114
 msgid "Following actions will be done:"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-16.1.3/zypp/Product.cc 
new/libzypp-16.2.1/zypp/Product.cc
--- old/libzypp-16.1.3/zypp/Product.cc  2016-02-11 17:22:14.000000000 +0100
+++ new/libzypp-16.2.1/zypp/Product.cc  2016-07-18 16:41:07.000000000 +0200
@@ -214,6 +214,19 @@
   Date Product::endOfLife() const
   { return Date( lookupNumAttribute( sat::SolvAttr::productEndOfLife ) );}
 
+  bool Product::hasEndOfLife() const
+  { return( lookupNumAttribute( sat::SolvAttr::productEndOfLife, -1 ) != -1 ); 
}
+
+  bool Product::hasEndOfLife( Date & value ) const
+  {
+    Date res( lookupNumAttribute( sat::SolvAttr::productEndOfLife, -1 ) );
+    if ( res == -1 )
+      return false;
+    // else:
+    value = res;
+    return true;
+  }
+
   std::vector<Repository::ContentIdentifier> 
Product::updateContentIdentifier() const
   {
     std::vector<Repository::ContentIdentifier> ret;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-16.1.3/zypp/Product.h 
new/libzypp-16.2.1/zypp/Product.h
--- old/libzypp-16.1.3/zypp/Product.h   2016-02-11 17:22:14.000000000 +0100
+++ new/libzypp-16.2.1/zypp/Product.h   2016-07-18 16:41:07.000000000 +0200
@@ -97,9 +97,25 @@
     /** The product flags */
     std::list<std::string> flags() const;
 
-    /** The date when this Product goes out of support as indicated by it's 
medadata. */
+    /** The date when this Product goes out of support as indicated by it's 
medadata.
+     * Use \ref hasEOfLife if it's important to distinguish whether the value
+     * is not defined in the metadata, or defined but empty/invalid/TBD.
+     */
     Date endOfLife() const;
 
+    /** Return whether an EndOfLife value is actually defined in the metadata.
+     * A missing value (\c false) usually indicates that there will be no EOL,
+     * while an empty/invalid value indicates that there will be an  EOL date,
+     * but it's not yet known (FATE#320699).
+     */
+    bool hasEndOfLife() const;
+    /** \overload additionally returning the date (0 if TBD)
+     *         false, ( unchanged )    : no EOL
+     *         true,  ( 0 )            : EOL is still TBD
+     *         true,  ( !=0 )          : a valid EOL date
+     */
+    bool hasEndOfLife( Date & value ) const;
+
     /** ContentIdentifier of required update repositories. */
     std::vector<Repository::ContentIdentifier> updateContentIdentifier() const;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-16.1.3/zypp/RepoManager.cc 
new/libzypp-16.2.1/zypp/RepoManager.cc
--- old/libzypp-16.1.3/zypp/RepoManager.cc      2016-06-15 12:37:04.000000000 
+0200
+++ new/libzypp-16.2.1/zypp/RepoManager.cc      2016-07-21 13:13:04.000000000 
+0200
@@ -18,6 +18,8 @@
 #include <map>
 #include <algorithm>
 
+#include <solv/solvversion.h>
+
 #include "zypp/base/InputStream.h"
 #include "zypp/base/LogTools.h"
 #include "zypp/base/Gettext.h"
@@ -1574,19 +1576,13 @@
     {
       Repository repo = sat::Pool::instance().addRepoSolv( solvfile, info );
       // test toolversion in order to rebuild solv file in case
-      // it was written by an old libsolv-tool parser.
-      //
-      // Known version strings used:
-      //  - <no string>
-      //  - "1.0"
-      //
-      sat::LookupRepoAttr toolversion( sat::SolvAttr::repositoryToolVersion, 
repo );
-      if ( toolversion.begin().asString().empty() )
+      // it was written by a different libsolv-tool parser.
+      const std::string & toolversion( sat::LookupRepoAttr( 
sat::SolvAttr::repositoryToolVersion, repo ).begin().asString() );
+      if ( toolversion != LIBSOLV_TOOLVERSION )
       {
         repo.eraseFromPool();
-        ZYPP_THROW(Exception("Solv-file was created by old parser."));
+        ZYPP_THROW(Exception(str::Str() << "Solv-file was created by 
'"<<toolversion<<"'-parser (want "<<LIBSOLV_TOOLVERSION<<")."));
       }
-      // else: up-to-date (or even newer).
     }
     catch ( const Exception & exp )
     {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-16.1.3/zypp/base/String.h 
new/libzypp-16.2.1/zypp/base/String.h
--- old/libzypp-16.1.3/zypp/base/String.h       2016-06-21 14:33:05.000000000 
+0200
+++ new/libzypp-16.2.1/zypp/base/String.h       2016-07-21 15:37:05.000000000 
+0200
@@ -1027,14 +1027,23 @@
     /** Return whether \a str_r has prefix \a prefix_r. */
     inline bool hasPrefix( const C_Str & str_r, const C_Str & prefix_r )
     { return( ::strncmp( str_r, prefix_r, prefix_r.size() ) == 0 ); }
+    /** \overload Case insensitive */
+    inline bool hasPrefixCI( const C_Str & str_r, const C_Str & prefix_r )
+    { return( ::strncasecmp( str_r, prefix_r, prefix_r.size() ) == 0 ); }
 
     /** Strip a \a prefix_r from \a str_r and return the resulting string. */
     inline std::string stripPrefix( const C_Str & str_r, const C_Str & 
prefix_r )
     { return( hasPrefix( str_r, prefix_r ) ? str_r + prefix_r.size() : 
str_r.c_str() ); }
+    /** \overload Case insensitive */
+    inline std::string stripPrefixCI( const C_Str & str_r, const C_Str & 
prefix_r )
+    { return( hasPrefixCI( str_r, prefix_r ) ? str_r + prefix_r.size() : 
str_r.c_str() ); }
 
     /** Return whether \a str_r has suffix \a suffix_r. */
     inline bool hasSuffix( const C_Str & str_r, const C_Str & suffix_r )
     { return( str_r.size() >= suffix_r.size() && ::strncmp( str_r + 
str_r.size() - suffix_r.size() , suffix_r, suffix_r.size() ) == 0 ); }
+    /** \overload Case insensitive */
+    inline bool hasSuffixCI( const C_Str & str_r, const C_Str & suffix_r )
+    { return( str_r.size() >= suffix_r.size() && ::strncasecmp( str_r + 
str_r.size() - suffix_r.size() , suffix_r, suffix_r.size() ) == 0 ); }
 
     /** Strip a \a suffix_r from \a str_r and return the resulting string. */
     inline std::string stripSuffix( const C_Str & str_r, const C_Str & 
suffix_r )
@@ -1043,6 +1052,14 @@
         return std::string( str_r, str_r.size() - suffix_r.size() );
       return str_r.c_str();
     }
+    /** \overload Case insensitive */
+    inline std::string stripSuffixCI( const C_Str & str_r, const C_Str & 
suffix_r )
+    {
+      if ( hasSuffixCI( str_r, suffix_r ) )
+        return std::string( str_r, str_r.size() - suffix_r.size() );
+      return str_r.c_str();
+    }
+
     /** Return size of the common prefix of \a lhs and \a rhs. */
     inline std::string::size_type commonPrefix( const C_Str & lhs, const C_Str 
& rhs )
     {
@@ -1053,13 +1070,31 @@
       { ++lp, ++rp, ++ret; }
       return ret;
     }
+    /** \overload Case insensitive */
+    inline std::string::size_type commonPrefixCI( const C_Str & lhs, const 
C_Str & rhs )
+    {
+      const char * lp = lhs.c_str();
+      const char * rp = rhs.c_str();
+      std::string::size_type ret = 0;
+      while ( tolower(*lp) == tolower(*rp) && *lp != '\0' )
+      { ++lp, ++rp, ++ret; }
+      return ret;
+    }
+
 
     /** alias for \ref hasPrefix */
     inline bool startsWith( const C_Str & str_r, const C_Str & prefix_r )
     { return hasPrefix( str_r, prefix_r ); }
+    /** \overload Case insensitive */
+    inline bool startsWithCI( const C_Str & str_r, const C_Str & prefix_r )
+    { return hasPrefixCI( str_r, prefix_r ); }
+
     /** alias for \ref hasSuffix */
     inline bool endsWith( const C_Str & str_r, const C_Str & prefix_r )
     { return hasSuffix( str_r, prefix_r ); }
+    /** \overload Case insensitive */
+    inline bool endsWithCI( const C_Str & str_r, const C_Str & prefix_r )
+    { return hasSuffixCI( str_r, prefix_r ); }
     //@}
   } // namespace str
   ///////////////////////////////////////////////////////////////////
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-16.1.3/zypp/sat/Solvable.cc 
new/libzypp-16.2.1/zypp/sat/Solvable.cc
--- old/libzypp-16.1.3/zypp/sat/Solvable.cc     2016-02-11 17:22:14.000000000 
+0100
+++ new/libzypp-16.2.1/zypp/sat/Solvable.cc     2016-07-18 16:41:07.000000000 
+0200
@@ -155,6 +155,12 @@
       return ::solvable_lookup_num( _solvable, attr.id(), 0 );
     }
 
+    unsigned long long Solvable::lookupNumAttribute( const SolvAttr & attr, 
unsigned long long notfound_r ) const
+    {
+      NO_SOLVABLE_RETURN( notfound_r );
+      return ::solvable_lookup_num( _solvable, attr.id(), notfound_r );
+    }
+
     bool Solvable::lookupBoolAttribute( const SolvAttr & attr ) const
     {
       NO_SOLVABLE_RETURN( false );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-16.1.3/zypp/sat/Solvable.h 
new/libzypp-16.2.1/zypp/sat/Solvable.h
--- old/libzypp-16.1.3/zypp/sat/Solvable.h      2016-02-11 17:22:14.000000000 
+0100
+++ new/libzypp-16.2.1/zypp/sat/Solvable.h      2016-07-18 16:41:07.000000000 
+0200
@@ -337,6 +337,8 @@
        * or 0 if it does not exists.
        */
       unsigned long long lookupNumAttribute( const SolvAttr & attr ) const;
+      /** \overload returning custom notfound_r value */
+      unsigned long long lookupNumAttribute( const SolvAttr & attr, unsigned 
long long notfound_r ) const;
 
       /**
        * returns the boolean attribute value for \ref attr
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-16.1.3/zypp/sat/SolvableType.h 
new/libzypp-16.2.1/zypp/sat/SolvableType.h
--- old/libzypp-16.1.3/zypp/sat/SolvableType.h  2016-02-11 17:22:14.000000000 
+0100
+++ new/libzypp-16.2.1/zypp/sat/SolvableType.h  2016-07-18 16:41:07.000000000 
+0200
@@ -133,6 +133,7 @@
       bool             lookupBoolAttribute( const SolvAttr & attr ) const      
{ return satSolvable().lookupBoolAttribute( attr ); }
       detail::IdType   lookupIdAttribute( const SolvAttr & attr ) const        
{ return satSolvable().lookupIdAttribute( attr ); }
       unsigned long long lookupNumAttribute( const SolvAttr & attr ) const     
{ return satSolvable().lookupNumAttribute( attr ); }
+      unsigned long long lookupNumAttribute( const SolvAttr & attr, unsigned 
long long notfound_r ) const      { return satSolvable().lookupNumAttribute( 
attr, notfound_r ); }
       CheckSum         lookupCheckSumAttribute( const SolvAttr & attr ) const  
{ return satSolvable().lookupCheckSumAttribute( attr ); }
       OnMediaLocation  lookupLocation() const                  { return 
satSolvable().lookupLocation(); }
       Solvable::IdType id() const                                      { 
return satSolvable().id(); }


Reply via email to