![](https://seccdn.libravatar.org/avatar/99b57570f7d488a36e8601c77edc67bd.jpg?s=120&d=mm&r=g)
Author: jreidinger Date: Fri May 9 14:09:39 2008 New Revision: 10006 URL: http://svn.opensuse.org/viewcvs/zypp?rev=10006&view=rev Log: add removelock with name (bnc#385966) Modified: trunk/zypper/src/output/prompt.h trunk/zypper/src/zypper-locks.cc trunk/zypper/src/zypper-main.cc Modified: trunk/zypper/src/output/prompt.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/zypper/src/output/prompt.h?rev=10006&r1=10005&r2=10006&view=diff ============================================================================== --- trunk/zypper/src/output/prompt.h (original) +++ trunk/zypper/src/output/prompt.h Fri May 9 14:09:39 2008 @@ -42,7 +42,8 @@ PROMPT_YN_GPG_CHECK_FAILED_IGNORE = 15, PROMPT_GPG_NO_DIGEST_ACCEPT = 16, PROMPT_GPG_UNKNOWN_DIGEST_ACCEPT = 17, - PROMPT_GPG_WRONG_DIGEST_ACCEPT = 18 + PROMPT_GPG_WRONG_DIGEST_ACCEPT = 18, + PROMPT_YN_REMOVE_LOCK = 19 } PromptId; #endif /*PROMPT_H_*/ Modified: trunk/zypper/src/zypper-locks.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/zypper/src/zypper-locks.cc?rev=10006&r1=10005&r2=10006&view=diff ============================================================================== --- trunk/zypper/src/zypper-locks.cc (original) +++ trunk/zypper/src/zypper-locks.cc Fri May 9 14:09:39 2008 @@ -118,6 +118,7 @@ void add_locks(Zypper & zypper, const Zypper::ArgList & args, const ResKindSet & kinds) { + Locks::size_type start = 0; try { PoolQuery q; @@ -130,6 +131,7 @@ Locks & locks = Locks::instance(); locks.readAndApply(); + start = locks.size(); locks.addLock(q); locks.save(); } @@ -139,8 +141,8 @@ zypper.out().error(e, _("Problem adding the package lock:")); zypper.setExitCode(ZYPPER_EXIT_ERR_ZYPP); } - - zypper.out().info(_("Specified lock has been successfully added.")); + if ( start != Locks::instance().size() ) + zypper.out().info(_("Specified lock has been successfully added.")); } @@ -150,6 +152,7 @@ { Locks & locks = Locks::instance(); locks.readAndApply(); + Locks::size_type start = locks.size(); Locks::const_iterator it = locks.begin(); Locks::LockList::size_type i = 0; safe_lexical_cast(args[0], i); @@ -158,11 +161,45 @@ advance(it, i-1); locks.removeLock(*it); locks.save(); - + zypper.out().info(_("Specified lock has been successfully removed.")); } - else - zypper.out().error(str::form(_("Invalid lock number: %s"), args[0].c_str())); + else //package name + { + //TODO localize + PoolQuery q; + q.addAttribute(sat::SolvAttr::name, args[0]); + q.setMatchGlob(); + //! \todo addRepo() + q.setCaseSensitive(); + + int res = 0; + PoolQuery& last = q; + for_( it, locks.begin(),locks.end() ) //if one package have identical name remove it directly + { + PoolQuery::StrContainer sc = it->attribute(sat::SolvAttr::name); + if (sc.size()==1 && sc.count(args[0]) ) + { + res++; + last = *it; + } + } + if ( res == 1 ) //only one exact name matching + locks.removeLock(last); + else + locks.removeLock(q); + + locks.save(); + + if (start==locks.size()) + { + zypper.out().info("No lock has been removed."); + // nothing removed + } else { + zypper.out().info(str::form("Lock count has been succesfully decreased by: %lu",start-locks.size())); + //removed something + } + } } catch(const Exception & e) { Modified: trunk/zypper/src/zypper-main.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/zypper/src/zypper-main.cc?rev=10006&r1=10005&r2=10006&view=diff ============================================================================== --- trunk/zypper/src/zypper-main.cc (original) +++ trunk/zypper/src/zypper-main.cc Fri May 9 14:09:39 2008 @@ -12,6 +12,7 @@ #include "zypper-keyring-callbacks.h" #include "zypper-repo-callbacks.h" #include "zypper-media-callbacks.h" +#include "zypper-locks-callbacks.h" using namespace std; @@ -20,6 +21,7 @@ MediaCallbacks media_callbacks; KeyRingCallbacks keyring_callbacks; DigestCallbacks digest_callbacks; +LocksCallbacks locks_callbacks; void signal_handler(int sig) -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org