From 196fd13629fc0f673b18735d633bdf69a3272590 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Mon, 14 Mar 2011 11:34:32 +0100 Subject: * mirror method: - when downloading data, show the mirror being used --- apt-pkg/acquire-method.cc | 17 ++++++++++++----- apt-pkg/acquire-worker.cc | 11 +++++++++++ debian/changelog | 2 ++ methods/mirror.cc | 4 ++++ 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/apt-pkg/acquire-method.cc b/apt-pkg/acquire-method.cc index 17d52cf51..29d53f2ac 100644 --- a/apt-pkg/acquire-method.cc +++ b/apt-pkg/acquire-method.cc @@ -149,6 +149,8 @@ void pkgAcqMethod::URIStart(FetchResult &Res) if (Res.ResumePoint != 0) End += snprintf(End,sizeof(S)-4 - (End - S),"Resume-Point: %lu\n", Res.ResumePoint); + if (UsedMirror.empty() == false) + End += snprintf(End,sizeof(S)-50 - (End - S),"UsedMirror: %s\n",UsedMirror.c_str()); strcat(End,"\n"); if (write(STDOUT_FILENO,S,strlen(S)) != (signed)strlen(S)) @@ -418,9 +420,11 @@ void pkgAcqMethod::Log(const char *Format,...) // sprintf the description char S[1024]; - unsigned int Len = snprintf(S,sizeof(S)-4,"101 Log\nURI: %s\n" - "Message: ",CurrentURI.c_str()); - + unsigned int Len = snprintf(S,sizeof(S)-4,"101 Log\n" + "URI: %s\n" + "UsedMirror: %s\n" + "Message: ", UsedMirror.c_str(), + CurrentURI.c_str()); vsnprintf(S+Len,sizeof(S)-4-Len,Format,args); strcat(S,"\n\n"); @@ -442,8 +446,11 @@ void pkgAcqMethod::Status(const char *Format,...) // sprintf the description char S[1024]; - unsigned int Len = snprintf(S,sizeof(S)-4,"102 Status\nURI: %s\n" - "Message: ",CurrentURI.c_str()); + unsigned int Len = snprintf(S,sizeof(S)-4,"102 Status\n" + "URI: %s\n" + "UsedMirror: %s\n" + "Message: ",UsedMirror.c_str(), + CurrentURI.c_str()); vsnprintf(S+Len,sizeof(S)-4-Len,Format,args); strcat(S,"\n\n"); diff --git a/apt-pkg/acquire-worker.cc b/apt-pkg/acquire-worker.cc index 4f0b52af9..ddd8e3101 100644 --- a/apt-pkg/acquire-worker.cc +++ b/apt-pkg/acquire-worker.cc @@ -199,6 +199,17 @@ bool pkgAcquire::Worker::RunMessages() pkgAcquire::Queue::QItem *Itm = 0; if (URI.empty() == false) Itm = OwnerQ->FindItem(URI,this); + + // update used mirror + string UsedMirror = LookupTag(Message,"UsedMirror", ""); + if (!UsedMirror.empty() && + Itm && + Itm->Description.find(" ") != string::npos) + { + Itm->Description.replace(0, Itm->Description.find(" "), UsedMirror); + // FIXME: will we need this as well? + //Itm->ShortDesc = UsedMirror; + } // Determine the message number and dispatch switch (Number) diff --git a/debian/changelog b/debian/changelog index 6176aa87e..efa7be763 100644 --- a/debian/changelog +++ b/debian/changelog @@ -11,6 +11,8 @@ apt (0.8.13) unstable; urgency=low * apt-pkg/acquire-item.cc: - mark pkgAcqIndexTrans as Index-File to avoid asking the user to insert the CD on each apt-get update + * mirror method: + - when downloading data, show the mirror being used -- Michael Vogt Thu, 10 Mar 2011 15:56:54 +0100 diff --git a/methods/mirror.cc b/methods/mirror.cc index d092cc657..5a53d3c81 100644 --- a/methods/mirror.cc +++ b/methods/mirror.cc @@ -186,6 +186,10 @@ bool MirrorMethod::TryNextMirror() Queue->Uri.replace(0, mirror->length(), *nextmirror); if (Debug) clog << "TryNextMirror: " << Queue->Uri << endl; + + // inform parent + UsedMirror = *nextmirror; + Log("Switching mirror"); return true; } -- cgit v1.2.3