summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Hartwig <mandyke@gmail.com>2012-03-18 05:13:21 +0800
committerDaniel Hartwig <mandyke@gmail.com>2012-03-18 05:13:21 +0800
commit56ed52277ce732a42e5e84e5fe319a5e1c4a8a64 (patch)
tree1c997e2268c7da206f4b9a3ecc51e875d3af07c8
parent5194533b54a8e3452802a416202032b133e273aa (diff)
downloadaptitude-56ed52277ce732a42e5e84e5fe319a5e1c4a8a64.tar.gz
Use libraries (liba, libb, etc.) with 'firstchar' grouping policy
-rw-r--r--src/pkg_grouppolicy.cc17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/pkg_grouppolicy.cc b/src/pkg_grouppolicy.cc
index 58803dea..84b158fc 100644
--- a/src/pkg_grouppolicy.cc
+++ b/src/pkg_grouppolicy.cc
@@ -696,7 +696,7 @@ class pkg_grouppolicy_firstchar:public pkg_grouppolicy
{
pkg_grouppolicy_factory *chain;
- typedef map<char, pair<pkg_grouppolicy *, pkg_subtree *> > childmap;
+ typedef map<string, pair<pkg_grouppolicy *, pkg_subtree *> > childmap;
// Store the child group policies and their associated subtrees.
childmap children;
public:
@@ -716,22 +716,23 @@ public:
{
eassert(pkg.Name());
- char firstchar=toupper(pkg.Name()[0]);
+ string treename;
+ if(strncmp(pkg.Name(), "lib", 3) == 0)
+ treename = string(pkg.Name(), 4);
+ else
+ treename = pkg.Name()[0];
- childmap::iterator found=children.find(firstchar);
+ childmap::iterator found=children.find(treename);
if(found!=children.end())
found->second.first->add_package(pkg, found->second.second);
else
{
- string treename;
- treename+=firstchar;
-
pkg_subtree *newtree=new pkg_subtree(cw::util::transcode(treename),
L"", get_desc_sig());
pkg_grouppolicy *newchild=chain->instantiate(get_sig(),
get_desc_sig());
- children[firstchar].first=newchild;
- children[firstchar].second=newtree;
+ children[treename].first=newchild;
+ children[treename].second=newtree;
root->add_child(newtree);
newtree->set_num_packages_parent(root);