kdenonbeta/kdedebian/kapture/libcapture
CVS commit by mornfall:
Fix few debtags-related crashes (startup without debtags, empty
debtags filter).
M +7 -3 filters.cpp 1.4
M +7 -10 pkgmanager.cpp 1.14
--- kdenonbeta/kdedebian/kapture/libcapture/filters.cpp #1.3:1.4
@@ -131,4 +131,5 @@ MAKE_GROUPER_FACTORY (PkgTagFilter)
PkgTagFilter::PkgTagFilter (const argmap &a)
{
+ m_filter = false;
argmap::const_iterator found = a . find ("string");
if (found != a . end ()) {
@@ -144,6 +145,7 @@ PkgTagFilter::PkgTagFilter (const argmap
/* for (OpSet <string>::iterator i = m_items . begin (); i != m_items . end (); i ++)
cerr << "have item in m_items: " << *i << endl; */
+ if (m_expr)
m_filter = true;
- } else m_filter = false;
+ };
}
/* }}} */
@@ -156,5 +158,7 @@ bool PkgTagFilter::filterCondition (Feed
cerr << "evaling on tagset: " ;
for (OpSet <string>::const_iterator i = t -> */
- return m_expr -> eval (t ? *t : OpSet <string> ());
+ if (t)
+ return m_expr -> eval (*t);
+ else return true;
/* if (m_expr -> eval (t ? *t : OpSet <string> ()))
return true;
--- kdenonbeta/kdedebian/kapture/libcapture/pkgmanager.cpp #1.13:1.14
@@ -155,6 +155,11 @@ bool PkgManager::loadTags ()
m_tagColl = new TagCollection <std::string>;
- // XXX check for presence!
- // XXX allow updates
+ if (access ("/var/lib/debtags/implications", R_OK)
+ || access ("/var/lib/debtags/derived-tags", R_OK)
+ || access ("/var/lib/debtags/package-tags", R_OK))
+ {
+ cerr << "WARNING: could not open tags database; please run update" << endl;
+ return false;
+ }
FilterChain<string> inp;
@@ -174,17 +179,9 @@ bool PkgManager::loadTags ()
capture::TagcollBuilder <string> builder (m_tagColl);
- // TagcollConsumer *cons = &builder;
inp . setConsumer (&builder);
loadTagColl ("/var/lib/debtags/package-tags", merger);
merger . output (inp);
- // *m_tagColl = builder -> collection ();
PkgCacheTagcollBuilder cacheTags (m_cache);
m_tagColl -> output (cacheTags);
- /* {
- OpSet <string> items;
- items = m_tagColl -> getAllItems ();
- for (OpSet <string>::iterator i = items . begin (); i != items . end (); i ++)
- cerr << "have item in m_items: " << *i << endl;
- } */
notifyRebuild ();
Reply to: