prt-get: show multiple dups in 'dup'

git-svn-id: https://crux.nu/svn/tools/prt-get/trunk@1838 0b5ae1c7-2405-0410-a7fc-ba219f786e1e
This commit is contained in:
Johannes Winkelmann 2006-09-08 13:53:58 +00:00
parent 92ca1807ff
commit 35154af881
3 changed files with 15 additions and 8 deletions

View File

@ -277,12 +277,13 @@ void PrtGet::listShadowed()
string output; string output;
Package* p1; Package* p1;
Package* p2; Package* p2;
map<string, pair<Package*, Package*> >::const_iterator it =
list<pair<Package*, Package*> >::const_iterator it =
m_repo->shadowedPackages().begin(); m_repo->shadowedPackages().begin();
for ( ; it != m_repo->shadowedPackages().end(); ++it ) { for ( ; it != m_repo->shadowedPackages().end(); ++it ) {
output = format; output = format;
p1 = it->second.second; p1 = it->second;
p2 = it->second.first; p2 = it->first;
StringHelper::replaceAll(output, "%n", p1->name()); StringHelper::replaceAll(output, "%n", p1->name());
StringHelper::replaceAll(output, "%p1", p1->path() + "/" + p1->name()); StringHelper::replaceAll(output, "%p1", p1->path() + "/" + p1->name());

View File

@ -69,7 +69,7 @@ const map<string, Package*>& Repository::packages() const
\a second is the port which preceeds over \a first \a second is the port which preceeds over \a first
\return a map of duplicate packages in the repository \return a map of duplicate packages in the repository
*/ */
const map<string, pair<Package*, Package*> >& Repository::shadowedPackages() const const list< pair<Package*, Package*> >& Repository::shadowedPackages() const
{ {
return m_shadowedPackages; return m_shadowedPackages;
} }
@ -140,6 +140,11 @@ void Repository::searchMatchingPackages( const string& pattern,
} }
} }
int compareShadowPair(pair<Package*, Package*>& p1, pair<Package*, Package*>& p2)
{
return p1.second->name() < p2.second->name();
}
/*! /*!
init repository by reading the directories passed. Doesn't search init repository by reading the directories passed. Doesn't search
@ -226,7 +231,7 @@ void Repository::initFromFS( const list< pair<string, string> >& rootList,
// no such package found, add // no such package found, add
m_packageMap[name] = p; m_packageMap[name] = p;
} else if ( listDuplicate ) { } else if ( listDuplicate ) {
m_shadowedPackages[name] = make_pair( p, hidden->second ); m_shadowedPackages.push_back(make_pair( p, hidden->second ));
} else { } else {
delete p; delete p;
} }
@ -236,6 +241,7 @@ void Repository::initFromFS( const list< pair<string, string> >& rootList,
closedir( d ); closedir( d );
} }
m_shadowedPackages.sort(compareShadowPair);
parseDependencyList(); parseDependencyList();
} }

View File

@ -34,7 +34,7 @@ public:
const Package* getPackage( const string& name ) const; const Package* getPackage( const string& name ) const;
const map<string, Package*>& packages() const; const map<string, Package*>& packages() const;
const map<string, pair<Package*, Package*> >& shadowedPackages() const; const list<pair<Package*, Package*> >& shadowedPackages() const;
void searchMatchingPackages( const string& pattern, void searchMatchingPackages( const string& pattern,
list<Package*>& target, list<Package*>& target,
@ -74,7 +74,7 @@ private:
void parseDependencyList(); void parseDependencyList();
map<string, pair<Package*, Package*> > m_shadowedPackages; list<pair<Package*, Package*> > m_shadowedPackages;
map<string, Package*> m_packageMap; map<string, Package*> m_packageMap;
}; };