{
public:
Impl()
- : _flags( SEARCH_ALL_REPOS | SEARCH_NOCASE | SEARCH_SUBSTRING | SEARCH_SKIP_KIND )
+ : _flags( SEARCH_NOCASE | SEARCH_SUBSTRING | SEARCH_SKIP_KIND )
, _status_flags(ALL)
, _match_word(false)
, _require_all(false)
}
}
- // tell the Dataiterator to search only in one repo if only one specified
- if (_repos.size() == 1)
- _cflags &= ~SEARCH_ALL_REPOS;
-
_compiled = true;
-
DBG << asString() << endl;
}
// if only one repository has been specified, find it in the pool
Repository repo;
- if (!(_cflags & SEARCH_ALL_REPOS) && _repos.size() == 1)
+ if ( _repos.size() == 1 )
{
string theone = *_repos.begin();
repo = pool.reposFind(theone);
}
}
- if ((_cflags & SEARCH_ALL_REPOS) || repo == Repository::noRepository)
- repo = *pool.reposBegin();
-
DBG << "_cflags:" << _cflags << endl;
scoped_ptr< ::_Dataiterator> _rdit( new ::Dataiterator );
if (_rcattrs.empty())
{
::dataiterator_init(_rdit.get(),
- repo.get(), // either the first repo or the repo to search
+ pool.get(),
+ repo.get(), // either NULL or the repo to search
0, // search all solvables
0, // attribute id - only if 1 attr key specified
_rcstrings.empty() ? 0 : _rcstrings.c_str(), // compiled search string
else if (_rcattrs.size() == 1)
{
::dataiterator_init(_rdit.get(),
- repo.get(), // either the first repo or the repo to search
+ pool.get(),
+ repo.get(), // either NULL or the repo to search
0, // search all solvables
_rcattrs.begin()->first.id(), // keyname - attribute id - only if 1 attr key specified
_rcstrings.empty() ? 0 : _rcstrings.c_str(), // compiled search string
else
{
::dataiterator_init(_rdit.get(),
- repo.get(), // either the first repo or the repo to search
+ pool.get(),
+ repo.get(), // either NULL or the repo to search
0, /*search all resolvables */
0, /*keyname - if only 1 attr key specified, pass it here, otherwise do more magic */
0, //qs.empty() ? 0 : qs.c_str(), /* create regex, pass it here */
o << "string match flags:" << endl;
o << "* string/substring/glob/regex: " << (_cflags & SEARCH_STRINGMASK) << endl;
o << "* SEARCH_NOCASE: " << ((_cflags & SEARCH_NOCASE) ? "yes" : "no") << endl;
- o << "* SEARCH_ALL_REPOS: " << ((_cflags & SEARCH_ALL_REPOS) ? "yes" : "no") << endl;
+ o << "* SEARCH_ALL_REPOS: " << (_repos.empty() ? "yes" : "no") << endl;
o << "status filter flags:" << _status_flags << endl;
o << "version: "<< _op << " " << _edition.asString() << endl;
else
regex_p = _regex.get();
#warning wrap matcher an use it
- matches = ::dataiterator_match(base().get(), _flags, regex_p);
+ matches = ::dataiterator_match_obsolete(base().get(), _flags, regex_p);
}
else
{
const string & sstr =
_str.empty() ? ai->second : _str;
- matches = ::dataiterator_match(base().get(), _flags, sstr.c_str());
+ matches = ::dataiterator_match_obsolete(base().get(), _flags, sstr.c_str());
}
// if (matches)
return;
}
_pimpl->_repos.insert(repoalias);
- _pimpl->_flags &= ~SEARCH_ALL_REPOS;
}
#include "zypp/base/Deprecated.h"
#include "zypp/Url.h"
+#include "zypp/Locale.h"
+#include "zypp/ManagedFile.h"
#include "zypp/repo/RepoType.h"
#include "zypp/repo/RepoVariables.h"
friend std::ostream & operator<<( std::ostream & str, const RepoInfo & obj );
public:
- RepoInfo();
- virtual ~RepoInfo();
+ RepoInfo();
+ virtual ~RepoInfo();
- /** Represents no Repository (one with an empty alias). */
- static const RepoInfo noRepo;
+ /** Represents no Repository (one with an empty alias). */
+ static const RepoInfo noRepo;
- /**
- * Repository priority for solver.
- * Some number between \c 1 (highest priority) and \c 99 (\ref defaultPriority).
- */
- unsigned priority() const;
- /**
- * The default priority (\c 99).
- */
- static unsigned defaultPriority();
- /**
- * Set repository priority for solver.
- * A \c newval_r of \c 0 sets the default priority.
- * \see \ref priority.
- */
- void setPriority( unsigned newval_r );
-
- /**
- * A Url under which the metadata are located, or a set of mirrors.
- *
- * This can't be empty in order the repository to be valid
- * unless the download of the mirror list succeeds and it
- * contains a valid url.
- *
- * \deprecated IMO superfluous as we provide begin/end iterator.
- */
- ZYPP_DEPRECATED std::set<Url> baseUrls() const;
-
- /**
- * \short Repository path
- *
- * Pathname relative to the base Url where the product/repository
- * is located
- *
- * For medias containing more than one product, or repositories not
- * located at the root of the media it is important to
- * know the path of the media root relative to the product directory
- * so a media verifier can be set for that media.
- *
- * It is not mandatory, and the default is /
- *
- * \note As a repository can have multiple Urls, the path is unique and
- * the same for all Urls, so it is assumed all the Urls have the
- * same media layout.
- *
- */
- Pathname path() const;
-
- /**
- * Url of a file which contains a list of Urls
- * If empty, the base url will be used.
- */
- Url mirrorListUrl() const;
-
- typedef std::set<Url> url_set;
- //typedef url_set::const_iterator urls_const_iterator;
- typedef url_set::size_type urls_size_type;
- typedef transform_iterator<repo::RepoVariablesUrlReplacer, url_set::const_iterator> urls_const_iterator;
-
- /**
- * iterator that points at begin of repository urls
- */
- urls_const_iterator baseUrlsBegin() const;
-
- /**
- * iterator that points at end of repository urls
- */
- urls_const_iterator baseUrlsEnd() const;
-
- /**
- * number of repository urls
- */
- urls_size_type baseUrlsSize() const;
+ public:
+ /**
+ * The default priority (\c 99).
+ */
+ static unsigned defaultPriority();
+ /**
+ * Repository priority for solver.
+ * Some number between \c 1 (highest priority) and \c 99 (\ref defaultPriority).
+ */
+ unsigned priority() const;
+ /**
+ * Set repository priority for solver.
+ * A \c newval_r of \c 0 sets the default priority.
+ * \see \ref priority.
+ */
+ void setPriority( unsigned newval_r );
+
+ typedef std::set<Url> url_set;
+ typedef url_set::size_type urls_size_type;
+ typedef transform_iterator<repo::RepoVariablesUrlReplacer, url_set::const_iterator> urls_const_iterator;
+ /**
+ * whether repository urls are available
+ */
+ bool baseUrlsEmpty() const;
+ /**
+ * number of repository urls
+ */
+ urls_size_type baseUrlsSize() const;
+ /**
+ * iterator that points at begin of repository urls
+ */
+ urls_const_iterator baseUrlsBegin() const;
+ /**
+ * iterator that points at end of repository urls
+ */
+ urls_const_iterator baseUrlsEnd() const;
+ /**
+ * A Url under which the metadata are located, or a set of mirrors.
+ *
+ * This can't be empty in order the repository to be valid
+ * unless the download of the mirror list succeeds and it
+ * contains a valid url.
+ *
+ * \deprecated IMO superfluous as we provide begin/end iterator.
+ */
+ std::set<Url> baseUrls() const;
+ /**
+ * Add a base url. \see baseUrls
+ * \param url The base url for the repository.
+ * \note can change keepPackages,so change it after this call
+ *
+ * To recreate the base URLs list, use \ref setBaseUrl(const Url &) followed
+ * by addBaseUrl().
+ */
+ void addBaseUrl( const Url &url );
+ /**
+ * Clears current base URL list and adds \a url.
+ * \note can change keepPackages,so change it after this call
+ */
+ void setBaseUrl( const Url &url );
+
+ /**
+ * \short Repository path
+ *
+ * Pathname relative to the base Url where the product/repository
+ * is located
+ *
+ * For medias containing more than one product, or repositories not
+ * located at the root of the media it is important to
+ * know the path of the media root relative to the product directory
+ * so a media verifier can be set for that media.
+ *
+ * It is not mandatory, and the default is /
+ *
+ * \note As a repository can have multiple Urls, the path is unique and
+ * the same for all Urls, so it is assumed all the Urls have the
+ * same media layout.
+ *
+ */
+ Pathname path() const;
+ /**
+ * set the product path. \see path()
+ * \param path the path to the product
+ */
+ void setPath( const Pathname &path );
+
+ /**
+ * Url of a file which contains a list of Urls
+ * If empty, the base url will be used.
+ */
+ Url mirrorListUrl() const;
+ /**
+ * Set mirror list url. \see mirrorListUrl
+ * \param url The base url for the list
+ */
+ void setMirrorListUrl( const Url &url );
+
+ /**
+ * Type of repository,
+ *
+ */
+ repo::RepoType type() const;
+ /**
+ * This allows to adjust the \ref RepoType lazy, from \c NONE to
+ * some probed value, even for const objects.
+ *
+ * This is a NOOP if the current type is not \c NONE.
+ */
+ void setProbedType( const repo::RepoType &t ) const;
+ /**
+ * set the repository type \see type
+ * \param t
+ */
+ void setType( const repo::RepoType &t );
+
+ /**
+ * \short Path where this repo metadata was read from
+ *
+ * \note could be an empty pathname for repo
+ * infos created in memory.
+ */
+ Pathname metadataPath() const;
+ /**
+ * \short set the path where the local metadata is stored
+ *
+ * The path to the metadata of this repository
+ * was defined, or empty if nowhere.
+ *
+ * \param path directory path
+ */
+ void setMetadataPath( const Pathname &path );
+
+ /**
+ * \short Path where this repo packages are cached
+ */
+ Pathname packagesPath() const;
+ /**
+ * \short set the path where the local packages are stored
+ *
+ * \param path directory path
+ */
+ void setPackagesPath( const Pathname &path );
+
+ /**
+ * \short Whether to check or not this repository with gpg
+ *
+ * \note This is a just a hint to the application and can
+ * be ignored.
+ *
+ */
+ bool gpgCheck() const;
+ /**
+ * \short Whether to check or not this repository with gpg
+ *
+ * \param check true (check) or false (dont'check)
+ *
+ * \note This is a just a hint to the application and can
+ * be ignored.
+ *
+ */
+ void setGpgCheck( bool check );
+
+ /**
+ * \short Key to use for gpg checking of this repository
+ *
+ * \param url Url to the key in ASCII armored format
+ *
+ * \note This is a just a hint to the application and can
+ * be ignored.
+ *
+ */
+ Url gpgKeyUrl() const;
+ /**
+ * \short Key to use for gpg checking of this repository
+ *
+ * \param url Url to the key in ASCII armored format
+ *
+ * \note This is a just a hint to the application and can
+ * be ignored.
+ *
+ */
+ void setGpgKeyUrl( const Url &gpgkey );
+
+ /**
+ * \short Whether to keep the packages downloaded from this repository will be kept in local cache
+ */
+ bool keepPackages() const;
+ /**
+ * \short Set if the packaqes downloaded from this repository will be kept in local cache
+ *
+ * If the setting is true, all downloaded packages from this repository will be
+ * copied to the local raw cache.
+ *
+ * \param keep true (keep the downloaded packages) or false (delete them after installation)
+ *
+ */
+ void setKeepPackages( bool keep );
+
+ /**
+ * Gets name of the service to which this repository belongs or empty string
+ * if it has been added manually.
+ */
+ std::string service() const;
+ /**
+ * sets service which added this repository
+ */
+ void setService( const std::string& name );
+
+ /**
+ * Distribution for which is this repository meant.
+ */
+ std::string targetDistribution() const;
+ /**
+ * Sets the distribution for which is this repository meant. This is
+ * an in-memory value only, does not get written to the .repo file upon
+ * saving.
+ */
+ void setTargetDistribution(const std::string & targetDistribution);
- /**
- * whether repository urls are available
+ public:
+ /** \name Repository license
*/
- bool baseUrlsEmpty() const;
+ //@{
+ /** Whether there is a license associated with the repo. */
+ bool hasLicense() const;
- /**
- * Type of repository,
- *
- */
- repo::RepoType type() const;
-
- /**
- * \short Path where this repo metadata was read from
- *
- * \note could be an empty pathname for repo
- * infos created in memory.
- */
- Pathname metadataPath() const;
-
- /**
- * \short Path where this repo packages are cached
- */
- Pathname packagesPath() const;
-
- /**
- * \short Whether to check or not this repository with gpg
- *
- * \note This is a just a hint to the application and can
- * be ignored.
- *
- */
- bool gpgCheck() const;
-
- /**
- * \short Key to use for gpg checking of this repository
- *
- * \param url Url to the key in ASCII armored format
- *
- * \note This is a just a hint to the application and can
- * be ignored.
- *
- */
- Url gpgKeyUrl() const;
-
- /**
- * \short Whether to keep the packages downloaded from this repository will be kept in local cache
- */
- bool keepPackages() const;
-
- /**
- * Gets name of the service to which this repository belongs or empty string
- * if it has been added manually.
- */
- std::string service() const;
-
- /**
- * Distribution for which is this repository meant.
- */
- std::string targetDistribution() const;
+ /** Return the best license file for the current (or a specified) locale. */
+ ManagedFile getLicense( const Locale & lang_r = Locale() );
+ /** Return the locales the license is available for.
+ * \ref Locale::noCode is included in case of \c license.txt which does
+ * not specify a specific locale.
+ */
+ LocaleSet getLicenseLocales() const;
+ //@}
public:
- /**
- * Add a base url. \see baseUrls
- * \param url The base url for the repository.
- * \note can change keepPackages,so change it after this call
- *
- * To recreate the base URLs list, use \ref setBaseUrl(const Url &) followed
- * by addBaseUrl().
- */
- void addBaseUrl( const Url &url );
-
- /**
- * Clears current base URL list and adds \a url.
- * \note can change keepPackages,so change it after this call
- */
- void setBaseUrl( const Url &url );
-
- /**
- * set the product path. \see path()
- * \param path the path to the product
- */
- void setPath( const Pathname &path );
-
- /**
- * Set mirror list url. \see mirrorListUrl
- * \param url The base url for the list
- */
- void setMirrorListUrl( const Url &url );
-
- /**
- * set the repository type \see type
- * \param t
- */
- void setType( const repo::RepoType &t );
-
- /**
- * This allows to adjust the \ref RepoType lazy, from \c NONE to
- * some probed value, even for const objects.
- *
- * This is a NOOP if the current type is not \c NONE.
- */
- void setProbedType( const repo::RepoType &t ) const;
-
- /**
- * \short set the path where the local metadata is stored
- *
- * The path to the metadata of this repository
- * was defined, or empty if nowhere.
- *
- * \param path directory path
- */
- void setMetadataPath( const Pathname &path );
-
- /**
- * \short set the path where the local packages are stored
- *
- * \param path directory path
- */
- void setPackagesPath( const Pathname &path );
-
- /**
- * \short Whether to check or not this repository with gpg
- *
- * \param check true (check) or false (dont'check)
- *
- * \note This is a just a hint to the application and can
- * be ignored.
- *
- */
- void setGpgCheck( bool check );
-
- /**
- * \short Key to use for gpg checking of this repository
- *
- * \param url Url to the key in ASCII armored format
- *
- * \note This is a just a hint to the application and can
- * be ignored.
- *
- */
- void setGpgKeyUrl( const Url &gpgkey );
-
- /**
- * \short Set if the packaqes downloaded from this repository will be kept in local cache
- *
- * If the setting is true, all downloaded packages from this repository will be
- * copied to the local raw cache.
- *
- * \param keep true (keep the downloaded packages) or false (delete them after installation)
- *
- */
- void setKeepPackages( bool keep );
-
- /**
- * sets service which added this repository
- */
- void setService( const std::string& name );
-
- /**
- * Sets the distribution for which is this repository meant. This is
- * an in-memory value only, does not get written to the .repo file upon
- * saving.
- */
- void setTargetDistribution(const std::string & targetDistribution);
-
- /**
- * Write a human-readable representation of this RepoInfo object
- * into the \a str stream. Useful for logging.
- */
- virtual std::ostream & dumpOn( std::ostream & str ) const;
-
- /**
- * Write this RepoInfo object into \a str in a <tr>.repo</tt> file format.
- */
- virtual std::ostream & dumpAsIniOn( std::ostream & str ) const;
- /** \deprecated use dumpAsIniOn(ostream) instead */
- ZYPP_DEPRECATED virtual std::ostream & dumpRepoOn( std::ostream & str ) const;
-
- /**
- * Write an XML representation of this RepoInfo object.
- */
- virtual std::ostream & dumpAsXMLOn(std::ostream & str) const;
-
- /**
- * Write an XML representation of this RepoInfo object.
- *
- * \param str
- * \param content this argument is ignored (used in other classed derived
- * from RepoInfoBase.
- */
- virtual std::ostream & dumpAsXMLOn(
- std::ostream & str, const std::string & content) const;
-
- class Impl;
- private:
- /** Pointer to implementation */
- RWCOW_pointer<Impl> _pimpl;
+ /**
+ * Write a human-readable representation of this RepoInfo object
+ * into the \a str stream. Useful for logging.
+ */
+ virtual std::ostream & dumpOn( std::ostream & str ) const;
+
+ /**
+ * Write this RepoInfo object into \a str in a <tr>.repo</tt> file format.
+ */
+ virtual std::ostream & dumpAsIniOn( std::ostream & str ) const;
+
+ /**
+ * Write an XML representation of this RepoInfo object.
+ */
+ virtual std::ostream & dumpAsXMLOn(std::ostream & str) const;
+
+ /**
+ * Write an XML representation of this RepoInfo object.
+ *
+ * \param str
+ * \param content this argument is ignored (used in other classed derived
+ * from RepoInfoBase.
+ */
+ virtual std::ostream & dumpAsXMLOn( std::ostream & str, const std::string & content ) const;
+
+ class Impl;
+ private:
+ /** Pointer to implementation */
+ RWCOW_pointer<Impl> _pimpl;
};
///////////////////////////////////////////////////////////////////
* \throws Exception if file contain more services and rewrite file failed
*/
void removeService( const std::string & alias );
-
+ /** \overload Take alias from ServiceInfo */
void removeService( const ServiceInfo & service );
/**
* Refresh specific service.
*
- * \param name service structure
+ * \param alias unique indientifier of the service to refresh
+ *
+ * \throws RepoException if service is not found.
* \throws MediaException If there's a problem downloading the repo index file.
*/
+ void refreshService( const std::string & alias );
+ /** \overload Take alias from ServiceInfo */
void refreshService( const ServiceInfo & service );
/**
* \throws RepoException if sservice with oldAlias is not known
* \throws Exception if have problems with files
*/
- void modifyService(const std::string & oldAlias, const ServiceInfo & service);
+ void modifyService( const std::string & oldAlias, const ServiceInfo & service );
private:
/**
/**
* Checks for existing repository license files of \a repo and extract them
* in \a target directory.
- *
+ *
* \param repo Repository to check.
* \param target Path to directory where the license files should be copied.
* \return true if license files were found and successfully extracted,
* false otherwise.
*/
- bool getLicenseFiles(const RepoInfo & repo, const Pathname & target);
+ bool getLicenseFiles(const RepoInfo & repo, const Pathname & target) ZYPP_DEPRECATED;
/**
* Returns path to a license file suitable for current system locale, given
* a directory with all available license files. License files' names must
* match the following regex: <tt>^license\.?(.*)\.txt$</tt> where the
* substring enclosed in parentheses is the locale code.
- *
- * Examples: license.en_US.txt, license.en.txt, license.txt
- *
+ *
+ * Examples: license.en_US.txt, license.en.txt, license.txt
+ *
* \param ldir Path to a directory containing all license files.
* \return path to the license file, or an empty path on failure.
- *
+ *
* \see getLicenseFiles(RepoInfo const&, Pathanme const&)
*/
- Pathname getLicenseFile( const Pathname & ldir );
+ Pathname getLicenseFile( const Pathname & ldir ) ZYPP_DEPRECATED;
/**
* Returns path to a license file suitable for given \a locale, given
* a directory with all available license files.
- *
+ *
* \param ldir Path to a directory containing all license files.
* \return path to the license file, or an empty path on failure.
- *
+ *
* \see getLicenseFiles(RepoInfo const&, Pathanme const&)
* \see getLicenseFile(Pathanme const&)
*/
- Pathname getLicenseFile( const Pathname & ldir, const Locale & locale );
+ Pathname getLicenseFile( const Pathname & ldir, const Locale & locale ) ZYPP_DEPRECATED;
/**
* \todo implement
*/
- std::set<Locale> getAvailableLicenseLocales( const Pathname & ldir );
+ std::set<Locale> getAvailableLicenseLocales( const Pathname & ldir ) ZYPP_DEPRECATED;
protected:
RepoStatus rawMetadataStatus( const RepoInfo &info );