]> git.saurik.com Git - apt.git/commitdiff
CDROM support
authorArch Librarian <arch@canonical.com>
Mon, 20 Sep 2004 16:51:50 +0000 (16:51 +0000)
committerArch Librarian <arch@canonical.com>
Mon, 20 Sep 2004 16:51:50 +0000 (16:51 +0000)
Author: jgg
Date: 1998-12-04 21:16:46 GMT
CDROM support

apt-pkg/acquire-method.cc
apt-pkg/acquire-worker.cc
apt-pkg/acquire-worker.h
apt-pkg/acquire.h
apt-pkg/contrib/strutl.cc
cmdline/acqprogress.cc
cmdline/acqprogress.h
doc/method.sgml

index 7c3fdecb38204f8bab94b7a8e3396e92ff8f3546..1cebf9a71d2d313700fc1f352b5b44bfbe477f23 100644 (file)
@@ -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);
index 3e76b3d9db5563ceb4f943091ea1acee9d9a3393..67bb61207c951f7ea2766b4bc706982dd3b54ead 100644 (file)
@@ -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;
@@ -318,6 +324,32 @@ bool pkgAcquire::Worker::Capabilities(string Message)
         Config->SendConfig << endl;
    }
    
+   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;
 }
                                                                        /*}}}*/
@@ -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;
index 95ba340ac76a881db07591032ac8a8d4f4f6194c..29bdcc2996bbbb64ebd3c2280c64129fa5c6c579 100644 (file)
@@ -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();
    
index 1526a1f7a28668cc4b4fd91dbef8b533b4868023..dc3896d3fc8b1656597b9b8850397bde59b75c43 100644 (file)
@@ -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();
index 273118e9da5cd09b1d697edc859fc38d0d60a87b..499b72a5e93f13c6d77bd3beb30cf3b970648c6c 100644 (file)
@@ -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;
index c80d4a67091d6817452365565e7c87142976ff37..01f6f7945a35d31650df4b236658ef8a490865d3 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: acqprogress.cc,v 1.4 1998/11/28 20:56:08 jgg Exp $
+// $Id: acqprogress.cc,v 1.5 1998/12/04 21:16:52 jgg Exp $
 /* ######################################################################
 
    Acquire Progress - Command line progress meter 
@@ -228,3 +228,20 @@ void AcqTextStatus::Pulse(pkgAcquire *Owner)
    Update = false;
 }
                                                                        /*}}}*/
+// AcqTextStatus::MediaChange - Media need to be swapped               /*{{{*/
+// ---------------------------------------------------------------------
+/* Prompt for a media swap */
+bool AcqTextStatus::MediaChange(string Media,string Drive)
+{
+   if (Quiet <= 0)
+      cout << '\r' << BlankLine << '\r';   
+   cout << "Media Change: Please insert the Disc labeled '" << Media << "' in "\
+           " the drive '" << Drive << "' and press a key" << endl;
+
+   char C;
+   read(STDIN_FILENO,&C,1);
+   
+   Update = true;
+   return true;
+}
+                                                                       /*}}}*/
index 9dd5c60cf90b3ca33466b50c12bcddc637b330e5..8cee3cd29c9ede97ffc0b7d1220fbd6c9704c3ac 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: acqprogress.h,v 1.2 1998/11/12 05:30:09 jgg Exp $
+// $Id: acqprogress.h,v 1.3 1998/12/04 21:16:53 jgg Exp $
 /* ######################################################################
 
    Acquire Progress - Command line progress meter 
@@ -21,6 +21,7 @@ class AcqTextStatus : public pkgAcquireStatus
    
    public:
    
+   virtual bool MediaChange(string Media,string Drive);
    virtual void IMSHit(pkgAcquire::ItemDesc &Itm);
    virtual void Fetch(pkgAcquire::ItemDesc &Itm);
    virtual void Done(pkgAcquire::ItemDesc &Itm);
index 35070d919a1e28730d185450e748bcd850bf2fd6..d1ebddcf571044c217da73778f9573998ba1c3ef 100644 (file)
@@ -4,7 +4,7 @@
 <title>APT Method Interface </title>
 
 <author>Jason Gunthorpe <email>jgg@debian.org</email></author>
-<version>$Id: method.sgml,v 1.4 1998/10/30 07:53:49 jgg Exp $</version>
+<version>$Id: method.sgml,v 1.5 1998/12/04 21:16:54 jgg Exp $</version>
 
 <abstract>
 This document describes the interface that APT uses to the archive
@@ -207,6 +207,8 @@ The following is a short index of the header fields that are supported
 <tag>Site<item>String indicating the site authorization is required for
 <tag>User<item>Username for authorization
 <tag>Password<item>Password for authorization
+<tag>Fail<item>Operation failed
+<tag>Drive<item>Drive the media should be placed in
 <tag>Config-Item<item>
 A string of the form <var>item</>=<var>value</> derived from the APT 
 configuration space. These may include method specific values and general
@@ -214,9 +216,8 @@ values not related to the method. It is up to the method to filter out
 the ones it wants.
 <tag>Single-Instance<item>Requires that only one instance of the method be run
                           This is a yes/no value.
-<tag>Pre-Scan<item>Method can detect if archives are already available.
-                   This is a yes/no value.
 <tag>Pipeline<item>The method is capable of pipelining.
+<tag>Local<item>The method only returns Filename: feilds.
 <tag>Send-Config<item>Send configuration to the method.
 <tag>Version<item>Version string for the method
 </taglist>
@@ -279,7 +280,7 @@ Fields: Site
 <tag>403 Media Failure<item>
 A method that deals with multiple media requires that a new media be inserted.
 The Media field contains the name of the media to be inserted.
-Fields: Media
+Fields: Media, Drive
 
 <tag>600 URI Acquire<item>
 APT is requesting that a new URI be added to the acquire list. Last-Modified
@@ -301,7 +302,7 @@ Fields: Site, User, Password
 <tag>603 Media Changed<item>
 This is sent in response to a <em>403 Media Failure</> message. It
 indicates that the user has changed media and it is safe to proceed.
-Fields: Media
+Fields: Media, Fail
 </taglist>
 
 </sect>