Hello community,
here is the log from the commit of package libzypp
checked in at Mon Aug 20 17:34:21 CEST 2007.
--------
--- libzypp/libzypp.changes 2007-08-17 12:34:25.000000000 +0200
+++ /mounts/work_src_done/STABLE/libzypp/libzypp.changes 2007-08-20 14:30:03.083317000 +0200
@@ -1,0 +2,7 @@
+Mon Aug 20 13:21:34 CEST 2007 - kkaempf@suse.de
+
+- unify query API for kind and name, summary, description
+ (incomplete)
+- rev 6761, version 3.18.13
+
+-------------------------------------------------------------------
Old:
----
libzypp-3.17.0.tar.bz2
New:
----
libzypp-3.18.0.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libzypp.spec ++++++
--- /var/tmp/diff_new_pack.r11865/_old 2007-08-20 17:34:08.000000000 +0200
+++ /var/tmp/diff_new_pack.r11865/_new 2007-08-20 17:34:08.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package libzypp (Version 3.17.0)
+# spec file for package libzypp (Version 3.18.0)
#
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -16,9 +16,9 @@
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Autoreqprov: on
Summary: Package, Patch, Pattern, and Product Management
-Version: 3.17.0
+Version: 3.18.0
Release: 1
-Source: libzypp-3.17.0.tar.bz2
+Source: libzypp-3.18.0.tar.bz2
Source1: libzypp-rpmlintrc
Prefix: /usr
Provides: yast2-packagemanager
@@ -44,7 +44,7 @@
Ladislav Slezak
%package devel
-Requires: libzypp == 3.17.0
+Requires: libzypp == 3.18.0
Requires: libxml2-devel curl-devel openssl-devel rpm-devel glibc-devel zlib-devel
Requires: bzip2 popt-devel dbus-1-devel glib2-devel hal-devel boost-devel libstdc++-devel
Requires: cmake
@@ -125,6 +125,10 @@
%{_libdir}/pkgconfig/libzypp.pc
%changelog
+* Mon Aug 20 2007 - kkaempf@suse.de
+- unify query API for kind and name, summary, description
+ (incomplete)
+- rev 6761, version 3.18.13
* Fri Aug 17 2007 - kkaempf@suse.de
- add iterateResolvablesByKindsAndName
- rev 6735, version 3.17.13
++++++ libzypp-3.17.0.tar.bz2 -> libzypp-3.18.0.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.17.0/package/libzypp.changes new/libzypp-3.18.0/package/libzypp.changes
--- old/libzypp-3.17.0/package/libzypp.changes 2007-08-17 12:32:28.000000000 +0200
+++ new/libzypp-3.18.0/package/libzypp.changes 2007-08-20 14:28:38.000000000 +0200
@@ -1,4 +1,11 @@
-------------------------------------------------------------------
+Mon Aug 20 13:21:34 CEST 2007 - kkaempf@suse.de
+
+- unify query API for kind and name, summary, description
+ (incomplete)
+- rev 6761, version 3.18.13
+
+-------------------------------------------------------------------
Fri Aug 17 12:30:55 CEST 2007 - kkaempf@suse.de
- add iterateResolvablesByKindsAndName
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.17.0/svn-commit.tmp new/libzypp-3.18.0/svn-commit.tmp
--- old/libzypp-3.17.0/svn-commit.tmp 2007-08-17 12:32:29.000000000 +0200
+++ new/libzypp-3.18.0/svn-commit.tmp 1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-bump
---This line, and those below, will be ignored--
-
-M package/libzypp.changes
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.17.0/tests/cache/CacheStore_test.cc new/libzypp-3.18.0/tests/cache/CacheStore_test.cc
--- old/libzypp-3.17.0/tests/cache/CacheStore_test.cc 2007-08-17 12:32:29.000000000 +0200
+++ new/libzypp-3.18.0/tests/cache/CacheStore_test.cc 2007-08-20 14:28:39.000000000 +0200
@@ -66,11 +66,11 @@
BOOST_CHECK_EQUAL( p->license(), "BSD License and BSD-like, GNU General Public License (GPL)");
BOOST_CHECK_EQUAL( p->location().checksum(), CheckSum("sha1", "05f0647241433d01636785fd282cc824a6527269"));
BOOST_CHECK_EQUAL( p->location().filename(), Pathname("./suse/i586/kdelibs3-3.5.7-24.i586.rpm"));
- BOOST_CHECK_EQUAL( p->location().medianr(), 1);
+ BOOST_CHECK_EQUAL( p->location().medianr(), (unsigned)1);
BOOST_CHECK_EQUAL( p->size(), 38850584);
BOOST_CHECK_EQUAL( p->location().downloadSize(), 16356019);
- BOOST_CHECK_EQUAL( p->diskusage().size(), 3);
+ BOOST_CHECK_EQUAL( p->diskusage().size(), (unsigned)3);
}
/**
@@ -122,15 +122,15 @@
list<Url>::const_iterator it;
list<Url> urls;
- BOOST_CHECK_EQUAL( urls.size(), 0 );
+ BOOST_CHECK_EQUAL( urls.size(), (unsigned)0 );
urls = p->extraUrls();
it = find( urls.begin(), urls.end(), Url("http://download.opensuse.org/distribution/10.2/repo/oss/"));
- BOOST_CHECK_EQUAL( p->extraUrls().size(), 1 );
+ BOOST_CHECK_EQUAL( p->extraUrls().size(), (unsigned)1 );
BOOST_CHECK( it != urls.end() );
urls = p->optionalUrls();
- BOOST_CHECK_EQUAL( urls.size(), 2 );
+ BOOST_CHECK_EQUAL( urls.size(), (unsigned)2 );
it = find( urls.begin(), urls.end(), Url("http://download.opensuse.org/distribution/10.2/repo/non-oss/"));
BOOST_CHECK( it != urls.end() );
@@ -171,7 +171,7 @@
BOOST_CHECK_EQUAL( p->license(), "GNU General Public License (GPL)");
BOOST_CHECK_EQUAL( p->location().checksum(), CheckSum("sha1", "34adf06a0c4873b9d53b4634beb8bee458b45767"));
BOOST_CHECK_EQUAL( p->location().filename(), Pathname("rpm/i586/glabels-2.0.4-30.2.i586.rpm"));
- BOOST_CHECK_EQUAL( p->location().medianr(), 1 );
+ BOOST_CHECK_EQUAL( p->location().medianr(), (unsigned)1 );
BOOST_CHECK_EQUAL( p->size(), 2257356);
BOOST_CHECK_EQUAL( p->location().downloadSize(), 983124);
}
@@ -297,7 +297,7 @@
ResStore dbres = get_resolvables( alias, tmpdir);;;
//read_resolvables( alias, tmpdir, std::inserter(dbres, dbres.end()));
MIL << dbres.size() << " resolvables" << endl;
- BOOST_CHECK_EQUAL( dbres.size(), 48);
+ BOOST_CHECK_EQUAL( dbres.size(), (unsigned)48);
bool found_glabels_i586 = false;
for ( ResStore::const_iterator it = dbres.begin();
@@ -334,7 +334,7 @@
MIL << dbres.size() << " resolvables" << endl;
// packages and a patterns
- BOOST_CHECK_EQUAL( dbres.size(), 7);
+ BOOST_CHECK_EQUAL( dbres.size(), (unsigned)7);
bool found_kdelibs3_i586 = false;
bool found_kde_pat = false;
bool found_factory_product = false;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.17.0/VERSION.cmake new/libzypp-3.18.0/VERSION.cmake
--- old/libzypp-3.17.0/VERSION.cmake 2007-08-17 12:32:31.000000000 +0200
+++ new/libzypp-3.18.0/VERSION.cmake 2007-08-20 14:28:40.000000000 +0200
@@ -45,6 +45,6 @@
#
SET(LIBZYPP_MAJOR "3")
-SET(LIBZYPP_MINOR "17")
+SET(LIBZYPP_MINOR "18")
SET(LIBZYPP_COMPATMINOR "13")
SET(LIBZYPP_PATCH "0")
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.17.0/zypp/cache/ResolvableQuery.cc new/libzypp-3.18.0/zypp/cache/ResolvableQuery.cc
--- old/libzypp-3.17.0/zypp/cache/ResolvableQuery.cc 2007-08-17 12:32:31.000000000 +0200
+++ new/libzypp-3.18.0/zypp/cache/ResolvableQuery.cc 2007-08-20 14:28:40.000000000 +0200
@@ -55,6 +55,7 @@
//
// convert regex ? and * operators to sql _ and % respectively
// example: regex2sql( "*foo?bar*" ) => "%foo_bar%"
+ // FIXME: take care of ".*" and "."
std::string regex2sql( const std::string & s)
{
std::string sql( s );
@@ -111,32 +112,6 @@
}
}
- void iterateResolvablesByName( const std::string &name, int wild, ProcessResolvable fnc )
- {
- std::string sqlcmd = "select " + _fields + " from resolvables where name ";
- std::string s( name );
- if (wild == 0)
- {
- sqlcmd += "=";
- }
- else
- {
- sqlcmd += "like";
- s = regex2sql( s );
- }
- sqlite3_command cmd( _con, sqlcmd + " :name;");
- if (wild & 1)
- s += "%";
- if (wild & 2)
- s = string("%") + s;
- cmd.bind( ":name", s );
- sqlite3_reader reader = cmd.executereader();
- while(reader.read())
- {
- fnc( reader.getint64(0), fromRow(reader) );
- }
- }
-
std::string queryStringAttribute( const data::RecordId &record_id,
const std::string &klass,
@@ -223,38 +198,51 @@
}
}
- void iterateResolvablesByKindsAndName( std::vectorzypp::Resolvable::Kind kinds,
- const std::string &name, int wild, ProcessResolvable fnc )
+ void iterateResolvablesByKindsAndStrings( const std::vectorzypp::Resolvable::Kind & kinds,
+ const std::vectorstd::string &strings, int flags, ProcessResolvable fnc )
{
- std::string sqlcmd( "select " + _fields + " from resolvables where name " );
- std::string s( name );
- if (wild == 0)
- {
- sqlcmd += "=";
- }
- else
- {
- sqlcmd += "like";
- s = regex2sql( s );
+ std::string sqlcmd( "SELECT " + _fields + " FROM resolvables WHERE (" );
+ std::vectorstd::string::const_iterator it_s;
+ for (it_s = strings.begin(); it_s != strings.end(); ++it_s)
+ {
+ std::string s( *it_s );
+
+ if (it_s != strings.begin())
+ sqlcmd += "AND";
+
+//FIXME: Implement MATCH_RESSUMM and MATCH_RESDESC
+
+ sqlcmd += " name ";
+ if (flags & MATCH_WILDCARDS == 0)
+ {
+ sqlcmd += "=";
+ }
+ else
+ {
+ sqlcmd += "like";
+ s = regex2sql( s );
+ }
+ if (flags & MATCH_LEADING)
+ s += "%";
+ if (flags & MATCH_TRAILING)
+ s = string("%") + s;
+
+ sqlcmd += " '";
+ sqlcmd += s;
+ sqlcmd += "'";
}
- if (wild & 1)
- s += "%";
- if (wild & 2)
- s = string("%") + s;
-
- sqlcmd = sqlcmd + " :name AND kind IN (";
+ sqlcmd += ") AND kind IN (";
- std::vectorzypp::Resolvable::Kind::iterator it;
- for (it = kinds.begin(); it != kinds.end(); it++)
+ std::vectorzypp::Resolvable::Kind::const_iterator it_k;
+ for (it_k = kinds.begin(); it_k != kinds.end(); ++it_k)
{
- if (it != kinds.begin())
+ if (it_k != kinds.begin())
sqlcmd += ", ";
char idbuf[16];
- snprintf( idbuf, 15, "%d", (int)(_type_cache.idForKind( *it )) );
+ snprintf( idbuf, 15, "%d", (int)(_type_cache.idForKind( *it_k )) );
sqlcmd += idbuf;
}
sqlite3_command cmd( _con, sqlcmd + ")");
- cmd.bind( ":name", s );
sqlite3_reader reader = cmd.executereader();
while(reader.read())
@@ -443,15 +431,10 @@
return _pimpl->iterateResolvablesByKind( kind, fnc );
}
-void ResolvableQuery::iterateResolvablesByName( const std::string &name, int wild, ProcessResolvable fnc )
-{
- _pimpl->iterateResolvablesByName( name, wild, fnc );
-}
-
-void ResolvableQuery::iterateResolvablesByKindsAndName( std::vectorzypp::Resolvable::Kind kinds,
- const std::string &name, int wild, ProcessResolvable fnc )
+void ResolvableQuery::iterateResolvablesByKindsAndStrings( const std::vectorzypp::Resolvable::Kind & kinds,
+ const std::vectorstd::string &strings, int flags, ProcessResolvable fnc )
{
- _pimpl->iterateResolvablesByKindsAndName( kinds, name, wild, fnc );
+ _pimpl->iterateResolvablesByKindsAndStrings( kinds, strings, flags, fnc );
}
//////////////////////////////////////////////////////////////////////////////
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.17.0/zypp/cache/ResolvableQuery.h new/libzypp-3.18.0/zypp/cache/ResolvableQuery.h
--- old/libzypp-3.17.0/zypp/cache/ResolvableQuery.h 2007-08-17 12:32:31.000000000 +0200
+++ new/libzypp-3.18.0/zypp/cache/ResolvableQuery.h 2007-08-20 14:28:40.000000000 +0200
@@ -39,6 +39,21 @@
namespace cache
{ /////////////////////////////////////////////////////////////////
+ // match flag definitions for iterate*() functions
+
+ const int MATCH_EXACT = 0x00; // match 'string' exactly
+ const int MATCH_LEADING = 0x01; // match 'string*'
+ const int MATCH_TRAILING = 0x02; // match '*string'
+ const int MATCH_SUBSTRING = (MATCH_LEADING|MATCH_TRAILING);
+ const int MATCH_REGEXP = 0x04; // match e.g. 's?t*r??ing*' (only ? and * are allowed)
+ const int MATCH_NAME = 0x08; // match string in resolvable name, this is the default
+ const int MATCH_SUMMARY = 0x10; // match string in resolvable summary
+ const int MATCH_DESCRIPTION= 0x20; // match string in resolvable description
+
+
+ const int MATCH_WILDCARDS = (MATCH_SUBSTRING|MATCH_REGEXP);
+ const int MATCH_FIELDS = (MATCH_NAME|MATCH_SUMMARY|MATCH_DESCRIPTION);
+
/**
* Callback definition
* first parameter is the resolvable id.
@@ -228,31 +243,21 @@
std::string queryRepositoryAlias( const data::RecordId &repo_id );
/**
- * Query by matching name
- * \param name name to match, wildcard operators like * and ? are allowed if 'wild' param != 0
- * \param wild append wildcard operators ?: 0 = no, 1 = trailing wild, 2 = leading wild, 3 = trailing & leading wild, 4 = name contains wildcards
- * \param fnc callback to send the data to. (Will be called once per result)
- *
- * Examples:
- * iterateByName( "kernel", 0, cb ) => look for resovables matching "kernel" exactly
- * iterateByName( "kernel", 1, cb ) => look for resovables starting with "kernel" (wildcard operator will be appendend)
- * iterateByName( "devel", 2, cb ) => look for resovables ending in "devel" (wildcard operator will be prependend)
- * iterateByName( "foo??", 1, cb ) => look for resovables starting with "foo" and at least 5 characters
- * iterateByName( "fo*o", 4, cb ) => look for resovables matching "fo*o"
- */
- void iterateResolvablesByName( const std::string &name, int wild,
- ProcessResolvable fnc );
-
- /**
* \short Iterate resolvables by Kind
*/
void iterateResolvablesByKind( zypp::Resolvable::Kind kind, ProcessResolvable fnc );
/**
- * \short Iterate resolvables by Kinds and Name
+ * \short Iterate resolvables by Kinds and Strings
+ * \param kinds kinds to match, will be ORed
+ * \param names names to match, will be ANDed
+ * \param flags MATCH_xxx, see above
+ * \param fnc callback to send the data to. (Will be called once per result)
+ *
+ * Beware: Searching for multiple strings with MATCH_EXACT will _not_ find anything, except if all strings are identical ...
*/
- void iterateResolvablesByKindsAndName( std::vectorzypp::Resolvable::Kind kinds,
- const std::string &name, int wild, ProcessResolvable fnc );
+ void iterateResolvablesByKindsAndStrings( const std::vectorzypp::Resolvable::Kind & kinds,
+ const std::vectorstd::string &strings, int flags, ProcessResolvable fnc );
private:
/** Implementation. */
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org