libzypp
10.5.0
|
00001 /*---------------------------------------------------------------------\ 00002 | ____ _ __ __ ___ | 00003 | |__ / \ / / . \ . \ | 00004 | / / \ V /| _/ _/ | 00005 | / /__ | | | | | | | 00006 | /_____||_| |_| |_| | 00007 | | 00008 \---------------------------------------------------------------------*/ 00014 #ifndef ZYPP_POOLQUERYUTIL_TCC 00015 #define ZYPP_POOLQUERYUTIL_TCC 00016 00017 #include <fstream> 00018 00019 #include "zypp/Pathname.h" 00020 #include "zypp/PoolQuery.h" 00021 #include "zypp/base/String.h" 00022 00023 namespace zypp 00024 { 00025 00035 template <class OutputIterator> 00036 void readPoolQueriesFromFile(const zypp::filesystem::Pathname &file, 00037 OutputIterator out ) 00038 { 00039 bool found; 00040 std::ifstream fin( file.c_str() ); 00041 00042 if (!fin) 00043 ZYPP_THROW(Exception(str::form("Cannot open file %s",file.c_str()))); 00044 00045 do 00046 { 00047 zypp::PoolQuery q; 00048 found = q.recover( fin ); 00049 if (found) 00050 *out++ = q; 00051 } while ( found ); 00052 00053 fin.close(); 00054 } 00055 00060 template <class InputIterator> 00061 void writePoolQueriesToFile(const zypp::filesystem::Pathname &file, 00062 InputIterator begin, InputIterator end ) 00063 { 00064 std::ofstream fout( file.c_str(), std::ios_base::out | std::ios_base::trunc ); 00065 00066 if (!fout) 00067 ZYPP_THROW(Exception(str::form("Cannot open file %s",file.c_str()))); 00068 00069 for_( it, begin, end ) 00070 { 00071 it->serialize( fout ); 00072 } 00073 00074 fout.close(); 00075 } 00076 00077 } 00078 #endif // ZYPP_POOLQUERYUTIL_H