From bf783d9044cb5c9e851fbf10c9bb7e6192b13afd Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Fri, 22 Jan 2010 21:21:30 +0100 Subject: * methods/cdrom.cc: - fixes in multi cdrom setup code --- methods/cdrom.cc | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) (limited to 'methods/cdrom.cc') diff --git a/methods/cdrom.cc b/methods/cdrom.cc index 9802eb46c..763547013 100644 --- a/methods/cdrom.cc +++ b/methods/cdrom.cc @@ -37,8 +37,8 @@ class CDROMMethod : public pkgAcqMethod bool MountedByApt; pkgUdevCdromDevices UdevCdroms; - bool IsCorrectCD(URI want, string MountPath); - bool AutoDetectAndMount(URI); + bool IsCorrectCD(URI want, string MountPath, string& NewID); + bool AutoDetectAndMount(URI, string &NewID); virtual bool Fetch(FetchItem *Itm); string GetID(string Name); virtual void Exit(); @@ -92,7 +92,7 @@ string CDROMMethod::GetID(string Name) // CDROMMethod::AutoDetectAndMount /*{{{*/ // --------------------------------------------------------------------- /* Modifies class varaiable CDROM to the mountpoint */ -bool CDROMMethod::AutoDetectAndMount(URI Get) +bool CDROMMethod::AutoDetectAndMount(URI Get, string NewID) { vector v = UdevCdroms.Scan(); @@ -103,7 +103,7 @@ bool CDROMMethod::AutoDetectAndMount(URI Get) { if (Debug) clog << "Checking mounted cdrom device " << v[i].DeviceName << endl; - if (IsCorrectCD(Get, v[i].MountPath)) + if (IsCorrectCD(Get, v[i].MountPath, NewID)) { CDROM = v[i].MountPath; return true; @@ -126,7 +126,7 @@ bool CDROMMethod::AutoDetectAndMount(URI Get) { if(MountCdrom("/media/apt", v[i].DeviceName)) { - if (IsCorrectCD(Get, "/media/apt")) + if (IsCorrectCD(Get, "/media/apt", NewID)) { MountedByApt = true; CDROM = "/media/apt"; @@ -144,10 +144,8 @@ bool CDROMMethod::AutoDetectAndMount(URI Get) // CDROMMethod::IsCorrectCD /*{{{*/ // --------------------------------------------------------------------- /* */ -bool CDROMMethod::IsCorrectCD(URI want, string MountPath) +bool CDROMMethod::IsCorrectCD(URI want, string MountPath, string& NewID) { - string NewID; - for (unsigned int Version = 2; Version != 0; Version--) { if (IdentCdrom(MountPath,NewID,Version) == false) @@ -226,17 +224,17 @@ bool CDROMMethod::Fetch(FetchItem *Itm) if (CDROM[0] == '.') CDROM= SafeGetCWD() + '/' + CDROM; - string NewID; + string NewID; while (CurrentID.empty() == true) { if (CDROM == "apt-udev-auto/") - AutoDetectAndMount(Get); + AutoDetectAndMount(Get, NewID); if(!IsMounted(CDROM)) MountedByApt = MountCdrom(CDROM); - if (IsCorrectCD(Get, CDROM)) + if (IsCorrectCD(Get, CDROM, NewID)) break; // I suppose this should prompt somehow? -- cgit v1.2.3-70-g09d2 From ff1e4b0626d8ce567492ccadbd30dfc32d4c15f1 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Tue, 26 Jan 2010 11:27:58 +0100 Subject: add new "Acquire::cdrom::AutoDetect" variable that enables/disables the dlopen of libudev for automatic cdrom detection --- debian/changelog | 2 ++ doc/examples/configure-index | 4 ++++ methods/cdrom.cc | 3 ++- 3 files changed, 8 insertions(+), 1 deletion(-) (limited to 'methods/cdrom.cc') diff --git a/debian/changelog b/debian/changelog index b499d7298..7e38cda99 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,6 +10,8 @@ apt (0.7.25.1) UNRELEASED; urgency=low the umount again * methods/cdrom.cc: - fixes in multi cdrom setup code + - add new "Acquire::cdrom::AutoDetect" variable that enables/disables + the dlopen of libudev for automatic cdrom detection -- Michael Vogt Fri, 18 Dec 2009 16:54:18 +0100 diff --git a/doc/examples/configure-index b/doc/examples/configure-index index 1e9946e1b..317acddf6 100644 --- a/doc/examples/configure-index +++ b/doc/examples/configure-index @@ -250,6 +250,10 @@ Acquire cdrom { + // do auto detection of the cdrom mountpoint + AutoDetect "true"; + + // cdrom mountpoint (needs to be defined in fstab if AutoDetect is not used) mount "/cdrom"; // You need the trailing slash! diff --git a/methods/cdrom.cc b/methods/cdrom.cc index 763547013..87794b052 100644 --- a/methods/cdrom.cc +++ b/methods/cdrom.cc @@ -218,6 +218,7 @@ bool CDROMMethod::Fetch(FetchItem *Itm) return true; } + bool AutoDetect = _config->FindB("Acquire::cdrom::AutoDetect", true); CDROM = _config->FindDir("Acquire::cdrom::mount","/cdrom/"); if (Debug) clog << "Looking for CDROM at " << CDROM << endl; @@ -228,7 +229,7 @@ bool CDROMMethod::Fetch(FetchItem *Itm) string NewID; while (CurrentID.empty() == true) { - if (CDROM == "apt-udev-auto/") + if (AutoDetect) AutoDetectAndMount(Get, NewID); if(!IsMounted(CDROM)) -- cgit v1.2.3-70-g09d2 From c1f168f54be5b4babeb9b91cd7145441ea2489ad Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Tue, 26 Jan 2010 13:37:25 +0100 Subject: methods/cdrom.cc: fix compilication error --- methods/cdrom.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'methods/cdrom.cc') diff --git a/methods/cdrom.cc b/methods/cdrom.cc index 87794b052..0e78851ff 100644 --- a/methods/cdrom.cc +++ b/methods/cdrom.cc @@ -92,7 +92,7 @@ string CDROMMethod::GetID(string Name) // CDROMMethod::AutoDetectAndMount /*{{{*/ // --------------------------------------------------------------------- /* Modifies class varaiable CDROM to the mountpoint */ -bool CDROMMethod::AutoDetectAndMount(URI Get, string NewID) +bool CDROMMethod::AutoDetectAndMount(URI Get, string &NewID) { vector v = UdevCdroms.Scan(); -- cgit v1.2.3-70-g09d2