|
|
@@ -30,7 +30,7 @@ class CDROMMethod : public pkgAcqMethod
|
|
|
::Configuration Database;
|
|
|
string CurrentID;
|
|
|
string CDROM;
|
|
|
- bool Mounted;
|
|
|
+ bool MountedByApt;
|
|
|
|
|
|
virtual bool Fetch(FetchItem *Itm);
|
|
|
string GetID(string Name);
|
|
|
@@ -48,7 +48,7 @@ CDROMMethod::CDROMMethod() : pkgAcqMethod("1.0",SingleInstance | LocalOnly |
|
|
|
SendConfig | NeedsCleanup |
|
|
|
Removable),
|
|
|
DatabaseLoaded(false),
|
|
|
- Mounted(false)
|
|
|
+ MountedByApt(false)
|
|
|
{
|
|
|
};
|
|
|
/*}}}*/
|
|
|
@@ -57,7 +57,7 @@ CDROMMethod::CDROMMethod() : pkgAcqMethod("1.0",SingleInstance | LocalOnly |
|
|
|
/* */
|
|
|
void CDROMMethod::Exit()
|
|
|
{
|
|
|
- if (Mounted == true)
|
|
|
+ if (MountedByApt == true)
|
|
|
UnmountCdrom(CDROM);
|
|
|
}
|
|
|
/*}}}*/
|
|
|
@@ -139,7 +139,8 @@ bool CDROMMethod::Fetch(FetchItem *Itm)
|
|
|
while (CurrentID.empty() == true)
|
|
|
{
|
|
|
bool Hit = false;
|
|
|
- Mounted = MountCdrom(CDROM);
|
|
|
+ if(!IsMounted(CDROM))
|
|
|
+ MountedByApt = MountCdrom(CDROM);
|
|
|
for (unsigned int Version = 2; Version != 0; Version--)
|
|
|
{
|
|
|
if (IdentCdrom(CDROM,NewID,Version) == false)
|
|
|
@@ -160,7 +161,8 @@ bool CDROMMethod::Fetch(FetchItem *Itm)
|
|
|
break;
|
|
|
|
|
|
// I suppose this should prompt somehow?
|
|
|
- if (UnmountCdrom(CDROM) == false)
|
|
|
+ if (_config->FindB("APT::CDROM::NoMount",false) == false &&
|
|
|
+ UnmountCdrom(CDROM) == false)
|
|
|
return _error->Error(_("Unable to unmount the CD-ROM in %s, it may still be in use."),
|
|
|
CDROM.c_str());
|
|
|
if (MediaFail(Get.Host,CDROM) == false)
|