SUSEMediaVerifier.cc
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include <fstream>
00011 #include "zypp/repo/SUSEMediaVerifier.h"
00012
00013 using namespace std;
00014
00015 namespace zypp
00016 {
00017 namespace repo
00018 {
00019
00020 SUSEMediaVerifier::SUSEMediaVerifier(const std::string & vendor_r,
00021 const std::string & id_r,
00022 const media::MediaNr media_nr)
00023 : _media_vendor(vendor_r)
00024 , _media_id(id_r)
00025 , _media_nr(media_nr)
00026 {}
00027
00028 SUSEMediaVerifier::SUSEMediaVerifier( int media_nr, const Pathname &path_r )
00029 : _media_nr(media_nr)
00030 {
00031 std::ifstream str(path_r.asString().c_str());
00032 std::string vendor;
00033 std::string id;
00034
00035 if ( str )
00036 {
00037 getline(str, _media_vendor);
00038 getline(str, _media_id);
00039 }
00040 else
00041 {
00042 ZYPP_THROW(Exception("Can't setup media verifier using file: '"
00043 + path_r.asString() + "'"));
00044 }
00045 }
00046
00047 bool SUSEMediaVerifier::isDesiredMedia(const media::MediaAccessRef &ref)
00048 {
00049 if (_media_vendor.empty() || _media_id.empty())
00050 return true;
00051
00052 Pathname media_file = "/media." + str::numstring(_media_nr) + "/media";
00053 ref->provideFile (media_file);
00054 media_file = ref->localPath(media_file);
00055 std::ifstream str(media_file.asString().c_str());
00056 std::string vendor;
00057 std::string id;
00058 #warning check the stream status
00059 getline(str, vendor);
00060 getline(str, id);
00061
00062 return (vendor == _media_vendor && id == _media_id );
00063 }
00064
00065 }
00066 }
00067