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 ();