From ecd1db1ec610cc6a8cecfa7f8d4d3f6efced8937 Mon Sep 17 00:00:00 2001 From: Jan Kupec Date: Wed, 6 Jun 2007 07:34:37 +0000 Subject: [PATCH] RepoParserOpts added --- zypp/CMakeLists.txt | 1 + zypp/parser/yum/RepoParser.cc | 52 +++++++++++++++++++++++++--------------- zypp/parser/yum/RepoParser.h | 7 +++--- zypp/parser/yum/RepoParserOpts.h | 31 ++++++++++++++++++++++++ 4 files changed, 69 insertions(+), 22 deletions(-) create mode 100644 zypp/parser/yum/RepoParserOpts.h diff --git a/zypp/CMakeLists.txt b/zypp/CMakeLists.txt index d8abe85..5b3270a 100644 --- a/zypp/CMakeLists.txt +++ b/zypp/CMakeLists.txt @@ -558,6 +558,7 @@ SET( zypp_parser_yum_HEADERS parser/yum/YUMProductParser.h parser/yum/YUMRepomdParser.h parser/yum/RepoParser.h + parser/yum/RepoParserOpts.h parser/yum/FileReaderBase.h parser/yum/FileReaderBaseImpl.h parser/yum/RepomdFileReader.h diff --git a/zypp/parser/yum/RepoParser.cc b/zypp/parser/yum/RepoParser.cc index 99ce1a4..b9cb451 100644 --- a/zypp/parser/yum/RepoParser.cc +++ b/zypp/parser/yum/RepoParser.cc @@ -7,7 +7,7 @@ | | \---------------------------------------------------------------------*/ /** \file zypp2/parser/yum/RepoParser.cc - * YUM parser implementation. + * YUM repository metadata parser implementation. */ #include @@ -81,6 +81,7 @@ namespace zypp Impl( const data::RecordId & repository_id, data::ResolvableDataConsumer & consumer, + const RepoParserOpts & options = RepoParserOpts(), const ProgressData::ReceiverFnc & progress = ProgressData::ReceiverFnc() ); @@ -175,6 +176,9 @@ namespace zypp /** Progress reporting object for overall YUM parser progress. */ ProgressData _ticks; + + /** */ + const RepoParserOpts & _options; }; /////////////////////////////////////////////////////////////////////////// @@ -182,9 +186,10 @@ namespace zypp RepoParser::Impl::Impl( const data::RecordId & repository_id, data::ResolvableDataConsumer & consumer, + const RepoParserOpts & options, const ProgressData::ReceiverFnc & progress) : - _repository_id(repository_id), _consumer(consumer) + _repository_id(repository_id), _consumer(consumer), _options(options) { _ticks.name("RepoParser"); _ticks.sendTo(progress); @@ -335,7 +340,7 @@ namespace zypp // parse primary.xml.gz case YUMResourceType::PRIMARY_e: { - zypp::parser::yum::PrimaryFileReader( + PrimaryFileReader( cache_dir + job.filename(), bind(&RepoParser::Impl::primary_CB, this, _1), &progress_function); @@ -344,7 +349,7 @@ namespace zypp case YUMResourceType::PATCHES_e: { - zypp::source::yum::PatchesFileReader( + source::yum::PatchesFileReader( cache_dir + job.filename(), bind(&RepoParser::Impl::patches_CB, this, _1, _2)); // reset progress reporter max value (number of jobs changed if @@ -355,7 +360,7 @@ namespace zypp case YUMResourceType::PATCH_e: { - zypp::parser::yum::PatchFileReader( + PatchFileReader( cache_dir + job.filename(), bind(&RepoParser::Impl::patch_CB, this, _1)); break; @@ -363,28 +368,36 @@ namespace zypp case YUMResourceType::OTHER_e: { - WAR << "ignoring other.xml.gz for now..." << endl; - /* - zypp::parser::yum::Impl::OtherFileReader( - cache_dir + job.filename(), - bind(&RepoParser::other_CB, this, _1, _2), - &progress_function); - */ + if (!_options.skipOther) + { + OtherFileReader( + cache_dir + job.filename(), + bind(&RepoParser::Impl::other_CB, this, _1, _2), + &progress_function); + } + else + MIL << "skipping other.xml.gz"; break; } case YUMResourceType::FILELISTS_e: { - zypp::parser::yum::FilelistsFileReader( - cache_dir + job.filename(), - bind(&RepoParser::Impl::filelist_CB, this, _1, _2), - &progress_function); + if (!_options.skipFilelists) + { + FilelistsFileReader( + cache_dir + job.filename(), + bind(&RepoParser::Impl::filelist_CB, this, _1, _2), + &progress_function); + } + else + MIL << "skipping filelists.xml.gz"; + break; } case YUMResourceType::PATTERNS_e: { - zypp::parser::yum::PatternFileReader( + PatternFileReader( cache_dir + job.filename(), bind(&RepoParser::Impl::pattern_CB, this, _1)); break; @@ -392,7 +405,7 @@ namespace zypp case YUMResourceType::PRODUCTS_e: { - zypp::parser::yum::ProductFileReader( + ProductFileReader( cache_dir + job.filename(), bind(&RepoParser::Impl::product_CB, this, _1)); break; @@ -421,9 +434,10 @@ namespace zypp RepoParser::RepoParser( const data::RecordId & repository_id, data::ResolvableDataConsumer & consumer, + const RepoParserOpts & options, const ProgressData::ReceiverFnc & progress) : - _pimpl(new Impl(repository_id, consumer, progress)) + _pimpl(new Impl(repository_id, consumer, options, progress)) {} diff --git a/zypp/parser/yum/RepoParser.h b/zypp/parser/yum/RepoParser.h index 626562b..b68475c 100644 --- a/zypp/parser/yum/RepoParser.h +++ b/zypp/parser/yum/RepoParser.h @@ -7,8 +7,7 @@ | | \---------------------------------------------------------------------*/ /** \file zypp2/parser/yum/RepoParser.h - * - * YUM parser public API definition. + * YUM repository metadata parser public API definition. */ #ifndef ZYPP_PARSER_YUM_REPOPARSER_H_ #define ZYPP_PARSER_YUM_REPOPARSER_H_ @@ -20,6 +19,7 @@ #include "zypp/data/ResolvableDataConsumer.h" #include "zypp/ProgressData.h" +#include "zypp/parser/yum/RepoParserOpts.h" namespace zypp @@ -71,9 +71,10 @@ namespace zypp RepoParser( const data::RecordId & repository_id, data::ResolvableDataConsumer & consumer, + const RepoParserOpts & options = RepoParserOpts(), const ProgressData::ReceiverFnc & progress = ProgressData::ReceiverFnc() ); - + /** * DTOR */ diff --git a/zypp/parser/yum/RepoParserOpts.h b/zypp/parser/yum/RepoParserOpts.h new file mode 100644 index 0000000..98c0d6b --- /dev/null +++ b/zypp/parser/yum/RepoParserOpts.h @@ -0,0 +1,31 @@ +#ifndef ZYPP_PARSER_YUM_REPOPARSEROPTS_H_ +#define ZYPP_PARSER_YUM_REPOPARSEROPTS_H_ + +#include "zypp/base/DefaultIntegral.h" + +namespace zypp +{ + namespace parser + { + namespace yum + { + + + /** YUM parser options */ + struct RepoParserOpts + { + /** Skip parsing of other.xml.gz */ + DefaultIntegral skipOther; + + /** Skip parsing of filelists.xml.gz */ + DefaultIntegral skipFilelists; + }; + + + } // ns yum + } // ns parser +} // ns zypp + +#endif /*ZYPP_PARSER_YUM_REPOPARSEROPTS_H_*/ + +// vim: set ts=2 sts=2 sw=2 et ai: -- 2.7.4