diff options
author | Michael Vogt <mvo@debian.org> | 2010-11-18 09:25:29 +0100 |
---|---|---|
committer | Michael Vogt <mvo@debian.org> | 2010-11-18 09:25:29 +0100 |
commit | 5c246b99204e8ef32243ae42c5ca3a2dee54e59b (patch) | |
tree | abb03ce67d944e59ab9d8f64535211e35618c4df /cmdline | |
parent | c79cb79f5c847a18304109849646360a34f000c9 (diff) | |
parent | 996c6447aeb6b4747d21b5fd18ce025b718d99a2 (diff) |
* cmdline/acqprogress.cc:
- don't ask the user for media change if quiet >= 2, stdout is not
a tty and assume-yes, force-yes or trivial-only option is set to
avoid cpu eating endless loops in unattended runs like apt.cron
(Closes: #602354, LP: #665580)
Diffstat (limited to 'cmdline')
-rw-r--r-- | cmdline/acqprogress.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/cmdline/acqprogress.cc b/cmdline/acqprogress.cc index 32e8243bf..ba334ce05 100644 --- a/cmdline/acqprogress.cc +++ b/cmdline/acqprogress.cc @@ -11,6 +11,7 @@ #include "acqprogress.h" #include <apt-pkg/acquire-item.h> #include <apt-pkg/acquire-worker.h> +#include <apt-pkg/configuration.h> #include <apt-pkg/strutl.h> #include <apt-pkg/error.h> @@ -19,6 +20,7 @@ #include <stdio.h> #include <signal.h> #include <iostream> +#include <unistd.h> /*}}}*/ using namespace std; @@ -266,6 +268,16 @@ bool AcqTextStatus::Pulse(pkgAcquire *Owner) /* Prompt for a media swap */ bool AcqTextStatus::MediaChange(string Media,string Drive) { + // If we do not output on a terminal and one of the options to avoid user + // interaction is given, we assume that no user is present who could react + // on your media change request + if (isatty(STDOUT_FILENO) != 1 && Quiet >= 2 && + (_config->FindB("APT::Get::Assume-Yes",false) == true || + _config->FindB("APT::Get::Force-Yes",false) == true || + _config->FindB("APT::Get::Trivial-Only",false) == true)) + + return false; + if (Quiet <= 0) cout << '\r' << BlankLine << '\r'; ioprintf(cout,_("Media change: please insert the disc labeled\n" |