#include <apt-pkg/update.h>
#include <string>
-#include <vector>
#include <apti18n.h>
/*}}}*/
bool Failed = false;
bool TransientNetworkFailure = false;
+ bool AllFailed = true;
for (pkgAcquire::ItemIterator I = Fetcher.ItemsBegin();
I != Fetcher.ItemsEnd(); ++I)
{
- if ((*I)->Status == pkgAcquire::Item::StatDone)
+ if ((*I)->Status == pkgAcquire::Item::StatDone) {
+ AllFailed = false;
continue;
+ }
(*I)->Finished();
uri.User.clear();
uri.Password.clear();
string descUri = string(uri);
- _error->Warning(_("Failed to fetch %s %s"), descUri.c_str(),
- (*I)->ErrorText.c_str());
-
+ // Show an error for non-transient failures, otherwise only warn
+ if ((*I)->Status == pkgAcquire::Item::StatTransientNetworkError)
+ _error->Warning(_("Failed to fetch %s %s"), descUri.c_str(),
+ (*I)->ErrorText.c_str());
+ else
+ _error->Error(_("Failed to fetch %s %s"), descUri.c_str(),
+ (*I)->ErrorText.c_str());
if ((*I)->Status == pkgAcquire::Item::StatTransientNetworkError)
{
TransientNetworkFailure = true;
// something went wrong with the clean
return false;
}
+
+ bool Res = true;
if (TransientNetworkFailure == true)
- _error->Warning(_("Some index files failed to download. They have been ignored, or old ones used instead."));
+ Res = _error->Warning(_("Some index files failed to download. They have been ignored, or old ones used instead."));
else if (Failed == true)
- return _error->Error(_("Some index files failed to download. They have been ignored, or old ones used instead."));
+ Res = _error->Error(_("Some index files failed to download. They have been ignored, or old ones used instead."));
// Run the success scripts if all was fine
if (RunUpdateScripts == true)
{
- if(!TransientNetworkFailure && !Failed)
+ if(AllFailed == false)
RunScripts("APT::Update::Post-Invoke-Success");
// Run the other scripts
RunScripts("APT::Update::Post-Invoke");
}
- return true;
+ return Res;
}
/*}}}*/