Author: dmacvicar Date: Sun Feb 17 12:05:38 2008 New Revision: 8766 URL: http://svn.opensuse.org/viewcvs/zypp?rev=8766&view=rev Log: - port srcinstall to use byIdent as Michael suggested. It segfaults but it seems it is due to a bug in libzypp ;-) Modified: trunk/zypper/src/zypper-misc.cc Modified: trunk/zypper/src/zypper-misc.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/zypper/src/zypper-misc.cc?rev=8766&r1=8765&r2=8766&view=diff ============================================================================== --- trunk/zypper/src/zypper-misc.cc (original) +++ trunk/zypper/src/zypper-misc.cc Sun Feb 17 12:05:38 2008 @@ -1667,36 +1667,6 @@ return confirmed; } - -struct FindSrcPackage -{ - FindSrcPackage(SrcPackage::Ptr & srcpkg) : _srcpkg(srcpkg) {} - - bool operator() (ResObject::Ptr res) - { - SrcPackage::Ptr srcpkg = asKind<SrcPackage>(res); - cout_vv << "Considering srcpakcage " << srcpkg->name() << "-" << srcpkg->edition() << ": "; - if (_srcpkg) - { - if (_srcpkg->edition() < srcpkg->edition()) - cout_vv << "newer edition (" << srcpkg->edition() << " > " << _srcpkg->edition() << ")" << endl; - else - cout_vv << "is older than the current candidate"; - } - else - cout_vv << "first candindate"; - - cout_vv << endl; - - _srcpkg.swap(srcpkg); - - return true; - } - - SrcPackage::Ptr & _srcpkg; -}; - - int source_install(std::vectorstd::string & arguments) { /* @@ -1713,13 +1683,33 @@ for (vector<string>::const_iterator it = arguments.begin(); it != arguments.end(); ++it) { - SrcPackage::Ptr srcpkg; -// FIXME -// gData.repo_resolvables.forEach( -// functor::chain( -// resfilter::ByName(*it), -// resfilter::ByKind(ResTraits<SrcPackage>::kind)), -// FindSrcPackage(srcpkg)); + SrcPackage::constPtr srcpkg; + + ResPool pool(God->pool()); + cout_vv << "looking source for : " << *it << endl; + for_( srcit, pool.byIdentBegin<SrcPackage>(*it), + pool.byIdentEnd<SrcPackage>(*it) ) + { + cout_vv << *srcit << endl; + if ( ! srcit->status().isInstalled() ) + { + SrcPackage::constPtr _srcpkg = asKind<SrcPackage>(srcit->resolvable()); + cout_vv << "Considering srcpakcage " << srcpkg->name() << "-" << srcpkg->edition() << ": "; + if (_srcpkg) + { + if (_srcpkg->edition() < srcpkg->edition()) + cout_vv << "newer edition (" << srcpkg->edition() << " > " << _srcpkg->edition() << ")" << endl; + else + cout_vv << "is older than the current candidate"; + } + else + cout_vv << "first candindate"; + + cout_vv << endl; + + _srcpkg.swap(srcpkg); + } + } if (srcpkg) { -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org