]> git.saurik.com Git - apt.git/commitdiff
* apt-pkg/deb/dpkgpm.cc:
authorMichael Vogt <michael.vogt@ubuntu.com>
Thu, 14 Jun 2007 09:59:13 +0000 (11:59 +0200)
committerMichael Vogt <michael.vogt@ubuntu.com>
Thu, 14 Jun 2007 09:59:13 +0000 (11:59 +0200)
  - apport integration added, this means that a apport
    report is written on dpkg failures
* merged from debian/unstable, remaining changes:
  - maintainer field changed

* merged the debian/experimental changes back
  into the debian/sid branch
* merged from Christian Perrier:
  * mr.po: New Marathi translation  Closes: #416806
  * zh_CN.po: Updated by Eric Pareja  Closes: #416822
  * tl.po: Updated by Eric Pareja   Closes: #416638
  * gl.po: Updated by Jacobo Tarrio
  * da.po: Updated by Claus Hindsgaul
  * fr.po: Remove a non-breakable space for usability
  * ru.po: Updated Russian translation. Closes: #405476
  * *.po: Unfuzzy after upstream typo corrections
* buildlib/archtable:
  - added support for sh3/sh4 (closes: #424870)
  - added support for m32r (closes: #394096)
* buildlib/systemtable:
  - added support for lpia
* configure.in:
  - check systemtable for architecture mapping too
* fix error in AutocleanInterval, closes: #319339
  (thanks to Israel G. Lugo for the patch)
* add "purge" commandline argument, closes: #133421)
  (thanks to Julien Danjou for the patch)
* add "purge" commandline argument, closes: #133421)
  (thanks to Julien Danjou for the patch)
* fix FTBFS with gcc 4.3, closes: #417090
  (thanks to Martin Michlmayr for the patch)
* add --dsc-only option, thanks to K. Richard Pixley
* Removed the more leftover #pragma interface/implementation
  closes: #306937 (thanks to Andreas Henriksson for the patch)

* ABI library name change because its build against
  new glibc
* implement SourceVer() in pkgRecords
   (thanks to Daniel Burrows for the patch!)
* apt-pkg/algorithm.cc:
  - use clog for all debugging
  - only increase the score of installed applications if they
    are not obsolete
  - fix resolver bug on removal triggered by weak-dependencies
    with or-groups
* methods/http.cc:
  - send apt version in User-Agent
* apt-pkg/deb/debrecords.cc:
  - fix SHA1Hash() return value
* apt-pkg/cdrom.cc:
  - only unmount if APT::CDROM::NoMount is false
* methods/cdrom.cc:
  - only umount if it was mounted by the method before
  - if decompression of a index fails, delete the index
  * vi.po: Updated to 515t. Closes: #426976
  * eu.po: Updated to 515t. Closes: #423766
  * pt.po: 515t. Closes: #423111
  * fr.po: Updated by Christian Perrier
  * Update all PO and the POT. Gives 513t2f for formerly
    complete translations
* Package that contains tall the new features
* Removed all #pragma interface/implementation
* Branch that contains tall the new features:
* translated package descriptions
* task install support
* automatic dependency removal (thanks to Daniel Burrows)
* merged support for the new dpkg "Breaks" field
  (thanks to Ian Jackson)
* handle network failures more gracefully on "update"
* support for unattended-upgrades (via unattended-upgrades
  package)
* added apt-transport-https method
  - ca.po: Updated to 514t
  - be.po: Updated to 514t
  - it.po: Updated to 514t
  - hu.po: Updated to 514t
  - zh_TW.po: Updated to 514t
  - ar.po: Updated to 293t221u.
  - ru.po: Updated to 514t. Closes: #392466
  - nb.po: Updated to 514t. Closes: #392466
  - pt.po: Updated to 514t. Closes: #393199
  - fr.po: One spelling error corrected: s/accèder/accéder
  - km.po: Updated to 514t.
  - ko.po: Updated to 514t.
  - bg.po: Updated to 514t.
  - de.po: Updated to 514t.
  - en_GB.po: Updated to 514t.
* debian/control:
  - depend on debian-archive-keyring to offer clean upgrade path
    (closes: #386800)
* merged "install-recommends" branch (ABI break):
  - new "--install-recommends"
  - install new recommends on "upgrade" if --install-recommends is
    given
  - new "--fix-policy" option to install all packages with unmet
    important dependencies (usefull with --install-recommends to
    see what not-installed recommends are on the system)
  - fix of recommended packages display (only show CandidateVersion
    fix or-group handling)
* merged "install-task" branch (use with "apt-get install taskname^")
* Applied patch from Daniel Schepler to make apt bin-NMU able.
* apt-pkg/acquire-item.cc:
  - fix reversed logic of the "Acquire::PDiffs" option
* apt-pkg/contrib/sha256.cc:
  - applied patch to fix unaligned access problem. Closes: #367417
    (thanks to David Mosberger)
* apt-pkg/contrib/sha256.{cc,h},hashes.{cc,h}: support for sha256
  (thanks to Anthony Towns)
* ftparchive/cachedb.{cc,h},writer.{cc,h}: optimizations
  (thanks to Anthony Towns)
* apt pdiff support from experimental merged
* apt-pkg/deb/dpkgpm.cc: wording fixes (thanks to Matt Zimmerman)
  - fix error in dpkg interaction (closes: #364513, thanks to Martin Dickopp)

17 files changed:
1  2 
apt-pkg/acquire-item.cc
apt-pkg/acquire-item.h
apt-pkg/acquire-method.h
apt-pkg/depcache.cc
apt-pkg/init.cc
apt-pkg/pkgrecords.h
configure.in
debian/apt.conf.autoremove
debian/apt.cron.daily
debian/changelog
debian/control
debian/rules
doc/examples/configure-index
methods/http.h
methods/makefile
po/apt-all.pot
share/debian-archive.gpg.moved

index c42c8af24895c21cf191ef23ceb20dab91a99fac,1b912058614de84cdb3bf874850d23b40110ab7d..b7b16b9a2301611b1cf57a4d5cb8acecd0196a2f
@@@ -105,8 -100,8 +108,8 @@@ void pkgAcquire::Item::Done(string Mess
  {
     // We just downloaded something..
     string FileName = LookupTag(Message,"Filename");
 -   // we only inform the Log class if it was actually not a local thing
 +   UsedMirror =  LookupTag(Message,"UsedMirror");
-    if (Complete == false && FileName == DestFile)
+    if (Complete == false && !Local && FileName == DestFile)
     {
        if (Owner->Log != 0)
         Owner->Log->Fetched(Size,atoi(LookupTag(Message,"Resume-Point","0").c_str()));
@@@ -136,49 -132,424 +139,467 @@@ void pkgAcquire::Item::Rename(string Fr
  }
                                                                        /*}}}*/
  
 +void pkgAcquire::Item::ReportMirrorFailure(string FailCode)
 +{
 +   // we only act if a mirror was used at all
 +   if(UsedMirror.empty())
 +      return;
 +#if 0
 +   std::cerr << "\nReportMirrorFailure: " 
 +           << UsedMirror
 +           << " Uri: " << DescURI()
 +           << " FailCode: " 
 +           << FailCode << std::endl;
 +#endif
 +   const char *Args[40];
 +   unsigned int i = 0;
 +   string report = _config->Find("Methods::Mirror::ProblemReporting", 
 +                               "/usr/lib/apt/apt-report-mirror-failure");
 +   if(!FileExists(report))
 +      return;
 +   Args[i++] = report.c_str();
 +   Args[i++] = UsedMirror.c_str();
 +   Args[i++] = DescURI().c_str();
 +   Args[i++] = FailCode.c_str();
 +   Args[i++] = NULL;
 +   pid_t pid = ExecFork();
 +   if(pid < 0) 
 +   {
 +      _error->Error("ReportMirrorFailure Fork failed");
 +      return;
 +   }
 +   else if(pid == 0) 
 +   {
 +      execvp(Args[0], (char**)Args);
 +      std::cerr << "Could not exec " << Args[0] << std::endl;
 +      _exit(100);
 +   }
 +   if(!ExecWait(pid, "report-mirror-failure")) 
 +   {
 +      _error->Warning("Couldn't report problem to '%s'",
 +                    _config->Find("Methods::Mirror::ProblemReporting").c_str());
 +   }
 +}
 +
 +
+ // AcqDiffIndex::AcqDiffIndex - Constructor                   
+ // ---------------------------------------------------------------------
+ /* Get the DiffIndex file first and see if there are patches availabe 
+  * If so, create a pkgAcqIndexDiffs fetcher that will get and apply the
+  * patches. If anything goes wrong in that process, it will fall back to
+  * the original packages file
+  */
+ pkgAcqDiffIndex::pkgAcqDiffIndex(pkgAcquire *Owner,
+                                string URI,string URIDesc,string ShortDesc,
+                                string ExpectedMD5)
+    : Item(Owner), RealURI(URI), ExpectedMD5(ExpectedMD5), Description(URIDesc)
+ {
+    
+    Debug = _config->FindB("Debug::pkgAcquire::Diffs",false);
+    Desc.Description = URIDesc + "/DiffIndex";
+    Desc.Owner = this;
+    Desc.ShortDesc = ShortDesc;
+    Desc.URI = URI + ".diff/Index";
+    DestFile = _config->FindDir("Dir::State::lists") + "partial/";
+    DestFile += URItoFileName(URI) + string(".DiffIndex");
+    if(Debug)
+       std::clog << "pkgAcqDiffIndex: " << Desc.URI << std::endl;
+    // look for the current package file
+    CurrentPackagesFile = _config->FindDir("Dir::State::lists");
+    CurrentPackagesFile += URItoFileName(RealURI);
+    // FIXME: this file:/ check is a hack to prevent fetching
+    //        from local sources. this is really silly, and
+    //        should be fixed cleanly as soon as possible
+    if(!FileExists(CurrentPackagesFile) || 
+       Desc.URI.substr(0,strlen("file:/")) == "file:/")
+    {
+       // we don't have a pkg file or we don't want to queue
+       if(Debug)
+        std::clog << "No index file, local or canceld by user" << std::endl;
+       Failed("", NULL);
+       return;
+    }
+    if(Debug) 
+       std::clog << "pkgAcqIndexDiffs::pkgAcqIndexDiffs(): " 
+               << CurrentPackagesFile << std::endl;
+    
+    QueueURI(Desc);
+ }
+ // AcqIndex::Custom600Headers - Insert custom request headers         /*{{{*/
+ // ---------------------------------------------------------------------
+ /* The only header we use is the last-modified header. */
+ string pkgAcqDiffIndex::Custom600Headers()
+ {
+    string Final = _config->FindDir("Dir::State::lists");
+    Final += URItoFileName(RealURI) + string(".IndexDiff");
+    
+    if(Debug)
+       std::clog << "Custom600Header-IMS: " << Final << std::endl;
+    struct stat Buf;
+    if (stat(Final.c_str(),&Buf) != 0)
+       return "\nIndex-File: true";
+    
+    return "\nIndex-File: true\nLast-Modified: " + TimeRFC1123(Buf.st_mtime);
+ }
+ bool pkgAcqDiffIndex::ParseDiffIndex(string IndexDiffFile)
+ {
+    if(Debug)
+       std::clog << "pkgAcqIndexDiffs::ParseIndexDiff() " << IndexDiffFile 
+               << std::endl;
+    pkgTagSection Tags;
+    string ServerSha1;
+    vector<DiffInfo> available_patches;
+    
+    FileFd Fd(IndexDiffFile,FileFd::ReadOnly);
+    pkgTagFile TF(&Fd);
+    if (_error->PendingError() == true)
+       return false;
+    if(TF.Step(Tags) == true)
+    {
+       string local_sha1;
+       bool found = false;
+       DiffInfo d;
+       string size;
+       string tmp = Tags.FindS("SHA1-Current");
+       std::stringstream ss(tmp);
+       ss >> ServerSha1;
+       FileFd fd(CurrentPackagesFile, FileFd::ReadOnly);
+       SHA1Summation SHA1;
+       SHA1.AddFD(fd.Fd(), fd.Size());
+       local_sha1 = string(SHA1.Result());
+       if(local_sha1 == ServerSha1) 
+       {
+        // we have the same sha1 as the server
+        if(Debug)
+           std::clog << "Package file is up-to-date" << std::endl;
+        // set found to true, this will queue a pkgAcqIndexDiffs with
+        // a empty availabe_patches
+        found = true;
+       } 
+       else 
+       {
+        if(Debug)
+           std::clog << "SHA1-Current: " << ServerSha1 << std::endl;
+        // check the historie and see what patches we need
+        string history = Tags.FindS("SHA1-History");     
+        std::stringstream hist(history);
+        while(hist >> d.sha1 >> size >> d.file) 
+        {
+           d.size = atoi(size.c_str());
+           // read until the first match is found
+           if(d.sha1 == local_sha1) 
+              found=true;
+           // from that point on, we probably need all diffs
+           if(found) 
+           {
+              if(Debug)
+                 std::clog << "Need to get diff: " << d.file << std::endl;
+              available_patches.push_back(d);
+           }
+        }
+       }
+       // we have something, queue the next diff
+       if(found) 
+       {
+        // queue the diffs
+        int last_space = Description.rfind(" ");
+        if(last_space != string::npos)
+           Description.erase(last_space, Description.size()-last_space);
+        new pkgAcqIndexDiffs(Owner, RealURI, Description, Desc.ShortDesc,
+                             ExpectedMD5, available_patches);
+        Complete = false;
+        Status = StatDone;
+        Dequeue();
+        return true;
+       }
+    }
+    
+    // Nothing found, report and return false
+    // Failing here is ok, if we return false later, the full
+    // IndexFile is queued
+    if(Debug)
+       std::clog << "Can't find a patch in the index file" << std::endl;
+    return false;
+ }
+ void pkgAcqDiffIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
+ {
+    if(Debug)
+       std::clog << "pkgAcqDiffIndex failed: " << Desc.URI << std::endl
+               << "Falling back to normal index file aquire" << std::endl;
+    new pkgAcqIndex(Owner, RealURI, Description, Desc.ShortDesc, 
+                  ExpectedMD5);
+    Complete = false;
+    Status = StatDone;
+    Dequeue();
+ }
+ void pkgAcqDiffIndex::Done(string Message,unsigned long Size,string Md5Hash,
+                          pkgAcquire::MethodConfig *Cnf)
+ {
+    if(Debug)
+       std::clog << "pkgAcqDiffIndex::Done(): " << Desc.URI << std::endl;
+    Item::Done(Message,Size,Md5Hash,Cnf);
+    string FinalFile;
+    FinalFile = _config->FindDir("Dir::State::lists")+URItoFileName(RealURI);
+    // sucess in downloading the index
+    // rename the index
+    FinalFile += string(".IndexDiff");
+    if(Debug)
+       std::clog << "Renaming: " << DestFile << " -> " << FinalFile 
+               << std::endl;
+    Rename(DestFile,FinalFile);
+    chmod(FinalFile.c_str(),0644);
+    DestFile = FinalFile;
+    if(!ParseDiffIndex(DestFile))
+       return Failed("", NULL);
+    Complete = true;
+    Status = StatDone;
+    Dequeue();
+    return;
+ }
+ // AcqIndexDiffs::AcqIndexDiffs - Constructor                 
+ // ---------------------------------------------------------------------
+ /* The package diff is added to the queue. one object is constructed
+  * for each diff and the index
+  */
+ pkgAcqIndexDiffs::pkgAcqIndexDiffs(pkgAcquire *Owner,
+                                  string URI,string URIDesc,string ShortDesc,
+                                  string ExpectedMD5, vector<DiffInfo> diffs)
+    : Item(Owner), RealURI(URI), ExpectedMD5(ExpectedMD5), 
+      available_patches(diffs)
+ {
+    
+    DestFile = _config->FindDir("Dir::State::lists") + "partial/";
+    DestFile += URItoFileName(URI);
+    Debug = _config->FindB("Debug::pkgAcquire::Diffs",false);
+    Description = URIDesc;
+    Desc.Owner = this;
+    Desc.ShortDesc = ShortDesc;
+    if(available_patches.size() == 0) 
+    {
+       // we are done (yeah!)
+       Finish(true);
+    }
+    else
+    {
+       // get the next diff
+       State = StateFetchDiff;
+       QueueNextDiff();
+    }
+ }
+ void pkgAcqIndexDiffs::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
+ {
+    if(Debug)
+       std::clog << "pkgAcqIndexDiffs failed: " << Desc.URI << std::endl
+               << "Falling back to normal index file aquire" << std::endl;
+    new pkgAcqIndex(Owner, RealURI, Description,Desc.ShortDesc, 
+                  ExpectedMD5);
+    Finish();
+ }
+ // helper that cleans the item out of the fetcher queue
+ void pkgAcqIndexDiffs::Finish(bool allDone)
+ {
+    // we restore the original name, this is required, otherwise
+    // the file will be cleaned
+    if(allDone) 
+    {
+       DestFile = _config->FindDir("Dir::State::lists");
+       DestFile += URItoFileName(RealURI);
+       // do the final md5sum checking
+       MD5Summation sum;
+       FileFd Fd(DestFile, FileFd::ReadOnly);
+       sum.AddFD(Fd.Fd(), Fd.Size());
+       Fd.Close();
+       string MD5 = (string)sum.Result();
+       if (!ExpectedMD5.empty() && MD5 != ExpectedMD5)
+       {
+        Status = StatAuthError;
+        ErrorText = _("MD5Sum mismatch");
+        Rename(DestFile,DestFile + ".FAILED");
+        Dequeue();
+        return;
+       }
+       // this is for the "real" finish
+       Complete = true;
+       Status = StatDone;
+       Dequeue();
+       if(Debug)
+        std::clog << "\n\nallDone: " << DestFile << "\n" << std::endl;
+       return;
+    }
+    if(Debug)
+       std::clog << "Finishing: " << Desc.URI << std::endl;
+    Complete = false;
+    Status = StatDone;
+    Dequeue();
+    return;
+ }
+ bool pkgAcqIndexDiffs::QueueNextDiff()
+ {
+    // calc sha1 of the just patched file
+    string FinalFile = _config->FindDir("Dir::State::lists");
+    FinalFile += URItoFileName(RealURI);
+    FileFd fd(FinalFile, FileFd::ReadOnly);
+    SHA1Summation SHA1;
+    SHA1.AddFD(fd.Fd(), fd.Size());
+    string local_sha1 = string(SHA1.Result());
+    if(Debug)
+       std::clog << "QueueNextDiff: " 
+               << FinalFile << " (" << local_sha1 << ")"<<std::endl;
+    // remove all patches until the next matching patch is found
+    // this requires the Index file to be ordered
+    for(vector<DiffInfo>::iterator I=available_patches.begin();
+        available_patches.size() > 0 && 
+         I != available_patches.end() &&
+         (*I).sha1 != local_sha1; 
+        I++) 
+    {
+       available_patches.erase(I);
+    }
+    // error checking and falling back if no patch was found
+    if(available_patches.size() == 0) 
+    { 
+       Failed("", NULL);
+       return false;
+    }
+    // queue the right diff
+    Desc.URI = string(RealURI) + ".diff/" + available_patches[0].file + ".gz";
+    Desc.Description = Description + " " + available_patches[0].file + string(".pdiff");
+    DestFile = _config->FindDir("Dir::State::lists") + "partial/";
+    DestFile += URItoFileName(RealURI + ".diff/" + available_patches[0].file);
+    if(Debug)
+       std::clog << "pkgAcqIndexDiffs::QueueNextDiff(): " << Desc.URI << std::endl;
+    
+    QueueURI(Desc);
+    return true;
+ }
+ void pkgAcqIndexDiffs::Done(string Message,unsigned long Size,string Md5Hash,
+                           pkgAcquire::MethodConfig *Cnf)
+ {
+    if(Debug)
+       std::clog << "pkgAcqIndexDiffs::Done(): " << Desc.URI << std::endl;
+    Item::Done(Message,Size,Md5Hash,Cnf);
+    string FinalFile;
+    FinalFile = _config->FindDir("Dir::State::lists")+URItoFileName(RealURI);
+    // sucess in downloading a diff, enter ApplyDiff state
+    if(State == StateFetchDiff) 
+    {
+       if(Debug)
+        std::clog << "Sending to gzip method: " << FinalFile << std::endl;
+       string FileName = LookupTag(Message,"Filename");
+       State = StateUnzipDiff;
+       Local = true;
+       Desc.URI = "gzip:" + FileName;
+       DestFile += ".decomp";
+       QueueURI(Desc);
+       Mode = "gzip";
+       return;
+    } 
+    // sucess in downloading a diff, enter ApplyDiff state
+    if(State == StateUnzipDiff) 
+    {
+       // rred excepts the patch as $FinalFile.ed
+       Rename(DestFile,FinalFile+".ed");
+       if(Debug)
+        std::clog << "Sending to rred method: " << FinalFile << std::endl;
+       State = StateApplyDiff;
+       Local = true;
+       Desc.URI = "rred:" + FinalFile;
+       QueueURI(Desc);
+       Mode = "rred";
+       return;
+    } 
+    // success in download/apply a diff, queue next (if needed)
+    if(State == StateApplyDiff)
+    {
+       // remove the just applied patch
+       available_patches.erase(available_patches.begin());
+       // move into place
+       if(Debug) 
+       {
+        std::clog << "Moving patched file in place: " << std::endl
+                  << DestFile << " -> " << FinalFile << std::endl;
+       }
+       Rename(DestFile,FinalFile);
+       chmod(FinalFile.c_str(),0644);
+       // see if there is more to download
+       if(available_patches.size() > 0) {
+        new pkgAcqIndexDiffs(Owner, RealURI, Description, Desc.ShortDesc,
+                             ExpectedMD5, available_patches);
+        return Finish();
+       } else 
+        return Finish(true);
+    }
+ }
  // AcqIndex::AcqIndex - Constructor                                   /*{{{*/
  // ---------------------------------------------------------------------
  /* The package file is added to the queue and a second class is 
@@@ -691,9 -1062,14 +1112,14 @@@ void pkgAcqMetaIndex::QueueIndexes(boo
           }
        }
        
-       // Queue Packages file
-       new pkgAcqIndex(Owner, (*Target)->URI, (*Target)->Description,
-                       (*Target)->ShortDesc, ExpectedIndexMD5);
+       // Queue Packages file (either diff or full packages files, depending
+       // on the users option)
 -      if(_config->FindB("Acquire::PDiffs",true) == true) 
++      if(_config->FindB("Acquire::PDiffs",false) == true) 
+        new pkgAcqDiffIndex(Owner, (*Target)->URI, (*Target)->Description,
+                            (*Target)->ShortDesc, ExpectedIndexMD5);
+       else 
+        new pkgAcqIndex(Owner, (*Target)->URI, (*Target)->Description,
+                           (*Target)->ShortDesc, ExpectedIndexMD5);
     }
  }
  
index 1885f7beb087150394aa4c983c2ddf5e9aa9dd6a,f5272ed8623f4562d521417f0f55b8a2e77d9371..233cbdda9b61c9ae7970e1e81cb94c97226a2d81
@@@ -44,43 -77,188 +77,200 @@@ class pkgAcquire::Ite
     
     public:
  
-    // State of the item
-    enum {StatIdle, StatFetching, StatDone, StatError, 
-        StatAuthError, StatTransientNetworkError} Status;
+    /** \brief The current status of this item. */
+    enum ItemState
+      {
+        /** \brief The item is waiting to be downloaded. */
+        StatIdle,
+        /** \brief The item is currently being downloaded. */
+        StatFetching,
+        /** \brief The item has been successfully downloaded. */
+        StatDone,
+        /** \brief An error was encountered while downloading this
+       *  item.
+       */
+        StatError,
+        /** \brief The item was downloaded but its authenticity could
+       *  not be verified.
+       */
+        StatAuthError,
+        /** \brief The item was could not be downloaded because of 
+       *  a transient network error (e.g. network down)
+       */
+        StatTransientNetworkError
+      } Status;
+    /** \brief Contains a textual description of the error encountered
+     *  if #Status is #StatError or #StatAuthError.
+     */
     string ErrorText;
+    /** \brief The size of the object to fetch. */
     unsigned long FileSize;
-    unsigned long PartialSize;   
+    /** \brief How much of the object was already fetched. */
+    unsigned long PartialSize;
+    /** \brief If not \b NULL, contains the name of a subprocess that
+     *  is operating on this object (for instance, "gzip" or "gpgv").
+     */
     const char *Mode;
+    /** \brief A client-supplied unique identifier.
+     * 
+     *  This field is initalized to 0; it is meant to be filled in by
+     *  clients that wish to use it to uniquely identify items.
+     *
+     *  \todo it's unused in apt itself
+     */
     unsigned long ID;
+    /** \brief If \b true, the entire object has been successfully fetched.
+     *
+     *  Subclasses should set this to \b true when appropriate.
+     */
     bool Complete;
+    /** \brief If \b true, the URI of this object is "local".
+     *
+     *  The only effect of this field is to exclude the object from the
+     *  download progress indicator's overall statistics.
+     */
     bool Local;
 +   string UsedMirror;
  
-    // Number of queues we are inserted into
+    /** \brief The number of fetch queues into which this item has been
+     *  inserted.
+     *
+     *  There is one queue for each source from which an item could be
+     *  downloaded.
+     *
+     *  \sa pkgAcquire
+     */
     unsigned int QueueCounter;
     
-    // File to write the fetch into
+    /** \brief The name of the file into which the retrieved object
+     *  will be written.
+     */
     string DestFile;
  
-    // Action members invoked by the worker
+    /** \brief Invoked by the acquire worker when the object couldn't
+     *  be fetched.
+     *
+     *  This is a branch of the continuation of the fetch process.
+     *
+     *  \param Message An RFC822-formatted message from the acquire
+     *  method describing what went wrong.  Use LookupTag() to parse
+     *  it.
+     *
+     *  \param Cnf The method via which the worker tried to fetch this object.
+     *
+     *  \sa pkgAcqMethod
+     */
     virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf);
+    /** \brief Invoked by the acquire worker when the object was
+     *  fetched successfully.
+     *
+     *  Note that the object might \e not have been written to
+     *  DestFile; check for the presence of an Alt-Filename entry in
+     *  Message to find the file to which it was really written.
+     *
+     *  Done is often used to switch from one stage of the processing
+     *  to the next (e.g. fetching, unpacking, copying).  It is one
+     *  branch of the continuation of the fetch process.
+     *
+     *  \param Message Data from the acquire method.  Use LookupTag()
+     *  to parse it.
+     *  \param Size The size of the object that was fetched.
+     *  \param Md5Hash The MD5Sum of the object that was fetched.
+     *  \param Cnf The method via which the object was fetched.
+     *
+     *  \sa pkgAcqMethod
+     */
     virtual void Done(string Message,unsigned long Size,string Md5Hash,
                     pkgAcquire::MethodConfig *Cnf);
+    /** \brief Invoked when the worker starts to fetch this object.
+     *
+     *  \param Message RFC822-formatted data from the worker process.
+     *  Use LookupTag() to parse it.
+     *
+     *  \param Size The size of the object being fetched.
+     *
+     *  \sa pkgAcqMethod
+     */
     virtual void Start(string Message,unsigned long Size);
+    /** \brief Custom headers to be sent to the fetch process.
+     *
+     *  \return a string containing RFC822-style headers that are to be
+     *  inserted into the 600 URI Acquire message sent to the fetch
+     *  subprocess.  The headers are inserted after a newline-less
+     *  line, so they should (if nonempty) have a leading newline and
+     *  no trailing newline.
+     */
     virtual string Custom600Headers() {return string();};
+    /** \brief A "descriptive" URI-like string.
+     *
+     *  \return a URI that should be used to describe what is being fetched.
+     */
     virtual string DescURI() = 0;
+    /** \brief Short item description.
+     *
+     *  \return a brief description of the object being fetched.
+     */
     virtual string ShortDesc() {return DescURI();}
+    /** \brief Invoked by the worker when the download is completely done. */
     virtual void Finished() {};
     
-    // Inquire functions
+    /** \brief MD5Sum.
+     *
+     *  \return the MD5Sum of this object, if applicable; otherwise, an
+     *  empty string.
+     */
     virtual string MD5Sum() {return string();};
+    /** \return the acquire process with which this item is associated. */
     pkgAcquire *GetOwner() {return Owner;};
+    /** \return \b true if this object is being fetched from a trusted source. */
     virtual bool IsTrusted() {return false;};
 +   
 +   // report mirror problems
++   /** \brief Report mirror problem
++    * 
++    *  This allows reporting mirror failures back to a centralized
++    *  server. The apt-report-mirror-failure script is called for this
++    * 
++    *  \param FailCode A short failure string that is send
++    */
 +   void ReportMirrorFailure(string FailCode);
 +
+    /** \brief Initialize an item.
+     *
+     *  Adds the item to the list of items known to the acquire
+     *  process, but does not place it into any fetch queues (you must
+     *  manually invoke QueueURI() to do so).
+     *
+     *  Initializes all fields of the item other than Owner to 0,
+     *  false, or the empty string.
+     *
+     *  \param Owner The new owner of this item.
+     */
     Item(pkgAcquire *Owner);
+    /** \brief Remove this item from its owner's queue by invoking
+     *  pkgAcquire::Remove.
+     */
     virtual ~Item();
  };
  
@@@ -105,11 -524,34 +536,34 @@@ class pkgAcqIndex : public pkgAcquire::
     virtual string Custom600Headers();
     virtual string DescURI() {return RealURI + CompressionExtension;};
  
+    /** \brief Create a pkgAcqIndex.
+     *
+     *  \param Owner The pkgAcquire object with which this item is
+     *  associated.
+     *
+     *  \param URI The URI of the index file that is to be downloaded.
+     *
+     *  \param URIDesc A "URI-style" description of this index file.
+     *
+     *  \param ShortDesc A brief description of this index file.
+     *
+     *  \param ExpectedMD5 The expected md5sum of this index file.
+     *
+     *  \param compressExt The compression-related extension with which
+     *  this index file should be downloaded, or "" to autodetect
+     *  (".bz2" is used if bzip2 is installed, ".gz" otherwise).
+     */
     pkgAcqIndex(pkgAcquire *Owner,string URI,string URIDesc,
 -             string ShortDesc, string ExpectedMD5, string compressExt="");
 +             string ShortDesct, string ExpectedMD5, string compressExt="");
  };
  
- // Item class for translated package index files
+ /** \brief An acquire item that is responsible for fetching a
+  *  translated index file.
+  *
+  *  The only difference from pkgAcqIndex is that transient failures
+  *  are suppressed: no error occurs if the translated index file is
+  *  missing.
+  */
  class pkgAcqIndexTrans : public pkgAcqIndex
  {
     public:
Simple merge
index 9f0fa143d3e033b90ea5d7ef468922c63713022c,fe981ea763a339a35e44e5f7c4df2cb3cebb8551..491ba6d4cb24a9729ff0b08db0ae41cc8c7b13b2
@@@ -1352,33 -1378,3 +1350,34 @@@ bool pkgDepCache::Sweep(
  
     return true;
  }
 +
 +// Policy::IsImportantDep - True if the dependency is important               /*{{{*/
 +// ---------------------------------------------------------------------
 +/* */
 +bool pkgDepCache::Policy::IsImportantDep(DepIterator Dep)
 +{
 +   if(Dep.IsCritical())
 +      return true;
 +   else if(Dep->Type == pkgCache::Dep::Recommends) 
 +   {
 +      if ( _config->FindB("APT::Install-Recommends", false))
 +       return true;
 +      // we suport a special mode to only install-recommends for certain
 +      // sections
 +      // FIXME: this is a meant as a temporarly solution until the 
 +      //        recommends are cleaned up
 +      string s = _config->Find("APT::Install-Recommends-Section","");
 +      if(s.size() > 0) 
 +      {
 +       const char *sec = Dep.ParentVer().Section();
 +       if (sec && strcmp(sec, s.c_str()) == 0)
 +          return true;
 +      }
 +   }
 +   else if(Dep->Type == pkgCache::Dep::Suggests)
 +     return _config->FindB("APT::Install-Suggests", false);
 +
 +   return false;
 +}
 +                                                                      /*}}}*/
++
diff --cc apt-pkg/init.cc
index f58855792b3fc3006905a82315187cf639dbf08d,2f15486d9440d0f67742ea69d443cc0bb19793bb..a209d7477708e78bfb7ca7fdc064f754ea1d9ddb
@@@ -105,7 -105,10 +106,9 @@@ bool pkgInitConfig(Configuration &Cnf
        bindtextdomain(textdomain(0),Cnf.FindDir("Dir::Locale").c_str());
     }
  #endif
--
+    // Translation
+    Cnf.Set("APT::Acquire::Translation", "environment");
+    
     return true;
  }
                                                                        /*}}}*/
Simple merge
diff --cc configure.in
index a537bf24f80560ed1cca0f9ae6fddaab212f70e3,34d4dcc78b1702a4281c4b57e373e8f4920b938e..59e3d6fe1c48503ef2e7a5dfb720629e787d5b0b
@@@ -18,7 -18,7 +18,7 @@@ AC_CONFIG_AUX_DIR(buildlib
  AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
  
  dnl -- SET THIS TO THE RELEASE VERSION --
- AC_DEFINE_UNQUOTED(VERSION,"0.6.46.4ubuntu11")
 -AC_DEFINE_UNQUOTED(VERSION,"0.7.2")
++AC_DEFINE_UNQUOTED(VERSION,"0.7.2ubuntu1")
  PACKAGE="apt"
  AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
  AC_SUBST(PACKAGE)
index 0000000000000000000000000000000000000000,98143ce9a546276dfb9c5690b4366fc692b1d602..3a9945b54d103d307c1b2b9fed04bdacd005c041
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,8 +1,11 @@@
+ APT
+ {
+   NeverAutoRemove  
+   { 
+       "^linux-image.*";  
+       "^linux-restricted-modules.*";
+   };
++
++  Install-Recommends-Section "metapackages";
++  Never-MarkAuto-Section "metapackages";
+ };
index b4cbf1c8a901010d5c51c9d2e0a7a6e0e7c6fe93,778e3cefefb9da48091f95aae9d6db9e91b18b83..127ecf47d8817dbf88255e6067f8441cc5599ba5
@@@ -152,12 -152,12 +152,16 @@@ UpdateInterval=
  DownloadUpgradeableInterval=0
  eval $(apt-config shell UpdateInterval APT::Periodic::Update-Package-Lists DownloadUpgradeableInterval APT::Periodic::Download-Upgradeable-Packages)
  AutocleanInterval=$DownloadUpgradeableInterval
- eval $(apt-config shell AutocleanInterval APT::Periodic::Autoclean)
+ eval $(apt-config shell AutocleanInterval APT::Periodic::AutocleanInterval)
+ UnattendedUpgradeInterval=0
+ eval $(apt-config shell UnattendedUpgradeInterval APT::Periodic::Unattended-Upgrade)
  
 +UnattendedUpgradeInterval=0
 +eval $(apt-config shell UnattendedUpgradeInterval APT::Periodic::Unattended-Upgrade)
 +
 +
  # laptop check, on_ac_power returns:
  #       0 (true)    System is on mains power
  #       1 (false)   System is not on mains power
index 32f2ac68a9f63ae79c1aa02c7fb4ec08de579ad1,41609bd743fae69e48c1296197873df0a4e5bae4..c86f8abbc8acf4c6214d0b359fb364a03fb80394
@@@ -1,10 -1,64 +1,76 @@@
- apt (0.6.46.4ubuntu11) UNRELEASED; urgency=low
++apt (0.7.2ubuntu1) gutsy; urgency=low
 +
++  * apt-pkg/deb/dpkgpm.cc:
++    - apport integration added, this means that a apport
++      report is written on dpkg failures
++  * merged from debian/unstable, remaining changes:
++    - maintainer field changed
++
++
++ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 14 Jun 2007 10:38:36 +0200
++
+ apt (0.7.2) unstable; urgency=low
+   
+   * merged the debian/experimental changes back
+     into the debian/sid branch
+   * merged from Christian Perrier:
+     * mr.po: New Marathi translation  Closes: #416806
+     * zh_CN.po: Updated by Eric Pareja  Closes: #416822
+     * tl.po: Updated by Eric Pareja   Closes: #416638
+     * gl.po: Updated by Jacobo Tarrio
+            Closes: #412828
+     * da.po: Updated by Claus Hindsgaul
+            Closes: #409483
+     * fr.po: Remove a non-breakable space for usability
+            issues. Closes: #408877
+     * ru.po: Updated Russian translation. Closes: #405476
+     * *.po: Unfuzzy after upstream typo corrections
+   * buildlib/archtable:
+     - added support for sh3/sh4 (closes: #424870)
+     - added support for m32r (closes: #394096)
+   * buildlib/systemtable:
+     - added support for lpia
+   * configure.in:
+     - check systemtable for architecture mapping too
+   * fix error in AutocleanInterval, closes: #319339
+     (thanks to Israel G. Lugo for the patch)
+   * add "purge" commandline argument, closes: #133421)
+     (thanks to Julien Danjou for the patch)
+   * add "purge" commandline argument, closes: #133421)
+     (thanks to Julien Danjou for the patch)
+   * fix FTBFS with gcc 4.3, closes: #417090
+     (thanks to Martin Michlmayr for the patch)
+   * add --dsc-only option, thanks to K. Richard Pixley
+   * Removed the more leftover #pragma interface/implementation
+     closes: #306937 (thanks to Andreas Henriksson for the patch)
+   
+  -- Michael Vogt <mvo@debian.org>  Wed, 06 Jun 2007 23:19:50 +0200
+ apt (0.7.1) experimental; urgency=low
+   * ABI library name change because its build against
+     new glibc
+   * implement SourceVer() in pkgRecords 
+      (thanks to Daniel Burrows for the patch!)
+   * apt-pkg/algorithm.cc:
+     - use clog for all debugging
+     - only increase the score of installed applications if they 
+       are not obsolete 
+     - fix resolver bug on removal triggered by weak-dependencies 
+       with or-groups
+   * methods/http.cc:
+     - send apt version in User-Agent
+   * apt-pkg/deb/debrecords.cc:
+     - fix SHA1Hash() return value
+   * apt-pkg/cdrom.cc:
+     - only unmount if APT::CDROM::NoMount is false
+   * methods/cdrom.cc:  
+     - only umount if it was mounted by the method before
    * po/gl.po:
 -    - fix error translation that causes trouble to lsb_release
 +    - fix error in translation that causes trouble to lsb_release 
 +      (LP#79165)
    * apt-pkg/acquire-item.cc:
-     - if decompression of a index fails, delete the index (LP#68202)
+     - if decompression of a index fails, delete the index 
    * apt-pkg/acquire.{cc,h}:
      - deal better with duplicated sources.list entries (avoid
        double queuing of  URLs) - this fixes hangs in bzip/gzip
               issues. Closes: #408877
      * ru.po: Updated Russian translation. Closes: #405476
      * *.po: Unfuzzy after upstream typo corrections
+     * vi.po: Updated to 515t. Closes: #426976
+     * eu.po: Updated to 515t. Closes: #423766
+     * pt.po: 515t. Closes: #423111
+     * fr.po: Updated by Christian Perrier
+     * Update all PO and the POT. Gives 513t2f for formerly
+       complete translations
    * apt-pkg/policy.cc:
      - allow multiple packages (thanks to David Foerster)
-   * apt-pkg/deb/dpkgpm.cc:
-     - apport integration added, this means that a apport
-       report is written on dpkg failures
  
 - -- Michael Vogt <mvo@debian.org>  Wed,  2 May 2007 13:43:44 +0200
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 17 Apr 2007 15:53:37 +0200
 +
 +apt (0.6.46.4ubuntu10) feisty; urgency=low
 +
 +  * apt-pkg/depcache.cc:
 +    - added "APT::Never-MarkAuto-Section" and consider dependencies 
 +      of packages in this section manual (LP#59893)
 +    - ensure proper permissions in the extended_state file (LP#67037)
 +  * debian/apt.conf.ubuntu:
 +    - added APT::Never-MarkAuto-Section "metapackages" (LP#59893)
 +  * cmdline/apt-get.cc:
 +    - "apt-get install foo" on a already installed package foo will
 +      clean the automatic installed flag (LP#72007)
 +    - do not show packages already marked for removal as auto-installed
 +      (LP#64493)
 +    - applied patch to (optionally) hide the auto-remove information
 +      (thanks to Frode M. Døving) (LP#69148)
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 14 Mar 2007 13:32:32 +0100
 +
 +apt (0.6.46.4ubuntu9) feisty; urgency=low
 +
 +  * debian/control:
 +    - set XS-Vcs-Bzr header
 +    - Set Ubuntu maintainer address
 +  * apt-pkg/cdrom.cc:
 +    - only unmount if APT::CDROM::NoMount is false
 +    - only umount if it was mounted by the method before
 +  * cmdline/apt-get.cc:
 +    - fix version output in autoremove list (LP#68941)
 +  * apt-pkg/packagemanager.cc:
 +    - do not spin 100% cpu in FixMissing() (LP#84476)
 +  * apt-pkg/indexfile.cc:
 +    - fix problem overwriting APT::Acquire::Translation
 +  * doc/examples/configure-index:
 +    - document APT::Acquire::Translation
 +  
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 13 Mar 2007 15:24:39 +0100
 +
 +apt (0.6.46.4ubuntu8) feisty; urgency=low
 +
 +  * fix segfault in the pkgRecords destructor
 +  * Bump ABI version
 +  * debian/control:
 +    - make the libcurl3-gnutls-dev versionized (LP#86614)
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 26 Feb 2007 14:26:33 +0100
 +
 +apt (0.6.46.4ubuntu7) feisty; urgency=low
 +
 +  * Merged the apt--mirror branch. This means that a new 'mirror' 
 +    method is available that will allow dynamic mirror updates.
 +    The sources.list entry looks something like this:
 +    "deb mirror://mirrors.lp.net/get_mirror feisty main restricted"
 +
 +    It also supports error reporting to a configurable url for mirror
 +    problems/failures.
 +  * Bump ABI version
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Tue,  6 Feb 2007 11:38:06 +0100
 +
 +apt (0.6.46.4ubuntu6) feisty; urgency=low
 +
 +  * methods/http.cc:
 +    - send apt version in User-Agent
 +  * apt-pkg/deb/debrecords.cc:
 +    - fix SHA1Hash() return value
 +  * apt-pkg/algorithms.cc:
 +    - fix resolver bug on removal triggered by weak-dependencies 
 +      with or-groups
 +    - fix segfault (lp: #76530)
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 20 Dec 2006 11:04:36 +0100
 +
 +apt (0.6.46.4ubuntu5) feisty; urgency=low
 +
 +  * added apt-transport-https package to provide a optional
 +    https transport (apt-https spec)
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 19 Dec 2006 16:23:43 +0100
 +
 +apt (0.6.46.4ubuntu4) feisty; urgency=low
 +  
 +  * apt-pkg/algorithms.cc:
 +    - only increase the score of installed applications if they 
 +      are not obsolete 
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 18 Dec 2006 19:39:05 +0100
  
+ apt (0.7.0) experimental; urgency=low
+   * Package that contains tall the new features
+   * Removed all #pragma interface/implementation
+   * Branch that contains tall the new features:
+   * translated package descriptions
+   * task install support
+   * automatic dependency removal (thanks to Daniel Burrows)
+   * merged support for the new dpkg "Breaks" field 
+     (thanks to Ian Jackson)
+   * handle network failures more gracefully on "update"
+   * support for unattended-upgrades (via unattended-upgrades
+     package)
+   * added apt-transport-https method
+  -- Michael Vogt <mvo@debian.org>  Fri, 12 Jan 2007 20:48:07 +0100
 +apt (0.6.46.4ubuntu3) feisty; urgency=low
 +
 +  * apt-pkg/algorithm.cc:
 +    - use clog for all debugging
 +  * apt-pkg/depcache.cc:
 +    - never mark Required package for autoremoval (lp: #75882)
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 18 Dec 2006 11:56:05 +0100
 +
 +apt (0.6.46.4ubuntu2) feisty; urgency=low
 +
 +  * apt-pkg/algorithms.cc: add missing call to MarkKeep
 +    so that dist-upgrade isn't broken by unsatisfiable Breaks.
 +    (thanks to Ian Jackson)
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Thu,  7 Dec 2006 23:07:24 +0100
 +
 +apt (0.6.46.4ubuntu1) feisty; urgency=low
 +
 +  * merged with debian
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Thu,  7 Dec 2006 12:13:14 +0100
 +
  apt (0.6.46.4-0.1) unstable; urgency=emergency
    
    * NMU
diff --cc debian/control
index 502edd0c60d993830c994710d6a6648567e0308e,5686926d45fd9258d275f85a6a57365680e98c91..7dc0b377f859aeb485e618faeb73d9b756cbff7d
@@@ -1,13 -1,12 +1,13 @@@
  Source: apt
  Section: admin
  Priority: important
- Maintainer: Michael Vogt <mvo@ubuntu.com>
 -Maintainer: APT Development Team <deity@lists.debian.org>
++Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
 +XSBC-Original-Maintainer: APT Development Team <deity@lists.debian.org>
  Uploaders: Jason Gunthorpe <jgg@debian.org>, Adam Heath <doogie@debian.org>, Matt Zimmerman <mdz@debian.org>, Michael Vogt <mvo@debian.org>
- Standards-Version: 3.6.2.2
+ Standards-Version: 3.7.2.2
  Build-Depends: debhelper (>= 5.0), libdb4.4-dev, gettext (>= 0.12), libcurl3-gnutls-dev (>= 7.15.5)
  Build-Depends-Indep: debiandoc-sgml, docbook-utils (>= 0.6.12-1)
 -XS-Vcs-Bzr: http://bzr.debian.org/apt/debian-sid/
 +XS-Vcs-Bzr: http://bazaar.launchpad.net/~ubuntu-core-dev/apt/ubuntu
  
  Package: apt
  Architecture: any
diff --cc debian/rules
index 3defd3c29e78ba540f4cbfa978d6e15e5a57b37b,3ebecfba4de55e07c475fb83e2b29f63fbe39414..daf15fe1b5553268d148de9d6f5bac6c62fb063b
@@@ -210,8 -210,8 +210,8 @@@ apt: build debian/shlibs.loca
  
        cp debian/bugscript debian/$@/usr/share/bug/apt/script
  
 -      cp share/debian-archive.gpg debian/$@/usr/share/$@
 +      cp share/ubuntu-archive.gpg debian/$@/usr/share/$@
-       cp debian/apt.conf.ubuntu debian/$@/etc/apt/apt.conf.d/01ubuntu
+       cp debian/apt.conf.autoremove debian/$@/etc/apt/apt.conf.d/01autoremove
  #     head -n 500 ChangeLog > debian/ChangeLog
  
        # make rosetta happy and remove pot files in po/ (but leave stuff
Simple merge
diff --cc methods/http.h
Simple merge
index 610bd5b49da1a26f9903f9d7b5f35790f24d1413,f178cbbeac3344c796a1be5b1cc44e9771a112f6..83bd8c7c936d3feff6b34fae35dade15ace942a0
@@@ -49,16 -49,16 +49,23 @@@ include $(PROGRAM_H
  PROGRAM=http
  SLIBS = -lapt-pkg $(SOCKETLIBS)
  LIB_MAKES = apt-pkg/makefile
 -SOURCE = http.cc rfc2553emu.cc connect.cc
 +SOURCE = http.cc http_main.cc rfc2553emu.cc connect.cc
 +include $(PROGRAM_H)
 +
 +# The https method
 +PROGRAM=https
 +SLIBS = -lapt-pkg -lcurl
 +LIB_MAKES = apt-pkg/makefile
 +SOURCE = https.cc
  include $(PROGRAM_H)
  
+ # The https method
+ PROGRAM=https
+ SLIBS = -lapt-pkg -lcurl
+ LIB_MAKES = apt-pkg/makefile
+ SOURCE = https.cc
+ include $(PROGRAM_H)
  # The ftp method
  PROGRAM=ftp
  SLIBS = -lapt-pkg $(SOCKETLIBS)
diff --cc po/apt-all.pot
index addf713f88c496c490d622a30d0203e14d0b31d8,a7185fcf31e2316bfc83014f06d1d03f0c8e0aa0..e19032f10118a2c5534332bcab28c2ec89ab2449
@@@ -7,7 -7,7 +7,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: PACKAGE VERSION\n"
  "Report-Msgid-Bugs-To: \n"
- "POT-Creation-Date: 2006-10-02 15:46+0200\n"
 -"POT-Creation-Date: 2007-06-08 23:11+0200\n"
++"POT-Creation-Date: 2007-04-27 15:16+0200\n"
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
  "Language-Team: LANGUAGE <LL@li.org>\n"
@@@ -243,7 -251,7 +243,8 @@@ msgid "
  "  -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
  msgstr ""
  
- #: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:710
+ #: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:819
++#: apt-pkg/pkgcachegen.cc:815
  #, c-format
  msgid "Unable to write to %s"
  msgstr ""
@@@ -709,8 -717,8 +710,8 @@@ msgstr "
  msgid "Unable to lock the download directory"
  msgstr ""
  
 -#: cmdline/apt-get.cc:816 cmdline/apt-get.cc:2080 cmdline/apt-get.cc:2321
 -#: apt-pkg/cachefile.cc:67
 +#: cmdline/apt-get.cc:801 cmdline/apt-get.cc:1899 cmdline/apt-get.cc:2135
- #: apt-pkg/cachefile.cc:67
++#: apt-pkg/cachefile.cc:67 apt-pkg/cachefile.cc:63
  msgid "The list of sources could not be read."
  msgstr ""
  
@@@ -950,7 -992,7 +951,7 @@@ msgstr "
  msgid "Calculating upgrade... "
  msgstr ""
  
- #: cmdline/apt-get.cc:1716 methods/ftp.cc:702 methods/connect.cc:101
 -#: cmdline/apt-get.cc:1895 methods/ftp.cc:702 methods/connect.cc:101
++#: cmdline/apt-get.cc:1716 methods/ftp.cc:702 methods/connect.cc:100
  msgid "Failed"
  msgstr ""
  
@@@ -1330,7 -1373,7 +1331,9 @@@ msgstr "
  
  #: apt-inst/extract.cc:467 apt-pkg/contrib/configuration.cc:750
  #: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/sourcelist.cc:324
--#: apt-pkg/acquire.cc:421 apt-pkg/clean.cc:38
++#: apt-pkg/acquire.cc:421 apt-pkg/clean.cc:38 methods/mirror.cc:82
++#: apt-pkg/contrib/configuration.cc:747 apt-pkg/contrib/cdromutl.cc:150
++#: apt-pkg/sourcelist.cc:320 apt-pkg/acquire.cc:418 apt-pkg/clean.cc:34
  #, c-format
  msgid "Unable to read %s"
  msgstr ""
@@@ -1360,9 -1403,9 +1363,11 @@@ msgid "The info and temp directories ne
  msgstr ""
  
  #. Build the status cache
- #: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:643
- #: apt-pkg/pkgcachegen.cc:712 apt-pkg/pkgcachegen.cc:717
- #: apt-pkg/pkgcachegen.cc:840
+ #: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:752
+ #: apt-pkg/pkgcachegen.cc:821 apt-pkg/pkgcachegen.cc:826
 -#: apt-pkg/pkgcachegen.cc:949
++#: apt-pkg/pkgcachegen.cc:949 apt-pkg/pkgcachegen.cc:748
++#: apt-pkg/pkgcachegen.cc:817 apt-pkg/pkgcachegen.cc:822
++#: apt-pkg/pkgcachegen.cc:945
  msgid "Reading package lists"
  msgstr ""
  
@@@ -1555,7 -1599,7 +1561,8 @@@ msgstr "
  msgid "Server closed the connection"
  msgstr ""
  
 -#: methods/ftp.cc:338 apt-pkg/contrib/fileutl.cc:472 methods/rsh.cc:190
 +#: methods/ftp.cc:338 apt-pkg/contrib/fileutl.cc:471 methods/rsh.cc:190
++#: apt-pkg/contrib/fileutl.cc:469
  msgid "Read error"
  msgstr ""
  
@@@ -1567,7 -1611,7 +1574,8 @@@ msgstr "
  msgid "Protocol corruption"
  msgstr ""
  
 -#: methods/ftp.cc:446 apt-pkg/contrib/fileutl.cc:511 methods/rsh.cc:232
 +#: methods/ftp.cc:446 apt-pkg/contrib/fileutl.cc:510 methods/rsh.cc:232
++#: apt-pkg/contrib/fileutl.cc:508
  msgid "Write error"
  msgstr ""
  
@@@ -1621,7 -1665,7 +1629,7 @@@ msgstr "
  msgid "Unable to accept connection"
  msgstr ""
  
- #: methods/ftp.cc:864 methods/http.cc:959 methods/rsh.cc:303
 -#: methods/ftp.cc:864 methods/http.cc:958 methods/rsh.cc:303
++#: methods/ftp.cc:864 methods/http.cc:961 methods/rsh.cc:303
  msgid "Problem hashing file"
  msgstr ""
  
@@@ -1648,39 -1692,39 +1656,39 @@@ msgstr "
  msgid "Unable to invoke "
  msgstr ""
  
--#: methods/connect.cc:64
++#: methods/connect.cc:65
  #, c-format
  msgid "Connecting to %s (%s)"
  msgstr ""
  
--#: methods/connect.cc:71
++#: methods/connect.cc:72
  #, c-format
  msgid "[IP: %s %s]"
  msgstr ""
  
--#: methods/connect.cc:80
++#: methods/connect.cc:79
  #, c-format
  msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
  msgstr ""
  
--#: methods/connect.cc:86
++#: methods/connect.cc:85
  #, c-format
  msgid "Cannot initiate the connection to %s:%s (%s)."
  msgstr ""
  
--#: methods/connect.cc:93
++#: methods/connect.cc:92
  #, c-format
  msgid "Could not connect to %s:%s (%s), connection timed out"
  msgstr ""
  
--#: methods/connect.cc:108
++#: methods/connect.cc:107
  #, c-format
  msgid "Could not connect to %s:%s (%s)."
  msgstr ""
  
  #. We say this mainly because the pause here is for the
  #. ssh connection that is still going
--#: methods/connect.cc:136 methods/rsh.cc:425
++#: methods/connect.cc:135 methods/rsh.cc:425
  #, c-format
  msgid "Connecting to %s"
  msgstr ""
@@@ -1813,366 -1857,384 +1821,394 @@@ msgstr "
  msgid "Error reading from server"
  msgstr ""
  
- #: methods/http.cc:1108
 -#: methods/http.cc:1107
++#: methods/http.cc:1110
  msgid "Bad header data"
  msgstr ""
  
- #: methods/http.cc:1125
 -#: methods/http.cc:1124
++#: methods/http.cc:1127
  msgid "Connection failed"
  msgstr ""
  
- #: methods/http.cc:1216
 -#: methods/http.cc:1215
++#: methods/http.cc:1218
  msgid "Internal error"
  msgstr ""
  
--#: apt-pkg/contrib/mmap.cc:82
++#: apt-pkg/contrib/mmap.cc:82 apt-pkg/contrib/mmap.cc:78
  msgid "Can't mmap an empty file"
  msgstr ""
  
--#: apt-pkg/contrib/mmap.cc:87
++#: apt-pkg/contrib/mmap.cc:87 apt-pkg/contrib/mmap.cc:83
  #, c-format
  msgid "Couldn't make mmap of %lu bytes"
  msgstr ""
  
- #: apt-pkg/contrib/strutl.cc:938
 -#: apt-pkg/contrib/strutl.cc:982
++#: apt-pkg/contrib/strutl.cc:981 apt-pkg/contrib/strutl.cc:978
  #, c-format
  msgid "Selection %s not found"
  msgstr ""
  
--#: apt-pkg/contrib/configuration.cc:436
++#: apt-pkg/contrib/configuration.cc:436 apt-pkg/contrib/configuration.cc:433
  #, c-format
  msgid "Unrecognized type abbreviation: '%c'"
  msgstr ""
  
--#: apt-pkg/contrib/configuration.cc:494
++#: apt-pkg/contrib/configuration.cc:494 apt-pkg/contrib/configuration.cc:491
  #, c-format
  msgid "Opening configuration file %s"
  msgstr ""
  
--#: apt-pkg/contrib/configuration.cc:512
++#: apt-pkg/contrib/configuration.cc:512 apt-pkg/contrib/configuration.cc:509
  #, c-format
  msgid "Line %d too long (max %d)"
  msgstr ""
  
--#: apt-pkg/contrib/configuration.cc:608
++#: apt-pkg/contrib/configuration.cc:608 apt-pkg/contrib/configuration.cc:605
  #, c-format
  msgid "Syntax error %s:%u: Block starts with no name."
  msgstr ""
  
--#: apt-pkg/contrib/configuration.cc:627
++#: apt-pkg/contrib/configuration.cc:627 apt-pkg/contrib/configuration.cc:624
  #, c-format
  msgid "Syntax error %s:%u: Malformed tag"
  msgstr ""
  
--#: apt-pkg/contrib/configuration.cc:644
++#: apt-pkg/contrib/configuration.cc:644 apt-pkg/contrib/configuration.cc:641
  #, c-format
  msgid "Syntax error %s:%u: Extra junk after value"
  msgstr ""
  
--#: apt-pkg/contrib/configuration.cc:684
++#: apt-pkg/contrib/configuration.cc:684 apt-pkg/contrib/configuration.cc:681
  #, c-format
  msgid "Syntax error %s:%u: Directives can only be done at the top level"
  msgstr ""
  
--#: apt-pkg/contrib/configuration.cc:691
++#: apt-pkg/contrib/configuration.cc:691 apt-pkg/contrib/configuration.cc:688
  #, c-format
  msgid "Syntax error %s:%u: Too many nested includes"
  msgstr ""
  
  #: apt-pkg/contrib/configuration.cc:695 apt-pkg/contrib/configuration.cc:700
++#: apt-pkg/contrib/configuration.cc:692 apt-pkg/contrib/configuration.cc:697
  #, c-format
  msgid "Syntax error %s:%u: Included from here"
  msgstr ""
  
--#: apt-pkg/contrib/configuration.cc:704
++#: apt-pkg/contrib/configuration.cc:704 apt-pkg/contrib/configuration.cc:701
  #, c-format
  msgid "Syntax error %s:%u: Unsupported directive '%s'"
  msgstr ""
  
--#: apt-pkg/contrib/configuration.cc:738
++#: apt-pkg/contrib/configuration.cc:738 apt-pkg/contrib/configuration.cc:735
  #, c-format
  msgid "Syntax error %s:%u: Extra junk at end of file"
  msgstr ""
  
--#: apt-pkg/contrib/progress.cc:155
++#: apt-pkg/contrib/progress.cc:155 apt-pkg/contrib/progress.cc:152
  #, c-format
  msgid "%c%s... Error!"
  msgstr ""
  
--#: apt-pkg/contrib/progress.cc:157
++#: apt-pkg/contrib/progress.cc:157 apt-pkg/contrib/progress.cc:154
  #, c-format
  msgid "%c%s... Done"
  msgstr ""
  
--#: apt-pkg/contrib/cmndline.cc:80
++#: apt-pkg/contrib/cmndline.cc:80 apt-pkg/contrib/cmndline.cc:77
  #, c-format
  msgid "Command line option '%c' [from %s] is not known."
  msgstr ""
  
  #: apt-pkg/contrib/cmndline.cc:106 apt-pkg/contrib/cmndline.cc:114
--#: apt-pkg/contrib/cmndline.cc:122
++#: apt-pkg/contrib/cmndline.cc:122 apt-pkg/contrib/cmndline.cc:103
++#: apt-pkg/contrib/cmndline.cc:111 apt-pkg/contrib/cmndline.cc:119
  #, c-format
  msgid "Command line option %s is not understood"
  msgstr ""
  
--#: apt-pkg/contrib/cmndline.cc:127
++#: apt-pkg/contrib/cmndline.cc:127 apt-pkg/contrib/cmndline.cc:124
  #, c-format
  msgid "Command line option %s is not boolean"
  msgstr ""
  
  #: apt-pkg/contrib/cmndline.cc:166 apt-pkg/contrib/cmndline.cc:187
++#: apt-pkg/contrib/cmndline.cc:163 apt-pkg/contrib/cmndline.cc:184
  #, c-format
  msgid "Option %s requires an argument."
  msgstr ""
  
  #: apt-pkg/contrib/cmndline.cc:201 apt-pkg/contrib/cmndline.cc:207
++#: apt-pkg/contrib/cmndline.cc:198 apt-pkg/contrib/cmndline.cc:204
  #, c-format
  msgid "Option %s: Configuration item specification must have an =<val>."
  msgstr ""
  
--#: apt-pkg/contrib/cmndline.cc:237
++#: apt-pkg/contrib/cmndline.cc:237 apt-pkg/contrib/cmndline.cc:234
  #, c-format
  msgid "Option %s requires an integer argument, not '%s'"
  msgstr ""
  
--#: apt-pkg/contrib/cmndline.cc:268
++#: apt-pkg/contrib/cmndline.cc:268 apt-pkg/contrib/cmndline.cc:265
  #, c-format
  msgid "Option '%s' is too long"
  msgstr ""
  
--#: apt-pkg/contrib/cmndline.cc:301
++#: apt-pkg/contrib/cmndline.cc:301 apt-pkg/contrib/cmndline.cc:298
  #, c-format
  msgid "Sense %s is not understood, try true or false."
  msgstr ""
  
--#: apt-pkg/contrib/cmndline.cc:351
++#: apt-pkg/contrib/cmndline.cc:351 apt-pkg/contrib/cmndline.cc:348
  #, c-format
  msgid "Invalid operation %s"
  msgstr ""
  
--#: apt-pkg/contrib/cdromutl.cc:55
++#: apt-pkg/contrib/cdromutl.cc:55 apt-pkg/contrib/cdromutl.cc:52
  #, c-format
  msgid "Unable to stat the mount point %s"
  msgstr ""
  
  #: apt-pkg/contrib/cdromutl.cc:149 apt-pkg/acquire.cc:427 apt-pkg/clean.cc:44
++#: methods/mirror.cc:88 apt-pkg/contrib/cdromutl.cc:146 apt-pkg/acquire.cc:424
++#: apt-pkg/clean.cc:40
  #, c-format
  msgid "Unable to change to %s"
  msgstr ""
  
--#: apt-pkg/contrib/cdromutl.cc:190
++#: apt-pkg/contrib/cdromutl.cc:190 apt-pkg/contrib/cdromutl.cc:187
  msgid "Failed to stat the cdrom"
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:82
 -#: apt-pkg/contrib/fileutl.cc:83
++#: apt-pkg/contrib/fileutl.cc:82 apt-pkg/contrib/fileutl.cc:80
  #, c-format
  msgid "Not using locking for read only lock file %s"
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:87
 -#: apt-pkg/contrib/fileutl.cc:88
++#: apt-pkg/contrib/fileutl.cc:87 apt-pkg/contrib/fileutl.cc:85
  #, c-format
  msgid "Could not open lock file %s"
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:105
 -#: apt-pkg/contrib/fileutl.cc:106
++#: apt-pkg/contrib/fileutl.cc:105 apt-pkg/contrib/fileutl.cc:103
  #, c-format
  msgid "Not using locking for nfs mounted lock file %s"
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:109
 -#: apt-pkg/contrib/fileutl.cc:110
++#: apt-pkg/contrib/fileutl.cc:109 apt-pkg/contrib/fileutl.cc:107
  #, c-format
  msgid "Could not get lock %s"
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:377
 -#: apt-pkg/contrib/fileutl.cc:378
++#: apt-pkg/contrib/fileutl.cc:377 apt-pkg/contrib/fileutl.cc:375
  #, c-format
  msgid "Waited for %s but it wasn't there"
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:387
 -#: apt-pkg/contrib/fileutl.cc:388
++#: apt-pkg/contrib/fileutl.cc:387 apt-pkg/contrib/fileutl.cc:385
  #, c-format
  msgid "Sub-process %s received a segmentation fault."
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:390
 -#: apt-pkg/contrib/fileutl.cc:391
++#: apt-pkg/contrib/fileutl.cc:390 apt-pkg/contrib/fileutl.cc:388
  #, c-format
  msgid "Sub-process %s returned an error code (%u)"
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:392
 -#: apt-pkg/contrib/fileutl.cc:393
++#: apt-pkg/contrib/fileutl.cc:392 apt-pkg/contrib/fileutl.cc:390
  #, c-format
  msgid "Sub-process %s exited unexpectedly"
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:436
 -#: apt-pkg/contrib/fileutl.cc:437
++#: apt-pkg/contrib/fileutl.cc:436 apt-pkg/contrib/fileutl.cc:434
  #, c-format
  msgid "Could not open file %s"
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:492
 -#: apt-pkg/contrib/fileutl.cc:493
++#: apt-pkg/contrib/fileutl.cc:492 apt-pkg/contrib/fileutl.cc:490
  #, c-format
  msgid "read, still have %lu to read but none left"
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:522
 -#: apt-pkg/contrib/fileutl.cc:523
++#: apt-pkg/contrib/fileutl.cc:522 apt-pkg/contrib/fileutl.cc:520
  #, c-format
  msgid "write, still have %lu to write but couldn't"
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:597
 -#: apt-pkg/contrib/fileutl.cc:598
++#: apt-pkg/contrib/fileutl.cc:597 apt-pkg/contrib/fileutl.cc:595
  msgid "Problem closing the file"
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:603
 -#: apt-pkg/contrib/fileutl.cc:604
++#: apt-pkg/contrib/fileutl.cc:603 apt-pkg/contrib/fileutl.cc:601
  msgid "Problem unlinking the file"
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:614
 -#: apt-pkg/contrib/fileutl.cc:615
++#: apt-pkg/contrib/fileutl.cc:614 apt-pkg/contrib/fileutl.cc:612
  msgid "Problem syncing the file"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:121
 -#: apt-pkg/pkgcache.cc:132
++#: apt-pkg/pkgcache.cc:137 apt-pkg/pkgcache.cc:132
  msgid "Empty package cache"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:127
 -#: apt-pkg/pkgcache.cc:138
++#: apt-pkg/pkgcache.cc:143 apt-pkg/pkgcache.cc:138
  msgid "The package cache file is corrupted"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:132
 -#: apt-pkg/pkgcache.cc:143
++#: apt-pkg/pkgcache.cc:148 apt-pkg/pkgcache.cc:143
  msgid "The package cache file is an incompatible version"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:137
 -#: apt-pkg/pkgcache.cc:148
++#: apt-pkg/pkgcache.cc:153 apt-pkg/pkgcache.cc:148
  #, c-format
  msgid "This APT does not support the versioning system '%s'"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:142
 -#: apt-pkg/pkgcache.cc:153
++#: apt-pkg/pkgcache.cc:158 apt-pkg/pkgcache.cc:153
  msgid "The package cache was built for a different architecture"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:213
 -#: apt-pkg/pkgcache.cc:224
++#: apt-pkg/pkgcache.cc:229 apt-pkg/pkgcache.cc:224
  msgid "Depends"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:213
 -#: apt-pkg/pkgcache.cc:224
++#: apt-pkg/pkgcache.cc:229 apt-pkg/pkgcache.cc:224
  msgid "PreDepends"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:213
 -#: apt-pkg/pkgcache.cc:224
++#: apt-pkg/pkgcache.cc:229 apt-pkg/pkgcache.cc:224
  msgid "Suggests"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:214
 -#: apt-pkg/pkgcache.cc:225
++#: apt-pkg/pkgcache.cc:230 apt-pkg/pkgcache.cc:225
  msgid "Recommends"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:214
 -#: apt-pkg/pkgcache.cc:225
++#: apt-pkg/pkgcache.cc:230 apt-pkg/pkgcache.cc:225
  msgid "Conflicts"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:214
 -#: apt-pkg/pkgcache.cc:225
++#: apt-pkg/pkgcache.cc:230 apt-pkg/pkgcache.cc:225
  msgid "Replaces"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:215
 -#: apt-pkg/pkgcache.cc:226
++#: apt-pkg/pkgcache.cc:231 apt-pkg/pkgcache.cc:226
  msgid "Obsoletes"
  msgstr ""
  
--#: apt-pkg/pkgcache.cc:226
++#: apt-pkg/pkgcache.cc:231 apt-pkg/pkgcache.cc:226
+ msgid "Breaks"
+ msgstr ""
 -#: apt-pkg/pkgcache.cc:237
++#: apt-pkg/pkgcache.cc:242 apt-pkg/pkgcache.cc:237
  msgid "important"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:226
 -#: apt-pkg/pkgcache.cc:237
++#: apt-pkg/pkgcache.cc:242 apt-pkg/pkgcache.cc:237
  msgid "required"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:226
 -#: apt-pkg/pkgcache.cc:237
++#: apt-pkg/pkgcache.cc:242 apt-pkg/pkgcache.cc:237
  msgid "standard"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:227
 -#: apt-pkg/pkgcache.cc:238
++#: apt-pkg/pkgcache.cc:243 apt-pkg/pkgcache.cc:238
  msgid "optional"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:227
 -#: apt-pkg/pkgcache.cc:238
++#: apt-pkg/pkgcache.cc:243 apt-pkg/pkgcache.cc:238
  msgid "extra"
  msgstr ""
  
- #: apt-pkg/depcache.cc:58 apt-pkg/depcache.cc:87
 -#: apt-pkg/depcache.cc:98 apt-pkg/depcache.cc:127
++#: apt-pkg/depcache.cc:103 apt-pkg/depcache.cc:132 apt-pkg/depcache.cc:100
++#: apt-pkg/depcache.cc:129
  msgid "Building dependency tree"
  msgstr ""
  
- #: apt-pkg/depcache.cc:59
 -#: apt-pkg/depcache.cc:99
++#: apt-pkg/depcache.cc:104 apt-pkg/depcache.cc:101
  msgid "Candidate versions"
  msgstr ""
  
- #: apt-pkg/depcache.cc:88
 -#: apt-pkg/depcache.cc:128
++#: apt-pkg/depcache.cc:133 apt-pkg/depcache.cc:130
  msgid "Dependency generation"
  msgstr ""
  
- #: apt-pkg/tagfile.cc:106
 -#: apt-pkg/depcache.cc:149 apt-pkg/depcache.cc:168 apt-pkg/depcache.cc:172
++#: apt-pkg/depcache.cc:154 apt-pkg/depcache.cc:173 apt-pkg/depcache.cc:177
++#: apt-pkg/depcache.cc:151 apt-pkg/depcache.cc:170 apt-pkg/depcache.cc:174
+ msgid "Reading state information"
+ msgstr ""
 -#: apt-pkg/depcache.cc:196
++#: apt-pkg/depcache.cc:201 apt-pkg/depcache.cc:198
+ #, c-format
+ msgid "Failed to open StateFile %s"
+ msgstr ""
 -#: apt-pkg/depcache.cc:202
++#: apt-pkg/depcache.cc:207 apt-pkg/depcache.cc:204
+ #, c-format
+ msgid "Failed to write temporary StateFile %s"
+ msgstr ""
 -#: apt-pkg/tagfile.cc:106
++#: apt-pkg/tagfile.cc:106 apt-pkg/tagfile.cc:102
  #, c-format
  msgid "Unable to parse package file %s (1)"
  msgstr ""
  
--#: apt-pkg/tagfile.cc:193
++#: apt-pkg/tagfile.cc:193 apt-pkg/tagfile.cc:189
  #, c-format
  msgid "Unable to parse package file %s (2)"
  msgstr ""
  
--#: apt-pkg/sourcelist.cc:94
++#: apt-pkg/sourcelist.cc:94 apt-pkg/sourcelist.cc:90
  #, c-format
  msgid "Malformed line %lu in source list %s (URI)"
  msgstr ""
  
--#: apt-pkg/sourcelist.cc:96
++#: apt-pkg/sourcelist.cc:96 apt-pkg/sourcelist.cc:92
  #, c-format
  msgid "Malformed line %lu in source list %s (dist)"
  msgstr ""
  
--#: apt-pkg/sourcelist.cc:99
++#: apt-pkg/sourcelist.cc:99 apt-pkg/sourcelist.cc:95
  #, c-format
  msgid "Malformed line %lu in source list %s (URI parse)"
  msgstr ""
  
--#: apt-pkg/sourcelist.cc:105
++#: apt-pkg/sourcelist.cc:105 apt-pkg/sourcelist.cc:101
  #, c-format
  msgid "Malformed line %lu in source list %s (absolute dist)"
  msgstr ""
  
--#: apt-pkg/sourcelist.cc:112
++#: apt-pkg/sourcelist.cc:112 apt-pkg/sourcelist.cc:108
  #, c-format
  msgid "Malformed line %lu in source list %s (dist parse)"
  msgstr ""
  
--#: apt-pkg/sourcelist.cc:203
++#: apt-pkg/sourcelist.cc:203 apt-pkg/sourcelist.cc:199
  #, c-format
  msgid "Opening %s"
  msgstr ""
  
- #: apt-pkg/sourcelist.cc:220 apt-pkg/cdrom.cc:426
 -#: apt-pkg/sourcelist.cc:220 apt-pkg/cdrom.cc:451
++#: apt-pkg/sourcelist.cc:220 apt-pkg/cdrom.cc:450 apt-pkg/sourcelist.cc:216
++#: apt-pkg/cdrom.cc:448
  #, c-format
  msgid "Line %u too long in source list %s."
  msgstr ""
  
--#: apt-pkg/sourcelist.cc:240
++#: apt-pkg/sourcelist.cc:240 apt-pkg/sourcelist.cc:236
  #, c-format
  msgid "Malformed line %u in source list %s (type)"
  msgstr ""
  
--#: apt-pkg/sourcelist.cc:244
++#: apt-pkg/sourcelist.cc:244 apt-pkg/sourcelist.cc:240
  #, c-format
  msgid "Type '%s' is not known on line %u in source list %s"
  msgstr ""
  
  #: apt-pkg/sourcelist.cc:252 apt-pkg/sourcelist.cc:255
++#: apt-pkg/sourcelist.cc:248 apt-pkg/sourcelist.cc:251
  #, c-format
  msgid "Malformed line %u in source list %s (vendor id)"
  msgstr ""
  
- #: apt-pkg/packagemanager.cc:402
 -#: apt-pkg/packagemanager.cc:403
++#: apt-pkg/packagemanager.cc:403 apt-pkg/packagemanager.cc:399
  #, c-format
  msgid ""
  "This installation run will require temporarily removing the essential "
  "you really want to do it, activate the APT::Force-LoopBreak option."
  msgstr ""
  
--#: apt-pkg/pkgrecords.cc:37
++#: apt-pkg/pkgrecords.cc:35 apt-pkg/pkgrecords.cc:32
  #, c-format
  msgid "Index file type '%s' is not supported"
  msgstr ""
  
- #: apt-pkg/algorithms.cc:241
 -#: apt-pkg/algorithms.cc:254
++#: apt-pkg/algorithms.cc:248 apt-pkg/algorithms.cc:247
  #, c-format
  msgid ""
  "The package %s needs to be reinstalled, but I can't find an archive for it."
  msgstr ""
  
- #: apt-pkg/algorithms.cc:1066
 -#: apt-pkg/algorithms.cc:1110
++#: apt-pkg/algorithms.cc:1104 apt-pkg/algorithms.cc:1103
  msgid ""
  "Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
  "held packages."
  msgstr ""
  
- #: apt-pkg/algorithms.cc:1068
 -#: apt-pkg/algorithms.cc:1112
++#: apt-pkg/algorithms.cc:1106 apt-pkg/algorithms.cc:1105
  msgid "Unable to correct problems, you have held broken packages."
  msgstr ""
  
--#: apt-pkg/acquire.cc:62
++#: apt-pkg/acquire.cc:62 apt-pkg/acquire.cc:59
  #, c-format
  msgid "Lists directory %spartial is missing."
  msgstr ""
  
--#: apt-pkg/acquire.cc:66
++#: apt-pkg/acquire.cc:66 apt-pkg/acquire.cc:63
  #, c-format
  msgid "Archive directory %spartial is missing."
  msgstr ""
  
  #. only show the ETA if it makes sense
  #. two days
--#: apt-pkg/acquire.cc:830
++#: apt-pkg/acquire.cc:830 apt-pkg/acquire.cc:827
  #, c-format
  msgid "Retrieving file %li of %li (%s remaining)"
  msgstr ""
  
--#: apt-pkg/acquire.cc:832
++#: apt-pkg/acquire.cc:832 apt-pkg/acquire.cc:829
  #, c-format
  msgid "Retrieving file %li of %li"
  msgstr ""
  
--#: apt-pkg/acquire-worker.cc:113
++#: apt-pkg/acquire-worker.cc:113 apt-pkg/acquire-worker.cc:110
  #, c-format
  msgid "The method driver %s could not be found."
  msgstr ""
  
--#: apt-pkg/acquire-worker.cc:162
++#: apt-pkg/acquire-worker.cc:162 apt-pkg/acquire-worker.cc:159
  #, c-format
  msgid "Method %s did not start correctly"
  msgstr ""
  
- #: apt-pkg/acquire-worker.cc:377
 -#: apt-pkg/acquire-worker.cc:384
++#: apt-pkg/acquire-worker.cc:384 apt-pkg/acquire-worker.cc:381
  #, c-format
  msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
  msgstr ""
  
- #: apt-pkg/init.cc:120
 -#: apt-pkg/init.cc:126
++#: apt-pkg/init.cc:123 apt-pkg/init.cc:126
  #, c-format
  msgid "Packaging system '%s' is not supported"
  msgstr ""
  
- #: apt-pkg/init.cc:136
 -#: apt-pkg/init.cc:142
++#: apt-pkg/init.cc:139 apt-pkg/init.cc:142
  msgid "Unable to determine a suitable packaging system type"
  msgstr ""
  
--#: apt-pkg/clean.cc:61
++#: apt-pkg/clean.cc:61 apt-pkg/clean.cc:57
  #, c-format
  msgid "Unable to stat %s."
  msgstr ""
  
--#: apt-pkg/srcrecords.cc:48
++#: apt-pkg/srcrecords.cc:48 apt-pkg/srcrecords.cc:44
  msgid "You must put some 'source' URIs in your sources.list"
  msgstr ""
  
--#: apt-pkg/cachefile.cc:73
++#: apt-pkg/cachefile.cc:73 apt-pkg/cachefile.cc:69
  msgid "The package lists or status file could not be parsed or opened."
  msgstr ""
  
--#: apt-pkg/cachefile.cc:77
++#: apt-pkg/cachefile.cc:77 apt-pkg/cachefile.cc:73
  msgid "You may want to run apt-get update to correct these problems"
  msgstr ""
  
--#: apt-pkg/policy.cc:270
++#: apt-pkg/policy.cc:270 apt-pkg/policy.cc:267
  msgid "Invalid record in the preferences file, no Package header"
  msgstr ""
  
--#: apt-pkg/policy.cc:292
++#: apt-pkg/policy.cc:292 apt-pkg/policy.cc:289
  #, c-format
  msgid "Did not understand pin type %s"
  msgstr ""
  
--#: apt-pkg/policy.cc:300
++#: apt-pkg/policy.cc:300 apt-pkg/policy.cc:297
  msgid "No priority (or zero) specified for pin"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:74
 -#: apt-pkg/pkgcachegen.cc:76
++#: apt-pkg/pkgcachegen.cc:76 apt-pkg/pkgcachegen.cc:72
  msgid "Cache has an incompatible versioning system"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:117
 -#: apt-pkg/pkgcachegen.cc:119
++#: apt-pkg/pkgcachegen.cc:119 apt-pkg/pkgcachegen.cc:115
  #, c-format
  msgid "Error occurred while processing %s (NewPackage)"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:129
 -#: apt-pkg/pkgcachegen.cc:134
++#: apt-pkg/pkgcachegen.cc:134 apt-pkg/pkgcachegen.cc:130
  #, c-format
  msgid "Error occurred while processing %s (UsePackage1)"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:150
 -#: apt-pkg/pkgcachegen.cc:157
++#: apt-pkg/pkgcachegen.cc:157 apt-pkg/pkgcachegen.cc:153
+ #, c-format
+ msgid "Error occured while processing %s (NewFileDesc1)"
+ msgstr ""
 -#: apt-pkg/pkgcachegen.cc:182
++#: apt-pkg/pkgcachegen.cc:182 apt-pkg/pkgcachegen.cc:178
  #, c-format
  msgid "Error occurred while processing %s (UsePackage2)"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:154
 -#: apt-pkg/pkgcachegen.cc:186
++#: apt-pkg/pkgcachegen.cc:186 apt-pkg/pkgcachegen.cc:182
  #, c-format
  msgid "Error occurred while processing %s (NewFileVer1)"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:184
 -#: apt-pkg/pkgcachegen.cc:217
++#: apt-pkg/pkgcachegen.cc:217 apt-pkg/pkgcachegen.cc:213
  #, c-format
  msgid "Error occurred while processing %s (NewVersion1)"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:188
 -#: apt-pkg/pkgcachegen.cc:221
++#: apt-pkg/pkgcachegen.cc:221 apt-pkg/pkgcachegen.cc:217
  #, c-format
  msgid "Error occurred while processing %s (UsePackage3)"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:192
 -#: apt-pkg/pkgcachegen.cc:225
++#: apt-pkg/pkgcachegen.cc:225 apt-pkg/pkgcachegen.cc:221
  #, c-format
  msgid "Error occurred while processing %s (NewVersion2)"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:207
 -#: apt-pkg/pkgcachegen.cc:249
++#: apt-pkg/pkgcachegen.cc:249 apt-pkg/pkgcachegen.cc:245
+ #, c-format
+ msgid "Error occured while processing %s (NewFileDesc2)"
+ msgstr ""
 -#: apt-pkg/pkgcachegen.cc:255
++#: apt-pkg/pkgcachegen.cc:255 apt-pkg/pkgcachegen.cc:251
  msgid "Wow, you exceeded the number of package names this APT is capable of."
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:210
 -#: apt-pkg/pkgcachegen.cc:258
++#: apt-pkg/pkgcachegen.cc:258 apt-pkg/pkgcachegen.cc:254
  msgid "Wow, you exceeded the number of versions this APT is capable of."
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:213
 -#: apt-pkg/pkgcachegen.cc:261
++#: apt-pkg/pkgcachegen.cc:261 apt-pkg/pkgcachegen.cc:257
+ msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+ msgstr ""
 -#: apt-pkg/pkgcachegen.cc:264
++#: apt-pkg/pkgcachegen.cc:264 apt-pkg/pkgcachegen.cc:260
  msgid "Wow, you exceeded the number of dependencies this APT is capable of."
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:241
 -#: apt-pkg/pkgcachegen.cc:292
++#: apt-pkg/pkgcachegen.cc:292 apt-pkg/pkgcachegen.cc:288
  #, c-format
  msgid "Error occurred while processing %s (FindPkg)"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:254
 -#: apt-pkg/pkgcachegen.cc:305
++#: apt-pkg/pkgcachegen.cc:305 apt-pkg/pkgcachegen.cc:301
  #, c-format
  msgid "Error occurred while processing %s (CollectFileProvides)"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:260
 -#: apt-pkg/pkgcachegen.cc:311
++#: apt-pkg/pkgcachegen.cc:311 apt-pkg/pkgcachegen.cc:307
  #, c-format
  msgid "Package %s %s was not found while processing file dependencies"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:574
 -#: apt-pkg/pkgcachegen.cc:682
++#: apt-pkg/pkgcachegen.cc:682 apt-pkg/pkgcachegen.cc:678
  #, c-format
  msgid "Couldn't stat source package list %s"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:658
 -#: apt-pkg/pkgcachegen.cc:767
++#: apt-pkg/pkgcachegen.cc:767 apt-pkg/pkgcachegen.cc:763
  msgid "Collecting File Provides"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:785 apt-pkg/pkgcachegen.cc:792
+ #: apt-pkg/pkgcachegen.cc:894 apt-pkg/pkgcachegen.cc:901
++#: apt-pkg/pkgcachegen.cc:890 apt-pkg/pkgcachegen.cc:897
  msgid "IO Error saving source cache"
  msgstr ""
  
- #: apt-pkg/acquire-item.cc:126
 -#: apt-pkg/acquire-item.cc:127
++#: apt-pkg/acquire-item.cc:134
  #, c-format
  msgid "rename failed, %s (%s -> %s)."
  msgstr ""
  
- #: apt-pkg/acquire-item.cc:243 apt-pkg/acquire-item.cc:952
 -#: apt-pkg/acquire-item.cc:406 apt-pkg/acquire-item.cc:661
 -#: apt-pkg/acquire-item.cc:1411
++#: apt-pkg/acquire-item.cc:293 apt-pkg/acquire-item.cc:1039
++#: apt-pkg/acquire-item.cc:456 apt-pkg/acquire-item.cc:710
++#: apt-pkg/acquire-item.cc:1462
  msgid "MD5Sum mismatch"
  msgstr ""
  
- #: apt-pkg/acquire-item.cc:647
 -#: apt-pkg/acquire-item.cc:1106
++#: apt-pkg/acquire-item.cc:733 apt-pkg/acquire-item.cc:1156
  msgid "There is no public key available for the following key IDs:\n"
  msgstr ""
  
- #: apt-pkg/acquire-item.cc:760
 -#: apt-pkg/acquire-item.cc:1219
++#: apt-pkg/acquire-item.cc:847 apt-pkg/acquire-item.cc:1270
  #, c-format
  msgid ""
  "I wasn't able to locate a file for the %s package. This might mean you need "
  "to manually fix this package. (due to missing arch)"
  msgstr ""
  
- #: apt-pkg/acquire-item.cc:819
 -#: apt-pkg/acquire-item.cc:1278
++#: apt-pkg/acquire-item.cc:906 apt-pkg/acquire-item.cc:1329
  #, c-format
  msgid ""
  "I wasn't able to locate file for the %s package. This might mean you need to "
  "manually fix this package."
  msgstr ""
  
- #: apt-pkg/acquire-item.cc:855
 -#: apt-pkg/acquire-item.cc:1314
++#: apt-pkg/acquire-item.cc:942 apt-pkg/acquire-item.cc:1365
  #, c-format
  msgid ""
  "The package index files are corrupted. No Filename: field for package %s."
  msgstr ""
  
- #: apt-pkg/acquire-item.cc:942
 -#: apt-pkg/acquire-item.cc:1401
++#: apt-pkg/acquire-item.cc:1029 apt-pkg/acquire-item.cc:1452
  msgid "Size mismatch"
  msgstr ""
  
  msgid "Vendor block %s contains no fingerprint"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:507
 -#: apt-pkg/cdrom.cc:532
++#: apt-pkg/cdrom.cc:531 apt-pkg/cdrom.cc:529
  #, c-format
  msgid ""
  "Using CD-ROM mount point %s\n"
  "Mounting CD-ROM\n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:516 apt-pkg/cdrom.cc:598
 -#: apt-pkg/cdrom.cc:541 apt-pkg/cdrom.cc:623
++#: apt-pkg/cdrom.cc:540 apt-pkg/cdrom.cc:622 apt-pkg/cdrom.cc:538
++#: apt-pkg/cdrom.cc:620
  msgid "Identifying.. "
  msgstr ""
  
- #: apt-pkg/cdrom.cc:541
 -#: apt-pkg/cdrom.cc:566
++#: apt-pkg/cdrom.cc:565 apt-pkg/cdrom.cc:563
  #, c-format
  msgid "Stored label: %s \n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:561
 -#: apt-pkg/cdrom.cc:586
++#: apt-pkg/cdrom.cc:585 apt-pkg/cdrom.cc:583
  #, c-format
  msgid "Using CD-ROM mount point %s\n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:579
 -#: apt-pkg/cdrom.cc:604
++#: apt-pkg/cdrom.cc:603 apt-pkg/cdrom.cc:601
  msgid "Unmounting CD-ROM\n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:583
 -#: apt-pkg/cdrom.cc:608
++#: apt-pkg/cdrom.cc:607 apt-pkg/cdrom.cc:605
  msgid "Waiting for disc...\n"
  msgstr ""
  
  #. Mount the new CDROM
- #: apt-pkg/cdrom.cc:591
 -#: apt-pkg/cdrom.cc:616
++#: apt-pkg/cdrom.cc:615 apt-pkg/cdrom.cc:613
  msgid "Mounting CD-ROM...\n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:609
 -#: apt-pkg/cdrom.cc:634
++#: apt-pkg/cdrom.cc:633 apt-pkg/cdrom.cc:631
  msgid "Scanning disc for index files..\n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:647
 -#: apt-pkg/cdrom.cc:674
++#: apt-pkg/cdrom.cc:673 apt-pkg/cdrom.cc:671
  #, c-format
- msgid "Found %i package indexes, %i source indexes and %i signatures\n"
+ msgid ""
+ "Found %i package indexes, %i source indexes, %i translation indexes and %i "
+ "signatures\n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:712
 -#: apt-pkg/cdrom.cc:711
 -#, c-format
 -msgid "Found label '%s'\n"
 -msgstr ""
 -
 -#: apt-pkg/cdrom.cc:740
++#: apt-pkg/cdrom.cc:739 apt-pkg/cdrom.cc:737
  msgid "That is not a valid name, try again.\n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:728
 -#: apt-pkg/cdrom.cc:756
++#: apt-pkg/cdrom.cc:755 apt-pkg/cdrom.cc:753
  #, c-format
  msgid ""
  "This disc is called: \n"
  "'%s'\n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:732
 -#: apt-pkg/cdrom.cc:760
++#: apt-pkg/cdrom.cc:759 apt-pkg/cdrom.cc:757
  msgid "Copying package lists..."
  msgstr ""
  
- #: apt-pkg/cdrom.cc:756
 -#: apt-pkg/cdrom.cc:786
++#: apt-pkg/cdrom.cc:785 apt-pkg/cdrom.cc:783
  msgid "Writing new source list\n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:765
 -#: apt-pkg/cdrom.cc:795
++#: apt-pkg/cdrom.cc:794 apt-pkg/cdrom.cc:792
  msgid "Source list entries for this disc are:\n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:807
 -#: apt-pkg/cdrom.cc:837
 -msgid "Unmounting CD-ROM...\n"
++#: apt-pkg/cdrom.cc:836
 +msgid "Unmounting CD-ROM..."
  msgstr ""
  
- #: apt-pkg/indexcopy.cc:261
+ #: apt-pkg/indexcopy.cc:263 apt-pkg/indexcopy.cc:830
  #, c-format
  msgid "Wrote %i records.\n"
  msgstr ""
@@@ -2488,52 -2572,52 +2544,52 @@@ msgstr "
  msgid "Wrote %i records with %i missing files and %i mismatched files\n"
  msgstr ""
  
--#: apt-pkg/deb/dpkgpm.cc:358
++#: apt-pkg/deb/dpkgpm.cc:358 apt-pkg/deb/dpkgpm.cc:357
  #, c-format
  msgid "Preparing %s"
  msgstr ""
  
--#: apt-pkg/deb/dpkgpm.cc:359
++#: apt-pkg/deb/dpkgpm.cc:359 apt-pkg/deb/dpkgpm.cc:358
  #, c-format
  msgid "Unpacking %s"
  msgstr ""
  
--#: apt-pkg/deb/dpkgpm.cc:364
++#: apt-pkg/deb/dpkgpm.cc:364 apt-pkg/deb/dpkgpm.cc:363
  #, c-format
  msgid "Preparing to configure %s"
  msgstr ""
  
--#: apt-pkg/deb/dpkgpm.cc:365
++#: apt-pkg/deb/dpkgpm.cc:365 apt-pkg/deb/dpkgpm.cc:364
  #, c-format
  msgid "Configuring %s"
  msgstr ""
  
--#: apt-pkg/deb/dpkgpm.cc:366
++#: apt-pkg/deb/dpkgpm.cc:366 apt-pkg/deb/dpkgpm.cc:365
  #, c-format
  msgid "Installed %s"
  msgstr ""
  
--#: apt-pkg/deb/dpkgpm.cc:371
++#: apt-pkg/deb/dpkgpm.cc:371 apt-pkg/deb/dpkgpm.cc:370
  #, c-format
  msgid "Preparing for removal of %s"
  msgstr ""
  
--#: apt-pkg/deb/dpkgpm.cc:372
++#: apt-pkg/deb/dpkgpm.cc:372 apt-pkg/deb/dpkgpm.cc:371
  #, c-format
  msgid "Removing %s"
  msgstr ""
  
--#: apt-pkg/deb/dpkgpm.cc:373
++#: apt-pkg/deb/dpkgpm.cc:373 apt-pkg/deb/dpkgpm.cc:372
  #, c-format
  msgid "Removed %s"
  msgstr ""
  
--#: apt-pkg/deb/dpkgpm.cc:378
++#: apt-pkg/deb/dpkgpm.cc:378 apt-pkg/deb/dpkgpm.cc:377
  #, c-format
  msgid "Preparing to completely remove %s"
  msgstr ""
  
--#: apt-pkg/deb/dpkgpm.cc:379
++#: apt-pkg/deb/dpkgpm.cc:379 apt-pkg/deb/dpkgpm.cc:378
  #, c-format
  msgid "Completely removed %s"
  msgstr ""
  #: methods/rsh.cc:330
  msgid "Connection closed prematurely"
  msgstr ""
++
++#: apt-pkg/cdrom.cc:708
++#, c-format
++msgid "Found label '%s'\n"
++msgstr ""
++
++#: apt-pkg/cdrom.cc:834
++msgid "Unmounting CD-ROM...\n"
++msgstr ""
++
++#: methods/rred.cc:219
++msgid "Could not patch file"
++msgstr ""
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..bb5ed5033368a3699a03fe69d5e4ed70b9fc94c6
new file mode 100644 (file)
Binary files differ