X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/b3d44315ee812ba2d0a99751695b5a4314407ec2..60fcf649f0f413a3519b2e3894c8488e9156ab06:/methods/cdrom.cc diff --git a/methods/cdrom.cc b/methods/cdrom.cc index d5987dc45..d6b8eae75 100644 --- a/methods/cdrom.cc +++ b/methods/cdrom.cc @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -97,7 +98,7 @@ bool CDROMMethod::Fetch(FetchItem *Itm) { Res.LastModified = Itm->LastModified; Res.IMSHit = true; - Res.Filename = File; + Res.Filename = Itm->DestFile; URIDone(Res); return true; } @@ -119,15 +120,15 @@ bool CDROMMethod::Fetch(FetchItem *Itm) // All non IMS queries for package files fail. if (Itm->IndexFile == true || GetID(Get.Host).empty() == true) { - Fail(_("Please use apt-cdrom to make this CD recognized by APT." - " apt-get update cannot be used to add new CDs")); + Fail(_("Please use apt-cdrom to make this CD-ROM recognized by APT." + " apt-get update cannot be used to add new CD-ROMs")); return true; } // We already have a CD inserted, but it is the wrong one if (CurrentID.empty() == false && Database.Find("CD::" + CurrentID) != Get.Host) { - Fail(_("Wrong CD"),true); + Fail(_("Wrong CD-ROM"),true); return true; } @@ -165,8 +166,7 @@ bool CDROMMethod::Fetch(FetchItem *Itm) if (MediaFail(Get.Host,CDROM) == false) { CurrentID = "FAIL"; - Fail(_("Wrong CD"),true); - return true; + return _error->Error(_("Disk not found.")); } } @@ -180,6 +180,12 @@ bool CDROMMethod::Fetch(FetchItem *Itm) CurrentID = NewID; Res.LastModified = Buf.st_mtime; Res.Size = Buf.st_size; + + Hashes Hash; + FileFd Fd(Res.Filename, FileFd::ReadOnly); + Hash.AddFD(Fd.Fd(), Fd.Size()); + Res.TakeHashes(Hash); + URIDone(Res); return true; }