summaryrefslogtreecommitdiff
path: root/apt-pkg
diff options
context:
space:
mode:
Diffstat (limited to 'apt-pkg')
-rw-r--r--apt-pkg/acquire-method.cc6
-rw-r--r--apt-pkg/acquire-worker.cc37
-rw-r--r--apt-pkg/acquire-worker.h5
-rw-r--r--apt-pkg/acquire.h7
-rw-r--r--apt-pkg/contrib/strutl.cc4
5 files changed, 47 insertions, 12 deletions
diff --git a/apt-pkg/acquire-method.cc b/apt-pkg/acquire-method.cc
index 7c3fdecb3..1cebf9a71 100644
--- a/apt-pkg/acquire-method.cc
+++ b/apt-pkg/acquire-method.cc
@@ -1,6 +1,6 @@
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: acquire-method.cc,v 1.10 1998/12/03 07:29:16 jgg Exp $
+// $Id: acquire-method.cc,v 1.11 1998/12/04 21:16:46 jgg Exp $
/* ######################################################################
Acquire Method
@@ -230,8 +230,8 @@ void pkgAcqMethod::MediaFail(string Required,string Drive)
Messages.push_back(MyMessages.front());
MyMessages.erase(MyMessages.begin());
}
-
- return;
+
+ return StringToBool(LookupTag(Message,"Fail"),false);
}
Messages.push_back(Message);
diff --git a/apt-pkg/acquire-worker.cc b/apt-pkg/acquire-worker.cc
index 3e76b3d9d..67bb61207 100644
--- a/apt-pkg/acquire-worker.cc
+++ b/apt-pkg/acquire-worker.cc
@@ -1,6 +1,6 @@
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: acquire-worker.cc,v 1.13 1998/11/29 01:24:18 jgg Exp $
+// $Id: acquire-worker.cc,v 1.14 1998/12/04 21:16:47 jgg Exp $
/* ######################################################################
Acquire Worker
@@ -26,6 +26,7 @@
#include <unistd.h>
#include <signal.h>
#include <wait.h>
+#include <stdio.h>
/*}}}*/
// Worker::Worker - Constructor for Queue startup /*{{{*/
@@ -288,6 +289,11 @@ bool pkgAcquire::Worker::RunMessages()
case 401:
_error->Error("Method %s General failure: %s",LookupTag(Message,"Message").c_str());
break;
+
+ // 403 Media Change
+ case 403:
+ MediaChange(Message);
+ break;
}
}
return true;
@@ -321,6 +327,32 @@ bool pkgAcquire::Worker::Capabilities(string Message)
return true;
}
/*}}}*/
+// Worker::MediaChange - Request a media change /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgAcquire::Worker::MediaChange(string Message)
+{
+ if (Log == 0 || Log->MediaChange(LookupTag(Message,"Media"),
+ LookupTag(Message,"Drive")) == false)
+ {
+ char S[300];
+ sprintf(S,"603 Media Changed\nFailed: true\n\n");
+ if (Debug == true)
+ clog << " -> " << Access << ':' << QuoteString(S,"\n") << endl;
+ OutQueue += S;
+ OutReady = true;
+ return true;
+ }
+
+ char S[300];
+ sprintf(S,"603 Media Changed\n\n");
+ if (Debug == true)
+ clog << " -> " << Access << ':' << QuoteString(S,"\n") << endl;
+ OutQueue += S;
+ OutReady = true;
+ return true;
+}
+ /*}}}*/
// Worker::SendConfiguration - Send the config to the method /*{{{*/
// ---------------------------------------------------------------------
/* */
@@ -451,8 +483,7 @@ void pkgAcquire::Worker::Pulse()
{
if (CurrentItem == 0)
return;
-
-
+
struct stat Buf;
if (stat(CurrentItem->Owner->DestFile.c_str(),&Buf) != 0)
return;
diff --git a/apt-pkg/acquire-worker.h b/apt-pkg/acquire-worker.h
index 95ba340ac..29bdcc299 100644
--- a/apt-pkg/acquire-worker.h
+++ b/apt-pkg/acquire-worker.h
@@ -1,6 +1,6 @@
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: acquire-worker.h,v 1.7 1998/11/09 01:09:24 jgg Exp $
+// $Id: acquire-worker.h,v 1.8 1998/12/04 21:16:48 jgg Exp $
/* ######################################################################
Acquire Worker - Worker process manager
@@ -61,7 +61,8 @@ class pkgAcquire::Worker
// The message handlers
bool Capabilities(string Message);
bool SendConfiguration();
-
+ bool MediaChange(string Message);
+
bool MethodFailure();
void ItemDone();
diff --git a/apt-pkg/acquire.h b/apt-pkg/acquire.h
index 1526a1f7a..dc3896d3f 100644
--- a/apt-pkg/acquire.h
+++ b/apt-pkg/acquire.h
@@ -1,6 +1,6 @@
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: acquire.h,v 1.15 1998/11/29 01:24:20 jgg Exp $
+// $Id: acquire.h,v 1.16 1998/12/04 21:16:49 jgg Exp $
/* ######################################################################
Acquire - File Acquiration
@@ -208,11 +208,14 @@ class pkgAcquireStatus
// Called by items when they have finished a real download
virtual void Fetched(unsigned long Size,unsigned long ResumePoint);
+ // Called to change media
+ virtual bool MediaChange(string Media,string Drive) = 0;
+
// Each of these is called by the workers when an event occures
virtual void IMSHit(pkgAcquire::ItemDesc &Itm) {};
virtual void Fetch(pkgAcquire::ItemDesc &Itm) {};
virtual void Done(pkgAcquire::ItemDesc &Itm) {};
- virtual void Fail(pkgAcquire::ItemDesc &Itm) {};
+ virtual void Fail(pkgAcquire::ItemDesc &Itm) {};
virtual void Pulse(pkgAcquire *Owner);
virtual void Start();
virtual void Stop();
diff --git a/apt-pkg/contrib/strutl.cc b/apt-pkg/contrib/strutl.cc
index 273118e9d..499b72a5e 100644
--- a/apt-pkg/contrib/strutl.cc
+++ b/apt-pkg/contrib/strutl.cc
@@ -1,6 +1,6 @@
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: strutl.cc,v 1.14 1998/12/03 07:29:18 jgg Exp $
+// $Id: strutl.cc,v 1.15 1998/12/04 21:16:50 jgg Exp $
/* ######################################################################
String Util - Some usefull string functions.
@@ -640,7 +640,7 @@ void URI::CopyFrom(string U)
Path = "/";
// Now we attempt to locate a user:pass@host fragment
- if (U[1] == '/' && U[2] == '/')
+ if (FirstColon[1] == '/' && FirstColon[2] == '/')
FirstColon += 3;
else
FirstColon += 1;