X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/3eb9e257855d83d0486d7a5fa7cc5e2edebb6aaa..baec76f5f0f9fcbd71f6e2afaa7fc85543bd624c:/methods/cdrom.cc diff --git a/methods/cdrom.cc b/methods/cdrom.cc index b25fdf5a8..87a58e948 100644 --- a/methods/cdrom.cc +++ b/methods/cdrom.cc @@ -8,17 +8,21 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ -#include +#include + #include #include #include #include #include +#include #include +#include "aptmethod.h" + +#include +#include #include -#include -#include #include #include @@ -26,7 +30,7 @@ using namespace std; -class CDROMMethod : public pkgAcqMethod +class CDROMMethod : public aptMethod { bool DatabaseLoaded; bool Debug; @@ -39,9 +43,9 @@ class CDROMMethod : public pkgAcqMethod bool IsCorrectCD(URI want, string MountPath, string& NewID); bool AutoDetectAndMount(const URI, string &NewID); - virtual bool Fetch(FetchItem *Itm); + virtual bool Fetch(FetchItem *Itm) APT_OVERRIDE; string GetID(string Name); - virtual void Exit(); + virtual void Exit() APT_OVERRIDE; public: @@ -51,14 +55,15 @@ class CDROMMethod : public pkgAcqMethod // CDROMMethod::CDROMethod - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ -CDROMMethod::CDROMMethod() : pkgAcqMethod("1.0",SingleInstance | LocalOnly | +CDROMMethod::CDROMMethod() : aptMethod("cdrom", "1.0",SingleInstance | LocalOnly | SendConfig | NeedsCleanup | - Removable), - DatabaseLoaded(false), + Removable), + DatabaseLoaded(false), + Debug(false), MountedByApt(false) { UdevCdroms.Dlopen(); -}; +} /*}}}*/ // CDROMMethod::Exit - Unmount the disc if necessary /*{{{*/ // --------------------------------------------------------------------- @@ -172,7 +177,7 @@ bool CDROMMethod::Fetch(FetchItem *Itm) URI Get = Itm->Uri; string File = Get.Path; - Debug = _config->FindB("Debug::Acquire::cdrom", false); + Debug = DebugEnabled(); if (Debug) clog << "CDROMMethod::Fetch " << Itm->Uri << endl; @@ -219,7 +224,7 @@ bool CDROMMethod::Fetch(FetchItem *Itm) return true; } - bool AutoDetect = _config->FindB("Acquire::cdrom::AutoDetect", true); + bool const AutoDetect = ConfigFindB("AutoDetect", true); CDROM = _config->FindDir("Acquire::cdrom::mount"); if (Debug) clog << "Looking for CDROM at " << CDROM << endl; @@ -256,15 +261,16 @@ bool CDROMMethod::Fetch(FetchItem *Itm) struct stat Buf; if (stat(Res.Filename.c_str(),&Buf) != 0) return _error->Error(_("File not found")); - + + URIStart(Res); if (NewID.empty() == false) CurrentID = NewID; Res.LastModified = Buf.st_mtime; Res.Size = Buf.st_size; - Hashes Hash; + Hashes Hash(Itm->ExpectedHashes); FileFd Fd(Res.Filename, FileFd::ReadOnly); - Hash.AddFD(Fd.Fd(), Fd.Size()); + Hash.AddFD(Fd); Res.TakeHashes(Hash); URIDone(Res); @@ -274,8 +280,6 @@ bool CDROMMethod::Fetch(FetchItem *Itm) int main() { - setlocale(LC_ALL, ""); - - CDROMMethod Mth; - return Mth.Run(); + _config->CndSet("Binary::cdrom::Debug::NoDropPrivs", true); + return CDROMMethod().Run(); }