/** Build \ref Capability from data. No parsing required.
*/
- sat::detail::IdType relFromStr( ::_Pool * pool_r,
+ sat::detail::IdType relFromStr( sat::detail::CPool * pool_r,
const Arch & arch_r,
const std::string & name_r,
Rel op_r,
/** Build \ref Capability from data, just parsing name for '[.arch]' and detect
* 'kind srcpackage' (will be mapped to arch \c src).
*/
- sat::detail::IdType relFromStr( ::_Pool * pool_r,
+ sat::detail::IdType relFromStr( sat::detail::CPool * pool_r,
const std::string & name_r, Rel op_r, const Edition & ed_r,
const ResKind & kind_r )
{
/** Full parse from string, unless Capability::PARSED.
*/
- sat::detail::IdType relFromStr( ::_Pool * pool_r,
+ sat::detail::IdType relFromStr( sat::detail::CPool * pool_r,
const Arch & arch_r, // parse from name if empty
const std::string & str_r, const ResKind & kind_r,
Capability::CtorFlag flag_r )
: _id( relFromStr( myPool().getPool(), arch_r, name_r, op_r, ed_r, prefix_r ) )
{}
+ ///////////////////////////////////////////////////////////////////
+ // Ctor creating a namespace: capability.
+ ///////////////////////////////////////////////////////////////////
+
+ Capability::Capability( ResolverNamespace namespace_r, IdString value_r )
+ : _id( ::pool_rel2id( myPool().getPool(), asIdString(namespace_r).id(), (value_r.empty() ? STRID_NULL : value_r.id() ), REL_NAMESPACE, /*create*/true ) )
+ {}
+
+
const char * Capability::c_str() const
{ return( _id ? ::pool_dep2str( myPool().getPool(), _id ) : "" ); }
// str_r might be the form "libzypp-1.2.3-4.5(.arch)'
// correctly parsed as name capability by the ctor.
- if ( detail.isNamed() && ::strrchr( detail.name().c_str(), '-' ) && sat::WhatProvides( cap ).empty() )
+ // TODO: Think about allowing glob char in name - for now don't process
+ if ( detail.isNamed() && !::strpbrk( detail.name().c_str(), "*?[{" )
+ && ::strrchr( detail.name().c_str(), '-' ) && sat::WhatProvides( cap ).empty() )
{
Arch origArch( detail.arch() ); // to support a trailing .arch