diff options
Diffstat (limited to 'cmdline/apt-get.cc')
-rw-r--r-- | cmdline/apt-get.cc | 57 |
1 files changed, 44 insertions, 13 deletions
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index da364e03c..4bc14a7c6 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: apt-get.cc,v 1.43 1999/02/21 08:38:53 jgg Exp $ +// $Id: apt-get.cc,v 1.44 1999/03/06 02:13:48 jgg Exp $ /* ###################################################################### apt-get - Cover for dpkg @@ -79,6 +79,18 @@ bool YnPrompt() return true; } /*}}}*/ +// AnalPrompt - Annoying Yes No Prompt. /*{{{*/ +// --------------------------------------------------------------------- +/* Returns true on a Yes.*/ +bool AnalPrompt(const char *Text) +{ + char Buf[1024]; + cin.getline(Buf,sizeof(Buf)); + if (strcmp(Buf,Text) == 0) + return true; + return false; +} + /*}}}*/ // ShowList - Show a list /*{{{*/ // --------------------------------------------------------------------- /* This prints out a string of space seperated words with a title and @@ -466,9 +478,10 @@ bool CacheFile::Open(bool AllowBroken) // --------------------------------------------------------------------- /* This displays the informative messages describing what is going to happen and then calls the download routines */ -bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true) +bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true,bool Saftey = true) { bool Fail = false; + bool Essential = false; // Show all the various warning indicators ShowDel(c1out,Cache); @@ -478,7 +491,8 @@ bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true) Fail |= !ShowHold(c1out,Cache); if (_config->FindB("APT::Get::Show-Upgraded",false) == true) ShowUpgraded(c1out,Cache); - Fail |= !ShowEssential(c1out,Cache); + Essential = !ShowEssential(c1out,Cache); + Fail |= Essential; Stats(c1out,Cache); // Sanity check @@ -570,18 +584,35 @@ bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true) if (Fail == true && _config->FindB("APT::Get::Force-Yes",false) == false) return _error->Error("There are problems and -y was used without --force-yes"); } - - // Prompt to continue - if (Ask == true) - { - if (_config->FindI("quiet",0) < 2 || - _config->FindB("APT::Get::Assume-Yes",false) == false) - c2out << "Do you want to continue? [Y/n] " << flush; - if (YnPrompt() == false) + if (Essential == true && Saftey == true) + { + c2out << "You are about to do something potentially harmful" << endl; + c2out << "To continue type in the phrase 'Yes, I understand this is bad'" << endl; + c2out << " ?] " << flush; + if (AnalPrompt("Yes, I understand this is bad") == false) + { + c2out << "Abort." << endl; exit(1); - } - + } + } + else + { + // Prompt to continue + if (Ask == true) + { + if (_config->FindI("quiet",0) < 2 || + _config->FindB("APT::Get::Assume-Yes",false) == false) + c2out << "Do you want to continue? [Y/n] " << flush; + + if (YnPrompt() == false) + { + c2out << "Abort." << endl; + exit(1); + } + } + } + if (_config->FindB("APT::Get::Print-URIs") == true) { pkgAcquire::UriIterator I = Fetcher.UriBegin(); |