Author: jreidinger Date: Fri May 9 15:31:17 2008 New Revision: 10014 URL: http://svn.opensuse.org/viewcvs/zypp?rev=10014&view=rev Log: implement remove duplicate entries in lock file (bnc#385967) Modified: trunk/libzypp/zypp/Locks.cc trunk/libzypp/zypp/Locks.h Modified: trunk/libzypp/zypp/Locks.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/Locks.cc?rev=10014&r1=10013&r2=10014&view=diff ============================================================================== --- trunk/libzypp/zypp/Locks.cc (original) +++ trunk/libzypp/zypp/Locks.cc Fri May 9 15:31:17 2008 @@ -405,7 +405,7 @@ void Locks::save( const Pathname& file ) { if( ((_pimpl->toAdd.size() | _pimpl->toRemove.size())==0) - || _pimpl->locksDirty ) + && !_pimpl->locksDirty ) { DBG << "nothing changed in locks - no write to file" << endl; return; @@ -423,4 +423,17 @@ report->finish(SavingLocksReport::NO_ERROR); } +void Locks::removeDuplicates() +{ + size_type sum = size(); + for_(it,_pimpl->locks.begin(),_pimpl->locks.end()) + { + if ( find(_pimpl->locks.begin(),it,*it) != it ) + _pimpl->locks.erase(it--); //-- to avoid using break iterator + } + + if (sum!=size()) + _pimpl->locksDirty = true; +} + } // ns zypp Modified: trunk/libzypp/zypp/Locks.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/Locks.h?rev=10014&r1=10013&r2=10014&view=diff ============================================================================== --- trunk/libzypp/zypp/Locks.h (original) +++ trunk/libzypp/zypp/Locks.h Fri May 9 15:31:17 2008 @@ -129,6 +129,11 @@ */ void removeEmpty(); + /** + * Delete all query duplicate in loaded locks. + * \note you must call \a save to write cleaned locks to file + */ + void removeDuplicates(); //@} private: Locks(); -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org