Преглед изворни кода

merged with the debian-sid branch

Michael Vogt пре 20 година
родитељ
комит
4f5bd44710

+ 1 - 1
apt-inst/deb/dpkgdb.cc

@@ -383,7 +383,7 @@ bool debDpkgDB::ReadyFileList(OpProgress &Progress)
       return _error->Error(_("The pkg cache must be initialized first"));
    if (FList != 0)
    {
-      Progress.OverallProgress(1,1,1,_("Reading file list"));
+      Progress.OverallProgress(1,1,1,_("Reading file listing"));
       return true;
    }
    

+ 46 - 24
apt-pkg/acquire-item.cc

@@ -103,7 +103,8 @@ void pkgAcquire::Item::Done(string Message,unsigned long Size,string,
 {
    // We just downloaded something..
    string FileName = LookupTag(Message,"Filename");
-   if (Complete == false && FileName == DestFile)
+   // we only inform the Log class if it was actually not a local thing
+   if (Complete == false && !Local && FileName == DestFile)
    {
       if (Owner->Log != 0)
 	 Owner->Log->Fetched(Size,atoi(LookupTag(Message,"Resume-Point","0").c_str()));
@@ -134,7 +135,6 @@ void pkgAcquire::Item::Rename(string From,string To)
 }
 									/*}}}*/
 
-
 // AcqDiffIndex::AcqDiffIndex - Constructor			
 // ---------------------------------------------------------------------
 /* Get the DiffIndex file first and see if there are patches availabe 
@@ -169,8 +169,8 @@ pkgAcqDiffIndex::pkgAcqDiffIndex(pkgAcquire *Owner,
    //        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:/" ||
-      !_config->FindB("Acquire::Diffs",true)) {
+      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;
@@ -178,11 +178,10 @@ pkgAcqDiffIndex::pkgAcqDiffIndex(pkgAcquire *Owner,
       return;
    }
 
-   if(Debug) {
+   if(Debug) 
       std::clog << "pkgAcqIndexDiffs::pkgAcqIndexDiffs(): " 
 		<< CurrentPackagesFile << std::endl;
-   }
-
+   
    QueueURI(Desc);
 
 }
@@ -237,26 +236,32 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string IndexDiffFile)
       SHA1.AddFD(fd.Fd(), fd.Size());
       local_sha1 = string(SHA1.Result());
 
-      if(local_sha1 == ServerSha1) {
+      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 {
+      } 
+      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) {
+	 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(found) 
+	    {
 	       if(Debug)
 		  std::clog << "Need to get diff: " << d.file << std::endl;
 	       available_patches.push_back(d);
@@ -265,12 +270,15 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string IndexDiffFile)
       }
 
       // no information how to get the patches, bail out
-      if(!found) {
+      if(!found) 
+      {
 	 if(Debug)
 	    std::clog << "Can't find a patch in the index file" << std::endl;
 	 // Failed will queue a big package file
 	 Failed("", NULL);
-      } else {
+      } 
+      else 
+      {
 	 // queue the diffs
 	 new pkgAcqIndexDiffs(Owner, RealURI, Description, Desc.ShortDesc,
 			      ExpectedMD5, available_patches);
@@ -351,10 +359,13 @@ pkgAcqIndexDiffs::pkgAcqIndexDiffs(pkgAcquire *Owner,
    Desc.Owner = this;
    Desc.ShortDesc = ShortDesc;
 
-   if(available_patches.size() == 0) {
+   if(available_patches.size() == 0) 
+   {
       // we are done (yeah!)
       Finish(true);
-   } else {
+   }
+   else
+   {
       // get the next diff
       State = StateFetchDiff;
       QueueNextDiff();
@@ -366,7 +377,7 @@ void pkgAcqIndexDiffs::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
 {
    if(Debug)
       std::clog << "pkgAcqIndexDiffs failed: " << Desc.URI << std::endl
-		<< "Falling back to normal index file acquire" << std::endl;
+		<< "Falling back to normal index file aquire" << std::endl;
    new pkgAcqIndex(Owner, RealURI, Description,Desc.ShortDesc, 
 		   ExpectedMD5);
    Finish();
@@ -378,7 +389,8 @@ void pkgAcqIndexDiffs::Finish(bool allDone)
 {
    // we restore the original name, this is required, otherwise
    // the file will be cleaned
-   if(allDone) {
+   if(allDone) 
+   {
       DestFile = _config->FindDir("Dir::State::lists");
       DestFile += URItoFileName(RealURI);
 
@@ -435,14 +447,17 @@ bool pkgAcqIndexDiffs::QueueNextDiff()
    // 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.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) { 
+   if(available_patches.size() == 0) 
+   { 
       Failed("", NULL);
       return false;
    }
@@ -484,6 +499,7 @@ void pkgAcqIndexDiffs::Done(string Message,unsigned long Size,string Md5Hash,
 
       string FileName = LookupTag(Message,"Filename");
       State = StateUnzipDiff;
+      Local = true;
       Desc.URI = "gzip:" + FileName;
       DestFile += ".decomp";
       QueueURI(Desc);
@@ -502,6 +518,7 @@ void pkgAcqIndexDiffs::Done(string Message,unsigned long Size,string Md5Hash,
 	 std::clog << "Sending to rred method: " << FinalFile << std::endl;
 
       State = StateApplyDiff;
+      Local = true;
       Desc.URI = "rred:" + FinalFile;
       QueueURI(Desc);
       Mode = "rred";
@@ -1033,9 +1050,14 @@ void pkgAcqMetaIndex::QueueIndexes(bool verify)
          }
       }
       
-      // Queue Packages file
-      new pkgAcqDiffIndex(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) 
+	 new pkgAcqDiffIndex(Owner, (*Target)->URI, (*Target)->Description,
+			     (*Target)->ShortDesc, ExpectedIndexMD5);
+      else 
+	 new pkgAcqIndex(Owner, (*Target)->URI, (*Target)->Description,
+			    (*Target)->ShortDesc, ExpectedIndexMD5);
    }
 }
 

+ 7 - 1
apt-pkg/acquire.cc

@@ -818,7 +818,13 @@ bool pkgAcquireStatus::Pulse(pkgAcquire *Owner)
       unsigned long ETA =
 	 (unsigned long)((TotalBytes - CurrentBytes) / CurrentCPS);
 
-      snprintf(msg,sizeof(msg), _("Downloading file %li of %li (%s remaining)"), i, TotalItems, TimeToStr(ETA).c_str());
+      // only show the ETA if it makes sense
+      if (ETA > 0 && ETA < 172800 /* two days */ )
+	 snprintf(msg,sizeof(msg), _("Retrieving file %li of %li (%s remaining)"), i, TotalItems, TimeToStr(ETA).c_str());
+      else
+	 snprintf(msg,sizeof(msg), _("Retrieving file %li of %li"), i, TotalItems);
+	 
+
 
       // build the status str
       status << "dlstatus:" << i

+ 1 - 0
apt-pkg/contrib/hashes.cc

@@ -36,6 +36,7 @@ bool Hashes::AddFD(int Fd,unsigned long Size)
       Size -= Res;
       MD5.Add(Buf,Res);
       SHA1.Add(Buf,Res);
+      SHA256.Add(Buf,Res);
    }
    return true;
 }

+ 3 - 1
apt-pkg/contrib/hashes.h

@@ -19,6 +19,7 @@
 
 #include <apt-pkg/md5.h>
 #include <apt-pkg/sha1.h>
+#include <apt-pkg/sha256.h>
 
 #include <algorithm>
 
@@ -30,10 +31,11 @@ class Hashes
 
    MD5Summation MD5;
    SHA1Summation SHA1;
+   SHA256Summation SHA256;
    
    inline bool Add(const unsigned char *Data,unsigned long Size)
    {
-      return MD5.Add(Data,Size) && SHA1.Add(Data,Size);
+      return MD5.Add(Data,Size) && SHA1.Add(Data,Size) && SHA256.Add(Data,Size);
    };
    inline bool Add(const char *Data) {return Add((unsigned char *)Data,strlen(Data));};
    bool AddFD(int Fd,unsigned long Size);

+ 424 - 0
apt-pkg/contrib/sha256.cc

@@ -0,0 +1,424 @@
+/*
+ * Cryptographic API.
+ *
+ * SHA-256, as specified in
+ * http://csrc.nist.gov/cryptval/shs/sha256-384-512.pdf
+ *
+ * SHA-256 code by Jean-Luc Cooke <jlcooke@certainkey.com>.
+ *
+ * Copyright (c) Jean-Luc Cooke <jlcooke@certainkey.com>
+ * Copyright (c) Andrew McDonald <andrew@mcdonald.org.uk>
+ * Copyright (c) 2002 James Morris <jmorris@intercode.com.au>
+ *
+ * Ported from the Linux kernel to Apt by Anthony Towns <ajt@debian.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option) 
+ * any later version.
+ *
+ */
+#define SHA256_DIGEST_SIZE      32
+#define SHA256_HMAC_BLOCK_SIZE  64
+
+#define ror32(value,bits) (((value) >> (bits)) | ((value) << (32 - (bits))))
+
+#include <apt-pkg/sha256.h>
+#include <apt-pkg/strutl.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <arpa/inet.h>
+
+typedef uint32_t u32;
+typedef uint8_t  u8;
+
+static inline u32 Ch(u32 x, u32 y, u32 z)
+{
+        return z ^ (x & (y ^ z));
+}
+
+static inline u32 Maj(u32 x, u32 y, u32 z)
+{
+        return (x & y) | (z & (x | y));
+}
+
+#define e0(x)       (ror32(x, 2) ^ ror32(x,13) ^ ror32(x,22))
+#define e1(x)       (ror32(x, 6) ^ ror32(x,11) ^ ror32(x,25))
+#define s0(x)       (ror32(x, 7) ^ ror32(x,18) ^ (x >> 3))
+#define s1(x)       (ror32(x,17) ^ ror32(x,19) ^ (x >> 10))
+
+#define H0         0x6a09e667
+#define H1         0xbb67ae85
+#define H2         0x3c6ef372
+#define H3         0xa54ff53a
+#define H4         0x510e527f
+#define H5         0x9b05688c
+#define H6         0x1f83d9ab
+#define H7         0x5be0cd19
+
+static inline void LOAD_OP(int I, u32 *W, const u8 *input)
+{
+	W[I] = (  ((u32) input[I + 0] << 24)
+		| ((u32) input[I + 1] << 16)
+		| ((u32) input[I + 2] << 8)
+		| ((u32) input[I + 3]));
+}
+
+static inline void BLEND_OP(int I, u32 *W)
+{
+        W[I] = s1(W[I-2]) + W[I-7] + s0(W[I-15]) + W[I-16];
+}
+
+static void sha256_transform(u32 *state, const u8 *input)
+{
+        u32 a, b, c, d, e, f, g, h, t1, t2;
+        u32 W[64];
+        int i;
+
+        /* load the input */
+        for (i = 0; i < 16; i++)
+                LOAD_OP(i, W, input);
+
+        /* now blend */
+        for (i = 16; i < 64; i++)
+                BLEND_OP(i, W);
+    
+        /* load the state into our registers */
+        a=state[0];  b=state[1];  c=state[2];  d=state[3];
+        e=state[4];  f=state[5];  g=state[6];  h=state[7];
+
+        /* now iterate */
+        t1 = h + e1(e) + Ch(e,f,g) + 0x428a2f98 + W[ 0];
+        t2 = e0(a) + Maj(a,b,c);    d+=t1;    h=t1+t2;
+        t1 = g + e1(d) + Ch(d,e,f) + 0x71374491 + W[ 1];
+        t2 = e0(h) + Maj(h,a,b);    c+=t1;    g=t1+t2;
+        t1 = f + e1(c) + Ch(c,d,e) + 0xb5c0fbcf + W[ 2];
+        t2 = e0(g) + Maj(g,h,a);    b+=t1;    f=t1+t2;
+        t1 = e + e1(b) + Ch(b,c,d) + 0xe9b5dba5 + W[ 3];
+        t2 = e0(f) + Maj(f,g,h);    a+=t1;    e=t1+t2;
+        t1 = d + e1(a) + Ch(a,b,c) + 0x3956c25b + W[ 4];
+        t2 = e0(e) + Maj(e,f,g);    h+=t1;    d=t1+t2;
+        t1 = c + e1(h) + Ch(h,a,b) + 0x59f111f1 + W[ 5];
+        t2 = e0(d) + Maj(d,e,f);    g+=t1;    c=t1+t2;
+        t1 = b + e1(g) + Ch(g,h,a) + 0x923f82a4 + W[ 6];
+        t2 = e0(c) + Maj(c,d,e);    f+=t1;    b=t1+t2;
+        t1 = a + e1(f) + Ch(f,g,h) + 0xab1c5ed5 + W[ 7];
+        t2 = e0(b) + Maj(b,c,d);    e+=t1;    a=t1+t2;
+
+        t1 = h + e1(e) + Ch(e,f,g) + 0xd807aa98 + W[ 8];
+        t2 = e0(a) + Maj(a,b,c);    d+=t1;    h=t1+t2;
+        t1 = g + e1(d) + Ch(d,e,f) + 0x12835b01 + W[ 9];
+        t2 = e0(h) + Maj(h,a,b);    c+=t1;    g=t1+t2;
+        t1 = f + e1(c) + Ch(c,d,e) + 0x243185be + W[10];
+        t2 = e0(g) + Maj(g,h,a);    b+=t1;    f=t1+t2;
+        t1 = e + e1(b) + Ch(b,c,d) + 0x550c7dc3 + W[11];
+        t2 = e0(f) + Maj(f,g,h);    a+=t1;    e=t1+t2;
+        t1 = d + e1(a) + Ch(a,b,c) + 0x72be5d74 + W[12];
+        t2 = e0(e) + Maj(e,f,g);    h+=t1;    d=t1+t2;
+        t1 = c + e1(h) + Ch(h,a,b) + 0x80deb1fe + W[13];
+        t2 = e0(d) + Maj(d,e,f);    g+=t1;    c=t1+t2;
+        t1 = b + e1(g) + Ch(g,h,a) + 0x9bdc06a7 + W[14];
+        t2 = e0(c) + Maj(c,d,e);    f+=t1;    b=t1+t2;
+        t1 = a + e1(f) + Ch(f,g,h) + 0xc19bf174 + W[15];
+        t2 = e0(b) + Maj(b,c,d);    e+=t1;    a=t1+t2;
+
+        t1 = h + e1(e) + Ch(e,f,g) + 0xe49b69c1 + W[16];
+        t2 = e0(a) + Maj(a,b,c);    d+=t1;    h=t1+t2;
+        t1 = g + e1(d) + Ch(d,e,f) + 0xefbe4786 + W[17];
+        t2 = e0(h) + Maj(h,a,b);    c+=t1;    g=t1+t2;
+        t1 = f + e1(c) + Ch(c,d,e) + 0x0fc19dc6 + W[18];
+        t2 = e0(g) + Maj(g,h,a);    b+=t1;    f=t1+t2;
+        t1 = e + e1(b) + Ch(b,c,d) + 0x240ca1cc + W[19];
+        t2 = e0(f) + Maj(f,g,h);    a+=t1;    e=t1+t2;
+        t1 = d + e1(a) + Ch(a,b,c) + 0x2de92c6f + W[20];
+        t2 = e0(e) + Maj(e,f,g);    h+=t1;    d=t1+t2;
+        t1 = c + e1(h) + Ch(h,a,b) + 0x4a7484aa + W[21];
+        t2 = e0(d) + Maj(d,e,f);    g+=t1;    c=t1+t2;
+        t1 = b + e1(g) + Ch(g,h,a) + 0x5cb0a9dc + W[22];
+        t2 = e0(c) + Maj(c,d,e);    f+=t1;    b=t1+t2;
+        t1 = a + e1(f) + Ch(f,g,h) + 0x76f988da + W[23];
+        t2 = e0(b) + Maj(b,c,d);    e+=t1;    a=t1+t2;
+
+        t1 = h + e1(e) + Ch(e,f,g) + 0x983e5152 + W[24];
+        t2 = e0(a) + Maj(a,b,c);    d+=t1;    h=t1+t2;
+        t1 = g + e1(d) + Ch(d,e,f) + 0xa831c66d + W[25];
+        t2 = e0(h) + Maj(h,a,b);    c+=t1;    g=t1+t2;
+        t1 = f + e1(c) + Ch(c,d,e) + 0xb00327c8 + W[26];
+        t2 = e0(g) + Maj(g,h,a);    b+=t1;    f=t1+t2;
+        t1 = e + e1(b) + Ch(b,c,d) + 0xbf597fc7 + W[27];
+        t2 = e0(f) + Maj(f,g,h);    a+=t1;    e=t1+t2;
+        t1 = d + e1(a) + Ch(a,b,c) + 0xc6e00bf3 + W[28];
+        t2 = e0(e) + Maj(e,f,g);    h+=t1;    d=t1+t2;
+        t1 = c + e1(h) + Ch(h,a,b) + 0xd5a79147 + W[29];
+        t2 = e0(d) + Maj(d,e,f);    g+=t1;    c=t1+t2;
+        t1 = b + e1(g) + Ch(g,h,a) + 0x06ca6351 + W[30];
+        t2 = e0(c) + Maj(c,d,e);    f+=t1;    b=t1+t2;
+        t1 = a + e1(f) + Ch(f,g,h) + 0x14292967 + W[31];
+        t2 = e0(b) + Maj(b,c,d);    e+=t1;    a=t1+t2;
+
+        t1 = h + e1(e) + Ch(e,f,g) + 0x27b70a85 + W[32];
+        t2 = e0(a) + Maj(a,b,c);    d+=t1;    h=t1+t2;
+        t1 = g + e1(d) + Ch(d,e,f) + 0x2e1b2138 + W[33];
+        t2 = e0(h) + Maj(h,a,b);    c+=t1;    g=t1+t2;
+        t1 = f + e1(c) + Ch(c,d,e) + 0x4d2c6dfc + W[34];
+        t2 = e0(g) + Maj(g,h,a);    b+=t1;    f=t1+t2;
+        t1 = e + e1(b) + Ch(b,c,d) + 0x53380d13 + W[35];
+        t2 = e0(f) + Maj(f,g,h);    a+=t1;    e=t1+t2;
+        t1 = d + e1(a) + Ch(a,b,c) + 0x650a7354 + W[36];
+        t2 = e0(e) + Maj(e,f,g);    h+=t1;    d=t1+t2;
+        t1 = c + e1(h) + Ch(h,a,b) + 0x766a0abb + W[37];
+        t2 = e0(d) + Maj(d,e,f);    g+=t1;    c=t1+t2;
+        t1 = b + e1(g) + Ch(g,h,a) + 0x81c2c92e + W[38];
+        t2 = e0(c) + Maj(c,d,e);    f+=t1;    b=t1+t2;
+        t1 = a + e1(f) + Ch(f,g,h) + 0x92722c85 + W[39];
+        t2 = e0(b) + Maj(b,c,d);    e+=t1;    a=t1+t2;
+
+        t1 = h + e1(e) + Ch(e,f,g) + 0xa2bfe8a1 + W[40];
+        t2 = e0(a) + Maj(a,b,c);    d+=t1;    h=t1+t2;
+        t1 = g + e1(d) + Ch(d,e,f) + 0xa81a664b + W[41];
+        t2 = e0(h) + Maj(h,a,b);    c+=t1;    g=t1+t2;
+        t1 = f + e1(c) + Ch(c,d,e) + 0xc24b8b70 + W[42];
+        t2 = e0(g) + Maj(g,h,a);    b+=t1;    f=t1+t2;
+        t1 = e + e1(b) + Ch(b,c,d) + 0xc76c51a3 + W[43];
+        t2 = e0(f) + Maj(f,g,h);    a+=t1;    e=t1+t2;
+        t1 = d + e1(a) + Ch(a,b,c) + 0xd192e819 + W[44];
+        t2 = e0(e) + Maj(e,f,g);    h+=t1;    d=t1+t2;
+        t1 = c + e1(h) + Ch(h,a,b) + 0xd6990624 + W[45];
+        t2 = e0(d) + Maj(d,e,f);    g+=t1;    c=t1+t2;
+        t1 = b + e1(g) + Ch(g,h,a) + 0xf40e3585 + W[46];
+        t2 = e0(c) + Maj(c,d,e);    f+=t1;    b=t1+t2;
+        t1 = a + e1(f) + Ch(f,g,h) + 0x106aa070 + W[47];
+        t2 = e0(b) + Maj(b,c,d);    e+=t1;    a=t1+t2;
+
+        t1 = h + e1(e) + Ch(e,f,g) + 0x19a4c116 + W[48];
+        t2 = e0(a) + Maj(a,b,c);    d+=t1;    h=t1+t2;
+        t1 = g + e1(d) + Ch(d,e,f) + 0x1e376c08 + W[49];
+        t2 = e0(h) + Maj(h,a,b);    c+=t1;    g=t1+t2;
+        t1 = f + e1(c) + Ch(c,d,e) + 0x2748774c + W[50];
+        t2 = e0(g) + Maj(g,h,a);    b+=t1;    f=t1+t2;
+        t1 = e + e1(b) + Ch(b,c,d) + 0x34b0bcb5 + W[51];
+        t2 = e0(f) + Maj(f,g,h);    a+=t1;    e=t1+t2;
+        t1 = d + e1(a) + Ch(a,b,c) + 0x391c0cb3 + W[52];
+        t2 = e0(e) + Maj(e,f,g);    h+=t1;    d=t1+t2;
+        t1 = c + e1(h) + Ch(h,a,b) + 0x4ed8aa4a + W[53];
+        t2 = e0(d) + Maj(d,e,f);    g+=t1;    c=t1+t2;
+        t1 = b + e1(g) + Ch(g,h,a) + 0x5b9cca4f + W[54];
+        t2 = e0(c) + Maj(c,d,e);    f+=t1;    b=t1+t2;
+        t1 = a + e1(f) + Ch(f,g,h) + 0x682e6ff3 + W[55];
+        t2 = e0(b) + Maj(b,c,d);    e+=t1;    a=t1+t2;
+
+        t1 = h + e1(e) + Ch(e,f,g) + 0x748f82ee + W[56];
+        t2 = e0(a) + Maj(a,b,c);    d+=t1;    h=t1+t2;
+        t1 = g + e1(d) + Ch(d,e,f) + 0x78a5636f + W[57];
+        t2 = e0(h) + Maj(h,a,b);    c+=t1;    g=t1+t2;
+        t1 = f + e1(c) + Ch(c,d,e) + 0x84c87814 + W[58];
+        t2 = e0(g) + Maj(g,h,a);    b+=t1;    f=t1+t2;
+        t1 = e + e1(b) + Ch(b,c,d) + 0x8cc70208 + W[59];
+        t2 = e0(f) + Maj(f,g,h);    a+=t1;    e=t1+t2;
+        t1 = d + e1(a) + Ch(a,b,c) + 0x90befffa + W[60];
+        t2 = e0(e) + Maj(e,f,g);    h+=t1;    d=t1+t2;
+        t1 = c + e1(h) + Ch(h,a,b) + 0xa4506ceb + W[61];
+        t2 = e0(d) + Maj(d,e,f);    g+=t1;    c=t1+t2;
+        t1 = b + e1(g) + Ch(g,h,a) + 0xbef9a3f7 + W[62];
+        t2 = e0(c) + Maj(c,d,e);    f+=t1;    b=t1+t2;
+        t1 = a + e1(f) + Ch(f,g,h) + 0xc67178f2 + W[63];
+        t2 = e0(b) + Maj(b,c,d);    e+=t1;    a=t1+t2;
+
+        state[0] += a; state[1] += b; state[2] += c; state[3] += d;
+        state[4] += e; state[5] += f; state[6] += g; state[7] += h;
+
+        /* clear any sensitive info... */
+        a = b = c = d = e = f = g = h = t1 = t2 = 0;
+        memset(W, 0, 64 * sizeof(u32));
+}
+
+SHA256Summation::SHA256Summation()
+{
+        Sum.state[0] = H0;
+        Sum.state[1] = H1;
+        Sum.state[2] = H2;
+        Sum.state[3] = H3;
+        Sum.state[4] = H4;
+        Sum.state[5] = H5;
+        Sum.state[6] = H6;
+        Sum.state[7] = H7;
+        Sum.count[0] = Sum.count[1] = 0;
+        memset(Sum.buf, 0, sizeof(Sum.buf));
+        Done = false;
+}
+
+bool SHA256Summation::Add(const u8 *data, unsigned long len)
+{
+        struct sha256_ctx *sctx = &Sum;
+        unsigned int i, index, part_len;
+
+        if (Done) return false;
+
+        /* Compute number of bytes mod 128 */
+        index = (unsigned int)((sctx->count[0] >> 3) & 0x3f);
+
+        /* Update number of bits */
+        if ((sctx->count[0] += (len << 3)) < (len << 3)) {
+                sctx->count[1]++;
+                sctx->count[1] += (len >> 29);
+        }
+
+        part_len = 64 - index;
+
+        /* Transform as many times as possible. */
+        if (len >= part_len) {
+                memcpy(&sctx->buf[index], data, part_len);
+                sha256_transform(sctx->state, sctx->buf);
+
+                for (i = part_len; i + 63 < len; i += 64)
+                        sha256_transform(sctx->state, &data[i]);
+                index = 0;
+        } else {
+                i = 0;
+        }
+
+        /* Buffer remaining input */
+        memcpy(&sctx->buf[index], &data[i], len-i);
+
+        return true;
+}
+
+SHA256SumValue SHA256Summation::Result()
+{
+   struct sha256_ctx *sctx = &Sum;
+   if (!Done) {
+        u8 bits[8];
+        unsigned int index, pad_len, t;
+        static const u8 padding[64] = { 0x80, };
+
+        /* Save number of bits */
+        t = sctx->count[0];
+        bits[7] = t; t >>= 8;
+        bits[6] = t; t >>= 8;
+        bits[5] = t; t >>= 8;
+        bits[4] = t;
+        t = sctx->count[1];
+        bits[3] = t; t >>= 8;
+        bits[2] = t; t >>= 8;
+        bits[1] = t; t >>= 8;
+        bits[0] = t;
+
+        /* Pad out to 56 mod 64. */
+        index = (sctx->count[0] >> 3) & 0x3f;
+        pad_len = (index < 56) ? (56 - index) : ((64+56) - index);
+        Add(padding, pad_len);
+
+        /* Append length (before padding) */
+        Add(bits, 8);
+   }
+
+   Done = true;
+
+   /* Store state in digest */
+
+   SHA256SumValue res;
+   u8 *out = res.Sum;
+
+   int i, j;
+   unsigned int t;
+   for (i = j = 0; i < 8; i++, j += 4) {
+      t = sctx->state[i];
+      out[j+3] = t; t >>= 8;
+      out[j+2] = t; t >>= 8;
+      out[j+1] = t; t >>= 8;
+      out[j  ] = t;
+   }
+
+   return res;
+}
+
+// SHA256SumValue::SHA256SumValue - Constructs the sum from a string   /*{{{*/
+// ---------------------------------------------------------------------
+/* The string form of a SHA256 is a 64 character hex number */
+SHA256SumValue::SHA256SumValue(string Str)
+{
+   memset(Sum,0,sizeof(Sum));
+   Set(Str);
+}
+
+                                                                       /*}}}*/
+// SHA256SumValue::SHA256SumValue - Default constructor                /*{{{*/
+// ---------------------------------------------------------------------
+/* Sets the value to 0 */
+SHA256SumValue::SHA256SumValue()
+{
+   memset(Sum,0,sizeof(Sum));
+}
+
+                                                                       /*}}}*/
+// SHA256SumValue::Set - Set the sum from a string                     /*{{{*/
+// ---------------------------------------------------------------------
+/* Converts the hex string into a set of chars */
+bool SHA256SumValue::Set(string Str)
+{
+   return Hex2Num(Str,Sum,sizeof(Sum));
+}
+                                                                       /*}}}*/
+// SHA256SumValue::Value - Convert the number into a string            /*{{{*/
+// ---------------------------------------------------------------------
+/* Converts the set of chars into a hex string in lower case */
+string SHA256SumValue::Value() const
+{
+   char Conv[16] =
+      { '0','1','2','3','4','5','6','7','8','9','a','b',
+      'c','d','e','f'
+   };
+   char Result[65];
+   Result[64] = 0;
+
+   // Convert each char into two letters
+   int J = 0;
+   int I = 0;
+   for (; I != 64; J++,I += 2)
+   {
+      Result[I] = Conv[Sum[J] >> 4];
+      Result[I + 1] = Conv[Sum[J] & 0xF];
+   }
+
+   return string(Result);
+}
+
+
+
+// SHA256SumValue::operator == - Comparator                            /*{{{*/
+// ---------------------------------------------------------------------
+/* Call memcmp on the buffer */
+bool SHA256SumValue::operator == (const SHA256SumValue & rhs) const
+{
+   return memcmp(Sum,rhs.Sum,sizeof(Sum)) == 0;
+}
+                                                                       /*}}}*/
+
+
+// SHA256Summation::AddFD - Add content of file into the checksum      /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool SHA256Summation::AddFD(int Fd,unsigned long Size)
+{
+   unsigned char Buf[64 * 64];
+   int Res = 0;
+   int ToEOF = (Size == 0);
+   while (Size != 0 || ToEOF)
+   {
+      unsigned n = sizeof(Buf);
+      if (!ToEOF) n = min(Size,(unsigned long)n);
+      Res = read(Fd,Buf,n);
+      if (Res < 0 || (!ToEOF && (unsigned) Res != n)) // error, or short read
+         return false;
+      if (ToEOF && Res == 0) // EOF
+         break;
+      Size -= Res;
+      Add(Buf,Res);
+   }
+   return true;
+}
+                                                                       /*}}}*/
+

+ 75 - 0
apt-pkg/contrib/sha256.h

@@ -0,0 +1,75 @@
+// -*- mode: cpp; mode: fold -*-
+// Description                                                          /*{{{*/
+// $Id: sha1.h,v 1.3 2001/05/07 05:05:47 jgg Exp $
+/* ######################################################################
+
+   SHA256SumValue - Storage for a SHA-256 hash.
+   SHA256Summation - SHA-256 Secure Hash Algorithm.
+   
+   This is a C++ interface to a set of SHA256Sum functions, that mirrors
+   the equivalent MD5 & SHA1 classes. 
+
+   ##################################################################### */
+                                                                        /*}}}*/
+#ifndef APTPKG_SHA256_H
+#define APTPKG_SHA256_H
+
+#ifdef __GNUG__
+#pragma interface "apt-pkg/sha256.h"
+#endif 
+
+#include <string>
+#include <algorithm>
+#include <stdint.h>
+
+using std::string;
+using std::min;
+
+class SHA256Summation;
+
+class SHA256SumValue
+{
+   friend class SHA256Summation;
+   unsigned char Sum[32];
+   
+   public:
+
+   // Accessors
+   bool operator ==(const SHA256SumValue &rhs) const; 
+   string Value() const;
+   inline void Value(unsigned char S[32])
+         {for (int I = 0; I != sizeof(Sum); I++) S[I] = Sum[I];};
+   inline operator string() const {return Value();};
+   bool Set(string Str);
+   inline void Set(unsigned char S[32]) 
+         {for (int I = 0; I != sizeof(Sum); I++) Sum[I] = S[I];};
+
+   SHA256SumValue(string Str);
+   SHA256SumValue();
+};
+
+struct sha256_ctx {
+    uint32_t count[2];
+    uint32_t state[8];
+    uint8_t buf[128];
+};
+
+class SHA256Summation
+{
+   struct sha256_ctx Sum;
+
+   bool Done;
+
+   public:
+
+   bool Add(const unsigned char *inbuf,unsigned long inlen);
+   inline bool Add(const char *Data) {return Add((unsigned char *)Data,strlen(Data));};
+   bool AddFD(int Fd,unsigned long Size);
+   inline bool Add(const unsigned char *Beg,const unsigned char *End) 
+                  {return Add(Beg,End-Beg);};
+   SHA256SumValue Result();
+   
+   SHA256Summation();
+};
+
+#endif

+ 22 - 1
apt-pkg/deb/debversion.cc

@@ -59,7 +59,7 @@ int debVersioningSystem::CmpFragment(const char *A,const char *AEnd,
    }
 
    /* Iterate over the whole string
-      What this does is to spilt the whole string into groups of
+      What this does is to split the whole string into groups of
       numeric and non numeric portions. For instance:
          a67bhgs89
       Has 4 portions 'a', '67', 'bhgs', '89'. A more normal:
@@ -140,6 +140,27 @@ int debVersioningSystem::DoCmpVersion(const char *A,const char *AEnd,
    if (rhs == BEnd)
       rhs = B;
    
+   // Special case: a zero epoch is the same as no epoch,
+   // so remove it.
+   if (lhs != A)
+   {
+      for (; *A == '0'; ++A);
+      if (A == lhs)
+      {
+	 ++A;
+	 ++lhs;
+      }
+   }
+   if (rhs != B)
+   {
+      for (; *B == '0'; ++B);
+      if (B == rhs)
+      {
+	 ++B;
+	 ++rhs;
+      }
+   }
+
    // Compare the epoch
    int Res = CmpFragment(A,lhs,B,rhs);
    if (Res != 0)

+ 4 - 4
apt-pkg/deb/dpkgpm.cc

@@ -375,8 +375,8 @@ bool pkgDPkgPM::Go(int OutStatusFd)
       },
       // Purge operation
       { 
-	 {"config-files", _("Preparing for remove with config %s")},
-	 {"not-installed", _("Removed with config %s")},
+	 {"config-files", _("Preparing to completely remove %s")},
+	 {"not-installed", _("Completely removed %s")},
 	 {NULL, NULL}
       },
    };
@@ -623,8 +623,8 @@ bool pkgDPkgPM::Go(int OutStatusFd)
 	    'status: conffile-prompt: conffile : 'current-conffile' 'new-conffile' useredited distedited
 	    
 	 */
-	 char* list[4];
-	 TokSplitString(':', line, list, 5);
+	 char* list[5];
+	 TokSplitString(':', line, list, sizeof(list)/sizeof(list[0]));
 	 char *pkg = list[1];
 	 char *action = _strstrip(list[2]);
 

+ 2 - 2
apt-pkg/makefile

@@ -21,11 +21,11 @@ APT_DOMAIN:=libapt-pkg$(MAJOR)
 # Source code for the contributed non-core things
 SOURCE = contrib/mmap.cc contrib/error.cc contrib/strutl.cc \
          contrib/configuration.cc contrib/progress.cc contrib/cmndline.cc \
-	 contrib/md5.cc contrib/sha1.cc contrib/hashes.cc \
+	 contrib/md5.cc contrib/sha1.cc contrib/sha256.cc contrib/hashes.cc \
 	 contrib/cdromutl.cc contrib/crc-16.cc \
 	 contrib/fileutl.cc 
 HEADERS = mmap.h error.h configuration.h fileutl.h  cmndline.h \
-	  md5.h crc-16.h cdromutl.h strutl.h sptr.h sha1.h hashes.h
+	  md5.h crc-16.h cdromutl.h strutl.h sptr.h sha1.h sha256.h hashes.h
 
 # Source code for the core main library
 SOURCE+= pkgcache.cc version.cc depcache.cc \

+ 22 - 73
apt-pkg/tagfile.cc

@@ -35,20 +35,20 @@ pkgTagFile::pkgTagFile(FileFd *pFd,unsigned long Size) :
      Fd(*pFd),
      Size(Size)
 {
-   if (Fd.IsOpen() == false)
+   if (Fd.IsOpen() == false || Fd.Size())
    {
       Buffer = 0;
       Start = End = Buffer = 0;
-      Done = true;
       iOffset = 0;
+      Map = NULL;
       return;
    }
    
-   Buffer = new char[Size];
-   Start = End = Buffer;
-   Done = false;
+   Map = new MMap (Fd, MMap::Public | MMap::ReadOnly);
+   Buffer = (char *) Map->Data ();
+   Start = Buffer;
+   End = Buffer + Map->Size ();
    iOffset = 0;
-   Fill();
 }
 									/*}}}*/
 // TagFile::~pkgTagFile - Destructor					/*{{{*/
@@ -56,7 +56,7 @@ pkgTagFile::pkgTagFile(FileFd *pFd,unsigned long Size) :
 /* */
 pkgTagFile::~pkgTagFile()
 {
-   delete [] Buffer;
+   delete Map;
 }
 									/*}}}*/
 // TagFile::Step - Advance to the next section				/*{{{*/
@@ -64,63 +64,18 @@ pkgTagFile::~pkgTagFile()
 /* If the Section Scanner fails we refill the buffer and try again. */
 bool pkgTagFile::Step(pkgTagSection &Tag)
 {
+   if (Start == End)
+      return false;
+
    if (Tag.Scan(Start,End - Start) == false)
    {
-      if (Fill() == false)
-	 return false;
-      
-      if (Tag.Scan(Start,End - Start) == false)
-	 return _error->Error(_("Unable to parse package file %s (1)"),
-			      Fd.Name().c_str());
+      return _error->Error(_("Unable to parse package file %s (1)"),
+	      Fd.Name().c_str());
    }
    Start += Tag.size();
    iOffset += Tag.size();
 
    Tag.Trim();
-   return true;
-}
-									/*}}}*/
-// TagFile::Fill - Top up the buffer					/*{{{*/
-// ---------------------------------------------------------------------
-/* This takes the bit at the end of the buffer and puts it at the start
-   then fills the rest from the file */
-bool pkgTagFile::Fill()
-{
-   unsigned long EndSize = End - Start;
-   unsigned long Actual = 0;
-   
-   memmove(Buffer,Start,EndSize);
-   Start = Buffer;
-   End = Buffer + EndSize;
-   
-   if (Done == false)
-   {
-      // See if only a bit of the file is left
-      if (Fd.Read(End,Size - (End - Buffer),&Actual) == false)
-	 return false;
-      if (Actual != Size - (End - Buffer))
-	 Done = true;
-      End += Actual;
-   }
-   
-   if (Done == true)
-   {
-      if (EndSize <= 3 && Actual == 0)
-	 return false;
-      if (Size - (End - Buffer) < 4)
-	 return true;
-      
-      // Append a double new line if one does not exist
-      unsigned int LineCount = 0;
-      for (const char *E = End - 1; E - End < 6 && (*E == '\n' || *E == '\r'); E--)
-	 if (*E == '\n')
-	    LineCount++;
-      for (; LineCount < 2; LineCount++)
-	 *End++ = '\n';
-      
-      return true;
-   }
-   
    return true;
 }
 									/*}}}*/
@@ -141,20 +96,7 @@ bool pkgTagFile::Jump(pkgTagSection &Tag,unsigned long Offset)
 
    // Reposition and reload..
    iOffset = Offset;
-   Done = false;
-   if (Fd.Seek(Offset) == false)
-      return false;
-   End = Start = Buffer;
-   
-   if (Fill() == false)
-      return false;
-
-   if (Tag.Scan(Start,End - Start) == true)
-      return true;
-   
-   // This appends a double new line (for the real eof handling)
-   if (Fill() == false)
-      return false;
+   Start = Buffer + iOffset;
    
    if (Tag.Scan(Start,End - Start) == false)
       return _error->Error(_("Unable to parse package file %s (2)"),Fd.Name().c_str());
@@ -181,7 +123,7 @@ bool pkgTagSection::Scan(const char *Start,unsigned long MaxLength)
    Stop = Section = Start;
    memset(AlphaIndexes,0,sizeof(AlphaIndexes));
 
-   if (Stop == 0)
+   if (Stop == 0 || MaxLength == 0)
       return false;
    
    TagCount = 0;
@@ -212,6 +154,12 @@ bool pkgTagSection::Scan(const char *Start,unsigned long MaxLength)
       Stop++;
    }
 
+   if ((Stop+1 >= End) && (End[-1] == '\n' || End[-1] == '\r'))
+   {
+       Indexes[TagCount] = (End - 1) - Section;
+       return true;
+   }
+
    return false;
 }
 									/*}}}*/
@@ -394,7 +342,8 @@ static const char *iTFRewritePackageOrder[] = {
                           "Filename",
                           "Size",
                           "MD5Sum",
-                          "SHA1Sum",
+                          "SHA1",
+                          "SHA256",
                            "MSDOS-Filename",   // Obsolete
                           "Description",
                           0};

+ 2 - 3
apt-pkg/tagfile.h

@@ -25,6 +25,7 @@
 #endif 
 
 #include <apt-pkg/fileutl.h>
+#include <apt-pkg/mmap.h>
 #include <stdio.h>
     
 class pkgTagSection
@@ -69,15 +70,13 @@ class pkgTagSection
 class pkgTagFile
 {
    FileFd &Fd;
+   MMap *Map;
    char *Buffer;
    char *Start;
    char *End;
-   bool Done;
    unsigned long iOffset;
    unsigned long Size;
    
-   bool Fill();
-   
    public:
 
    bool Step(pkgTagSection &Section);

+ 9 - 8
buildlib/defaults.mak

@@ -174,11 +174,12 @@ ifeq ($(NUM_PROCS),1)
   PARALLEL_RUN=no
 endif
 
-ifndef PARALLEL_RUN
- PARALLEL_RUN=yes
- .EXPORT: PARALLEL_RUN
- # handle recursion
- ifneq ($(NUM_PROCS),)
-  MAKEFLAGS += -j $(NUM_PROCS)
- endif
-endif
+# mvo: commented out, lead to build failures in the arch-build target
+#ifndef PARALLEL_RUN
+# PARALLEL_RUN=yes
+# .EXPORT: PARALLEL_RUN
+# # handle recursion
+# ifneq ($(NUM_PROCS),)
+#  MAKEFLAGS += -j $(NUM_PROCS)
+# endif
+#endif

+ 2 - 2
configure.in

@@ -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.43.3")
+AC_DEFINE_UNQUOTED(VERSION,"0.6.44.1exp1")
 PACKAGE="apt"
 AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
 AC_SUBST(PACKAGE)
@@ -201,7 +201,7 @@ ah_GCC3DEP
 dnl It used to be that the user could select translations and that could get
 dnl passed to the makefiles, but now that can only work if you use special
 dnl gettext approved makefiles, so this feature is unsupported by this.
-ALL_LINGUAS="da de en_GB es fr hu it nl no_NO pl pt_BR ru sv zh_TW"
+ALL_LINGUAS="bg bs ca cs cy da de el en_GB es eu fi fr gl hu it ja ko nb nl nn pl pt_BR pt ro ru sk sl sv tl vi zn_CN zh_TW"
 AM_GNU_GETTEXT(external)
 if test x"$USE_NLS" = "xyes"; then
    AC_DEFINE(USE_NLS)

+ 8 - 0
debian/NEWS.Debian

@@ -1,3 +1,11 @@
+apt (0.6.44) unstable; urgency=low
+
+  * apt-ftparchive --db now uses Berkeley DB_BTREE instead of DB_HASH. 
+    If you use a database created by an older version of apt, delete 
+    it and allow it to be recreated the next time.
+
+ -- Michael Vogt <mvo@debian.org>  Wed, 26 Apr 2006 12:57:53 +0200
+
 apt (0.5.25) unstable; urgency=low
 
   * apt-ftparchive --db now uses Berkeley DB version 4.2.  If used with a

+ 56 - 6
debian/changelog

@@ -1,13 +1,63 @@
-apt (0.6.43.3exp1) experimental; urgency=low
+apt (0.6.44.1exp1) experimental; urgency=low
 
-  * added support for package index diffs
   * added support for i18n of the package descriptions
-  * synced with the apt--debian-sid--0 branch
-  * build from mvo@debian.org--2005/apt--debian-experimental--0
-    (from http://people.debian.org/~mvo/arch)
-
+  * synced with the http://people.debian.org/~mvo/bzr/apt/debian-sid branch
+  * build from http://people.debian.org/~mvo/bzr/apt/debian-experimental
+  
  -- Michael Vogt <mvo@debian.org>  Wed,  1 Mar 2006 13:34:15 +0100
 
+apt (0.6.44.1) unstable; urgency=low
+
+  * apt-pkg/acquire-item.cc:
+    - fix reversed logic of the "Acquire::PDiffs" option
+  * merged from 
+    http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main:
+    - po/LINGUAS: added "bg" Closes: #360262
+    - po/gl.po: Galician translation update. Closes: #366849
+    - po/hu.po: Hungarian translation update. Closes: #365448
+    - po/cs.po: Czech translation updated. Closes: #367244
+  * apt-pkg/contrib/sha256.cc:
+    - applied patch to fix unaligned access problem. Closes: #367417
+      (thanks to David Mosberger)
+
+ -- Michael Vogt <mvo@debian.org>  Tue, 16 May 2006 21:51:16 +0200
+
+apt (0.6.44) unstable; urgency=low
+
+  * apt-pkg/acquire.cc: don't show ETA if it is 0 or absurdely large
+  * 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)
+  * apt-pkg/deb/dpkgpm.cc: 
+    - wording fixes (thanks to Matt Zimmerman)
+    - fix error in dpkg interaction (closes: #364513, thanks to Martin Dickopp)
+  * apt-pkg/tagfile.{cc,h}:
+    - use MMap to read the entries (thanks to Zephaniah E. Hull for the
+      patch) Closes: #350025
+  * Merge from http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main:
+  	* bg.po: Added, complete to 512t. Closes: #360262
+  * doc/apt-ftparchive.1.xml:
+    - fix documentation for "SrcPackages" -> "Sources" 
+      (thanks to Bart Martens for the patch, closes: #307756)
+  * debian/libapt-pkg-doc.doc-base.cache:
+    - remove broken charackter from description (closes: #361129)
+  * apt-inst/deb/dpkgdb.cc, methods/gpgv.cc: 
+    - i18n fixes (closes: #349298)
+  * debian/postinst: dont fail on not available
+    /usr/share/doc/apt/examples/sources.list (closes: #361130)
+  * methods/ftp.cc:
+    - unlink empty file in partial if the download failed because
+      the file is missing on the server (closes: #316337)
+  * apt-pkg/deb/debversion.cc:
+    - treats a version string with explicit zero epoch equal
+      than the same without epoch (Policy 5.6.12, closes: #363358)
+      Thanks to Lionel Elie Mamane for the patch
+  
+ -- Michael Vogt <mvo@debian.org>  Mon,  8 May 2006 22:28:53 +0200
+
 apt (0.6.43.3) unstable; urgency=low
 
   * Merge bubulle@debian.org--2005/apt--main--0 up to patch-186:

+ 1 - 1
debian/compat

@@ -1 +1 @@
-3
+5

+ 2 - 2
debian/control

@@ -3,8 +3,8 @@ Section: admin
 Priority: important
 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.1
-Build-Depends: debhelper (>= 4.1.62), libdb4.3-dev, gettext (>= 0.12)
+Standards-Version: 3.6.2.2
+Build-Depends: debhelper (>= 5.0), libdb4.3-dev, gettext (>= 0.12)
 Build-Depends-Indep: debiandoc-sgml, docbook-utils (>= 0.6.12-1)
 
 Package: apt

+ 1 - 1
debian/libapt-pkg-doc.doc-base.cache

@@ -4,7 +4,7 @@ Author: Jason Gunthorpe
 Abstract: The APT Cache Specification describes the complete implementation
  and format of the APT Cache file. The APT Cache file is a way for APT to
  parse and store a large number of package files for display in the UI.
- It's primaryã design goal is to make display of a single package in the
+ It's primary design goal is to make display of a single package in the
  tree very fast by pre-linking important things like dependencies and
  provides. The specification doubles as documentation for one of the
  in-memory structures used by the package library and the APT GUI.

+ 4 - 1
debian/postinst

@@ -12,7 +12,10 @@ set -e
 
 create_apt_conf ()
 {
- cp /usr/share/doc/apt/examples/sources.list /etc/apt/sources.list
+ EXAMPLE_SOURCE=/usr/share/doc/apt/examples/sources.list
+ if [ -f $EXAMPLE_SOURCE ]; then
+     cp $EXAMPLE_SOURCE /etc/apt/sources.list
+ fi
 }
  
 check_apt_conf ()

+ 2 - 1
debian/rules

@@ -36,6 +36,7 @@ endif
 # Default rule
 build:
 
+PKG=apt
 DEB_BUILD_PROG:=debuild --preserve-envvar PATH --preserve-envvar CCACHE_DIR -us -uc $(DEB_BUILD_PROG_OPTS)
 APT_DEBVER=$(shell dpkg-parsechangelog |sed -n -e '/^Version:/s/^Version: //p')
 APT_CONFVER=$(shell sed -n -e 's/^AC_DEFINE_UNQUOTED(VERSION,"\(.*\)")/\1/p' configure.in)
@@ -335,6 +336,6 @@ cvs-mkul:
 arch-build:
 	rm -rf debian/arch-build
 	mkdir -p debian/arch-build/apt-$(APT_DEBVER)
-	baz inventory -s | xargs cp -a --parents --target=debian/arch-build/apt-$(APT_DEBVER)
+	tar -c --exclude=arch-build --no-recursion -f - `bzr inventory` | (cd debian/arch-build/$(PKG)-$(APT_DEBVER);tar xf -)
 	$(MAKE) -C debian/arch-build/apt-$(APT_DEBVER) startup doc
 	(cd debian/arch-build/apt-$(APT_DEBVER); $(DEB_BUILD_PROG))

+ 2 - 2
doc/apt-ftparchive.1.xml

@@ -407,10 +407,10 @@ for i in Sections do
       Sets the Packages file output.</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>SrcPackages</term>
+      <varlistentry><term>Sources</term>
       <listitem><para>
       Sets the Sources file output. At least one of
-      <literal>Packages</literal> or <literal>SrcPackages</literal> is required.</para></listitem>
+      <literal>Packages</literal> or <literal>Sources</literal> is required.</para></listitem>
       </varlistentry>
       
       <varlistentry><term>Contents</term>

+ 3 - 3
doc/examples/apt-ftparchive.conf

@@ -20,21 +20,21 @@ Default {
 // Contents file for these in the main section of the sid release
 BinDirectory "pool/main" {
 	Packages "dists/sid/main/binary-i386/Packages";
-	SrcPackages "dists/sid/main/source/Sources";
+	Sources "dists/sid/main/source/Sources";
 	Contents "dists/sid/Contents-i386";
 }
 
 // This is the same for the contrib section
 BinDirectory "pool/contrib" {
 	Packages "dists/sid/contrib/binary-i386/Packages";
-	SrcPackages "dists/sid/contrib/source/Sources";
+	Sources "dists/sid/contrib/source/Sources";
 	Contents "dists/sid/Contents-i386";
 }
 
 // This is the same for the non-free section
 BinDirectory "pool/non-free" {
 	Packages "dists/sid/non-free/binary-i386/Packages";
-	SrcPackages "dists/sid/non-free/source/Sources";
+	Sources "dists/sid/non-free/source/Sources";
 	Contents "dists/sid/Contents-i386";
 };
 

+ 2 - 0
doc/examples/configure-index

@@ -104,6 +104,8 @@ Acquire
   Queue-Mode "host";       // host|access
   Retries "0";
   Source-Symlinks "true";
+
+  PDiffs "true";     // try to get the IndexFile diffs
   
   // HTTP method configuration
   http 

+ 3 - 3
doc/fr/apt-ftparchive.fr.1.xml

@@ -451,10 +451,10 @@ Indique le fichier 
       </para></listitem>
 </varlistentry>
 
-<varlistentry><term>SrcPackages</term>
+<varlistentry><term>Sources</term>
 <listitem><para>
 Indique le fichier «&nbsp;Sources&nbsp;» créé. L'un des deux fichiers, 
-<literal>Packages</literal> ou <literal>SrcPackages</literal> est nécessaire.
+<literal>Packages</literal> ou <literal>Sources</literal> est nécessaire.
       </para></listitem>
 </varlistentry>
 
@@ -628,4 +628,4 @@ d
 &manbugs;
 &traducteur;
 
-</refentry>
+</refentry>

+ 4 - 3
doc/ja/apt-ftparchive.ja.1.xml

@@ -90,7 +90,8 @@
    <para>本質的に <command>apt-ftparchive</command> は、
    .deb ファイルの内容をキャッシュするのにバイナリデータベースを使用できます。
    また、&gzip; 以外のいかなる外部プログラムにも依存しません。
-   すべて生成する際、</para>
+   すべて生成する際には、
+   ファイル変更点の検出と希望した圧縮出力ファイルの作成を自動的に実行します。</para>
    
 <!--
    <para>Unless the <option>-h</option>, or <option>-\-help</option> option is given one of the
@@ -140,7 +141,7 @@
      looked for with an extension of .src. The -\-source-override option can be 
      used to change the source override file that will be used.</para></listitem>
 -->
-     override ファイルを指定した場合、.
+     override ファイルを指定した場合、
      src 拡張子がついたソースオーバーライドファイルを探します。
      使用するソースオーバーライドファイルを変更するのには、
      --source-override オプションを使用します。</para></listitem>
@@ -833,7 +834,7 @@ for i in Sections do
    という形式か、単純に
    <literallayout>new</literallayout>
    となります。
-   最初の形式は、// で区切られた古いemail アドレスのリストを許可します。
+   最初の形式は、// で区切られた古い email アドレスのリストを許可します。
    この形式がある場合は、メンテナフィールドになるよう new に置換してください。
    2 番目の形式は無条件にメンテナフィールドに置換します。</para>
  </refsect1>

+ 3 - 3
doc/ja/apt-secure.ja.8.xml

@@ -100,7 +100,7 @@
    responsibility to ensure that the archive integrity is correct.
 -->
    apt アーカイブからエンドユーザまでの信頼の輪は、
-   いくつかのステップでo区政されています。
+   いくつかのステップで構成されています。
    <command>apt-secure</command> は、この輪の最後のステップで、
    アーカイブを信頼することは、
    パッケージに悪意のあるコードが含まれていないと信頼するわけではありませんが、
@@ -182,7 +182,7 @@
    per package basis. It is designed to prevent two possible attacks:
 -->
    <para>以上は、パッケージごとの署名チェックとは違うことに注意してください。
-   以下のに考えられる 2 種類の攻撃を防ぐよう設計されています。
+   以下のように考えられる 2 種類の攻撃を防ぐよう設計されています。
    </para>
 
     <itemizedlist>
@@ -243,7 +243,7 @@
    <command>apt-key</command> は、
    apt が使用するキーリストを管理するプログラムです。
    このリリースのインストールでは、Debian パッケージリポジトリで使用する、
-   キーで署名する デフォルトの Debian アーカイブを提供しますが、
+   キーで署名するデフォルトの Debian アーカイブを提供しますが、
    <command>apt-key</command> でキーの追加・削除が行えます。
    </para>
    <para>

+ 218 - 38
ftparchive/cachedb.cc

@@ -19,6 +19,8 @@
 #include <apti18n.h>
 #include <apt-pkg/error.h>
 #include <apt-pkg/md5.h>
+#include <apt-pkg/sha1.h>
+#include <apt-pkg/sha256.h>
 #include <apt-pkg/strutl.h>
 #include <apt-pkg/configuration.h>
     
@@ -54,7 +56,7 @@ bool CacheDB::ReadyDB(string DB)
       return true;
 
    db_create(&Dbp, NULL, 0);
-   if ((err = Dbp->open(Dbp, NULL, DB.c_str(), NULL, DB_HASH,
+   if ((err = Dbp->open(Dbp, NULL, DB.c_str(), NULL, DB_BTREE,
                         (ReadOnly?DB_RDONLY:DB_CREATE),
                         0644)) != 0)
    {
@@ -67,6 +69,12 @@ bool CacheDB::ReadyDB(string DB)
                             (ReadOnly?DB_RDONLY:DB_CREATE), 0644);
 
       }
+      // the database format has changed from DB_HASH to DB_BTREE in 
+      // apt 0.6.44
+      if (err == EINVAL)
+      {
+	 _error->Error(_("DB format is invalid. If you upgraded from a older version of apt, please remove and re-create the database."));
+      }
       if (err)
       {
           Dbp = 0;
@@ -79,48 +87,123 @@ bool CacheDB::ReadyDB(string DB)
    return true;
 }
 									/*}}}*/
-// CacheDB::SetFile - Select a file to be working with			/*{{{*/
+// CacheDB::OpenFile - Open the filei					/*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool CacheDB::OpenFile()
+{
+	Fd = new FileFd(FileName,FileFd::ReadOnly);
+	if (_error->PendingError() == true)
+	{
+		delete Fd;
+		Fd = NULL;
+		return false;
+	}
+	return true;
+}
+									/*}}}*/
+// CacheDB::GetFileStat - Get stats from the file 			/*{{{*/
+// ---------------------------------------------------------------------
+/* This gets the size from the database if it's there.  If we need
+ * to look at the file, also get the mtime from the file. */
+bool CacheDB::GetFileStat()
+{
+	if ((CurStat.Flags & FlSize) == FlSize)
+	{
+		/* Already worked out the file size */
+	}
+	else
+	{
+		/* Get it from the file. */
+		if (Fd == NULL && OpenFile() == false)
+		{
+			return false;
+		}
+		// Stat the file
+		struct stat St;
+		if (fstat(Fd->Fd(),&St) != 0)
+		{
+			return _error->Errno("fstat",
+				_("Failed to stat %s"),FileName.c_str());
+		}
+		CurStat.FileSize = St.st_size;
+		CurStat.mtime = htonl(St.st_mtime);
+		CurStat.Flags |= FlSize;
+	}
+	return true;
+}
+									/*}}}*/
+// CacheDB::GetCurStat - Set the CurStat variable.			/*{{{*/
 // ---------------------------------------------------------------------
-/* All future actions will be performed against this file */
-bool CacheDB::SetFile(string FileName,struct stat St,FileFd *Fd)
+/* Sets the CurStat variable.  Either to 0 if no database is used
+ * or to the value in the database if one is used */
+bool CacheDB::GetCurStat()
 {
-   delete DebFile;
-   DebFile = 0;
-   this->FileName = FileName;
-   this->Fd = Fd;
-   this->FileStat = St;
-   FileStat = St;   
    memset(&CurStat,0,sizeof(CurStat));
    
-   Stats.Bytes += St.st_size;
-   Stats.Packages++;
-   
-   if (DBLoaded == false)
-      return true;
+	if (DBLoaded)
+	{
+		/* First see if thre is anything about it
+		   in the database */
 
+		/* Get the flags (and mtime) */
    InitQuery("st");
-   
    // Ensure alignment of the returned structure
    Data.data = &CurStat;
    Data.ulen = sizeof(CurStat);
    Data.flags = DB_DBT_USERMEM;
-   // Lookup the stat info and confirm the file is unchanged
-   if (Get() == true)
-   {
-      if (CurStat.mtime != htonl(St.st_mtime))
+		if (Get() == false)
       {
-	 CurStat.mtime = htonl(St.st_mtime);
 	 CurStat.Flags = 0;
-	 _error->Warning(_("File date has changed %s"),FileName.c_str());
       }      
+		CurStat.Flags = ntohl(CurStat.Flags);
+		CurStat.FileSize = ntohl(CurStat.FileSize);
    }      
-   else
+	return true;
+}
+									/*}}}*/
+// CacheDB::GetFileInfo - Get all the info about the file		/*{{{*/
+// ---------------------------------------------------------------------
+bool CacheDB::GetFileInfo(string FileName, bool DoControl, bool DoContents,
+				bool GenContentsOnly, 
+				bool DoMD5, bool DoSHA1, bool DoSHA256)
+{
+	this->FileName = FileName;
+
+	if (GetCurStat() == false)
    {
-      CurStat.mtime = htonl(St.st_mtime);
-      CurStat.Flags = 0;
+		return false;
    }   
-   CurStat.Flags = ntohl(CurStat.Flags);
    OldStat = CurStat;
+	
+	if (GetFileStat() == false)
+	{
+		delete Fd;
+		Fd = NULL;
+		return false;	
+	}
+
+	Stats.Bytes += CurStat.FileSize;
+	Stats.Packages++;
+
+	if (DoControl && LoadControl() == false
+		|| DoContents && LoadContents(GenContentsOnly) == false
+		|| DoMD5 && GetMD5(false) == false
+		|| DoSHA1 && GetSHA1(false) == false
+		|| DoSHA256 && GetSHA256(false) == false)
+	{
+		delete Fd;
+		Fd = NULL;
+		delete DebFile;
+		DebFile = NULL;
+		return false;	
+	}
+
+	delete Fd;
+	Fd = NULL;
+	delete DebFile;
+	DebFile = NULL;
+
    return true;
 }
 									/*}}}*/
@@ -139,6 +222,10 @@ bool CacheDB::LoadControl()
       CurStat.Flags &= ~FlControl;
    }
    
+   if (Fd == NULL && OpenFile() == false)
+   {
+      return false;
+   }
    // Create a deb instance to read the archive
    if (DebFile == 0)
    {
@@ -183,6 +270,10 @@ bool CacheDB::LoadContents(bool GenOnly)
       CurStat.Flags &= ~FlContents;
    }
    
+   if (Fd == NULL && OpenFile() == false)
+   {
+      return false;
+   }
    // Create a deb instance to read the archive
    if (DebFile == 0)
    {
@@ -201,10 +292,37 @@ bool CacheDB::LoadContents(bool GenOnly)
    return true;
 }
 									/*}}}*/
+
+static string bytes2hex(uint8_t *bytes, size_t length) {
+   char space[65];
+   if (length * 2 > sizeof(space) - 1) length = (sizeof(space) - 1) / 2;
+   for (size_t i = 0; i < length; i++)
+      snprintf(&space[i*2], 3, "%02x", bytes[i]);
+   return string(space);
+}
+
+static inline unsigned char xdig2num(char dig) {
+   if (isdigit(dig)) return dig - '0';
+   if ('a' <= dig && dig <= 'f') return dig - 'a' + 10;
+   if ('A' <= dig && dig <= 'F') return dig - 'A' + 10;
+   return 0;
+}
+
+static void hex2bytes(uint8_t *bytes, const char *hex, int length) {
+   while (length-- > 0) {
+      *bytes = 0;
+      if (isxdigit(hex[0]) && isxdigit(hex[1])) {
+	  *bytes = xdig2num(hex[0]) * 16 + xdig2num(hex[1]);
+	  hex += 2;
+      }
+      bytes++;
+   } 
+}
+
 // CacheDB::GetMD5 - Get the MD5 hash					/*{{{*/
 // ---------------------------------------------------------------------
 /* */
-bool CacheDB::GetMD5(string &MD5Res,bool GenOnly)
+bool CacheDB::GetMD5(bool GenOnly)
 {
    // Try to read the control information out of the DB.
    if ((CurStat.Flags & FlMD5) == FlMD5)
@@ -212,28 +330,88 @@ bool CacheDB::GetMD5(string &MD5Res,bool GenOnly)
       if (GenOnly == true)
 	 return true;
       
-      InitQuery("m5");
-      if (Get() == true)
-      {
-	 MD5Res = string((char *)Data.data,Data.size);
+      MD5Res = bytes2hex(CurStat.MD5, sizeof(CurStat.MD5));
 	 return true;
       }
-      CurStat.Flags &= ~FlMD5;
-   }
    
-   Stats.MD5Bytes += FileStat.st_size;
+   Stats.MD5Bytes += CurStat.FileSize;
 	 
+   if (Fd == NULL && OpenFile() == false)
+   {
+      return false;
+   }
    MD5Summation MD5;
-   if (Fd->Seek(0) == false || MD5.AddFD(Fd->Fd(),FileStat.st_size) == false)
+   if (Fd->Seek(0) == false || MD5.AddFD(Fd->Fd(),CurStat.FileSize) == false)
       return false;
    
    MD5Res = MD5.Result();
-   InitQuery("m5");
-   if (Put(MD5Res.c_str(),MD5Res.length()) == true)
+   hex2bytes(CurStat.MD5, MD5Res.data(), sizeof(CurStat.MD5));
       CurStat.Flags |= FlMD5;
    return true;
 }
 									/*}}}*/
+// CacheDB::GetSHA1 - Get the SHA1 hash					/*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool CacheDB::GetSHA1(bool GenOnly)
+{
+   // Try to read the control information out of the DB.
+   if ((CurStat.Flags & FlSHA1) == FlSHA1)
+   {
+      if (GenOnly == true)
+	 return true;
+
+      SHA1Res = bytes2hex(CurStat.SHA1, sizeof(CurStat.SHA1));
+      return true;
+   }
+   
+   Stats.SHA1Bytes += CurStat.FileSize;
+	 
+   if (Fd == NULL && OpenFile() == false)
+   {
+      return false;
+   }
+   SHA1Summation SHA1;
+   if (Fd->Seek(0) == false || SHA1.AddFD(Fd->Fd(),CurStat.FileSize) == false)
+      return false;
+   
+   SHA1Res = SHA1.Result();
+   hex2bytes(CurStat.SHA1, SHA1Res.data(), sizeof(CurStat.SHA1));
+   CurStat.Flags |= FlSHA1;
+   return true;
+}
+									/*}}}*/
+// CacheDB::GetSHA256 - Get the SHA256 hash				/*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool CacheDB::GetSHA256(bool GenOnly)
+{
+   // Try to read the control information out of the DB.
+   if ((CurStat.Flags & FlSHA256) == FlSHA256)
+   {
+      if (GenOnly == true)
+	 return true;
+
+      SHA256Res = bytes2hex(CurStat.SHA256, sizeof(CurStat.SHA256));
+      return true;
+   }
+   
+   Stats.SHA256Bytes += CurStat.FileSize;
+	 
+   if (Fd == NULL && OpenFile() == false)
+   {
+      return false;
+   }
+   SHA256Summation SHA256;
+   if (Fd->Seek(0) == false || SHA256.AddFD(Fd->Fd(),CurStat.FileSize) == false)
+      return false;
+   
+   SHA256Res = SHA256.Result();
+   hex2bytes(CurStat.SHA256, SHA256Res.data(), sizeof(CurStat.SHA256));
+   CurStat.Flags |= FlSHA256;
+   return true;
+}
+									/*}}}*/
 // CacheDB::Finish - Write back the cache structure			/*{{{*/
 // ---------------------------------------------------------------------
 /* */
@@ -246,9 +424,12 @@ bool CacheDB::Finish()
    
    // Write the stat information
    CurStat.Flags = htonl(CurStat.Flags);
+   CurStat.FileSize = htonl(CurStat.FileSize);
    InitQuery("st");
    Put(&CurStat,sizeof(CurStat));
    CurStat.Flags = ntohl(CurStat.Flags);
+   CurStat.FileSize = ntohl(CurStat.FileSize);
+
    return true;
 }
 									/*}}}*/
@@ -278,7 +459,6 @@ bool CacheDB::Clean()
       {
 	 if (stringcmp((char *)Key.data,Colon,"st") == 0 ||
 	     stringcmp((char *)Key.data,Colon,"cn") == 0 ||
-	     stringcmp((char *)Key.data,Colon,"m5") == 0 ||
 	     stringcmp((char *)Key.data,Colon,"cl") == 0)
 	 {
 	    if (FileExists(string(Colon+1,(const char *)Key.data+Key.size)) == true)

+ 30 - 10
ftparchive/cachedb.h

@@ -44,7 +44,7 @@ class CacheDB
       memset(&Key,0,sizeof(Key));
       memset(&Data,0,sizeof(Data));
       Key.data = TmpKey;
-      Key.size = snprintf(TmpKey,sizeof(TmpKey),"%s:%s",Type,FileName.c_str());
+      Key.size = snprintf(TmpKey,sizeof(TmpKey),"%s:%s",FileName.c_str(), Type);
    }
    
    inline bool Get() 
@@ -64,19 +64,31 @@ class CacheDB
       }
       return true;
    }
+   bool OpenFile();
+   bool GetFileStat();
+   bool GetCurStat();
+   bool LoadControl();
+   bool LoadContents(bool GenOnly);
+   bool GetMD5(bool GenOnly);
+   bool GetSHA1(bool GenOnly);
+   bool GetSHA256(bool GenOnly);
    
    // Stat info stored in the DB, Fixed types since it is written to disk.
-   enum FlagList {FlControl = (1<<0),FlMD5=(1<<1),FlContents=(1<<2)};
+   enum FlagList {FlControl = (1<<0),FlMD5=(1<<1),FlContents=(1<<2),
+   	FlSize=(1<<3), FlSHA1=(1<<4), FlSHA256=(1<<5)};
    struct StatStore
    {
-      time_t   mtime;          
       uint32_t Flags;
+      uint32_t mtime;          
+      uint32_t FileSize;
+      uint8_t  MD5[16];
+      uint8_t  SHA1[20];
+      uint8_t  SHA256[32];
    } CurStat;
    struct StatStore OldStat;
    
    // 'set' state
    string FileName;
-   struct stat FileStat;
    FileFd *Fd;
    debDebFile *DebFile;
    
@@ -85,34 +97,42 @@ class CacheDB
    // Data collection helpers
    debDebFile::MemControlExtract Control;
    ContentsExtract Contents;
+   string MD5Res;
+   string SHA1Res;
+   string SHA256Res;
    
    // Runtime statistics
    struct Stats
    {
       double Bytes;
       double MD5Bytes;
+      double SHA1Bytes;
+      double SHA256Bytes;
       unsigned long Packages;
       unsigned long Misses;  
       unsigned long DeLinkBytes;
       
-      inline void Add(const Stats &S) {Bytes += S.Bytes; MD5Bytes += S.MD5Bytes;
+      inline void Add(const Stats &S) {
+	 Bytes += S.Bytes; MD5Bytes += S.MD5Bytes; SHA1Bytes += S.SHA1Bytes; 
+	 SHA256Bytes += S.SHA256Bytes;
 	 Packages += S.Packages; Misses += S.Misses; DeLinkBytes += S.DeLinkBytes;};
-      Stats() : Bytes(0), MD5Bytes(0), Packages(0), Misses(0), DeLinkBytes(0) {};
+      Stats() : Bytes(0), MD5Bytes(0), SHA1Bytes(0), SHA256Bytes(0), Packages(0), Misses(0), DeLinkBytes(0) {};
    } Stats;
    
    bool ReadyDB(string DB);
    inline bool DBFailed() {return Dbp != 0 && DBLoaded == false;};
    inline bool Loaded() {return DBLoaded == true;};
    
+   inline off_t GetFileSize(void) {return CurStat.FileSize;}
+   
    bool SetFile(string FileName,struct stat St,FileFd *Fd);
-   bool LoadControl();
-   bool LoadContents(bool GenOnly);
-   bool GetMD5(string &MD5Res,bool GenOnly);
+   bool GetFileInfo(string FileName, bool DoControl, bool DoContents,
+		   bool GenContentsOnly, bool DoMD5, bool DoSHA1, bool DoSHA256);
    bool Finish();   
    
    bool Clean();
    
-   CacheDB(string DB) : Dbp(0), DebFile(0) {ReadyDB(DB);};
+   CacheDB(string DB) : Dbp(0), Fd(NULL), DebFile(0) {ReadyDB(DB);};
    ~CacheDB() {ReadyDB(string()); delete DebFile;};
 };
     

+ 60 - 44
ftparchive/writer.cc

@@ -23,6 +23,7 @@
 #include <apt-pkg/configuration.h>
 #include <apt-pkg/md5.h>
 #include <apt-pkg/sha1.h>
+#include <apt-pkg/sha256.h>
 #include <apt-pkg/deblistparser.h>
 
 #include <sys/types.h>
@@ -70,7 +71,7 @@ FTWScanner::FTWScanner()
 // ---------------------------------------------------------------------
 /* This is the FTW scanner, it processes each directory element in the 
    directory tree. */
-int FTWScanner::Scanner(const char *File,const struct stat *sb,int Flag)
+int FTWScanner::ScannerFTW(const char *File,const struct stat *sb,int Flag)
 {
    if (Flag == FTW_DNR)
    {
@@ -85,6 +86,14 @@ int FTWScanner::Scanner(const char *File,const struct stat *sb,int Flag)
    if (Flag != FTW_F)
       return 0;
 
+   return ScannerFile(File, true);
+}
+									/*}}}*/
+// FTWScanner::ScannerFile - File Scanner				/*{{{*/
+// ---------------------------------------------------------------------
+/* */
+int FTWScanner::ScannerFile(const char *File, bool ReadLink)
+{
    const char *LastComponent = strrchr(File, '/');
    if (LastComponent == NULL)
       LastComponent = File;
@@ -105,7 +114,8 @@ int FTWScanner::Scanner(const char *File,const struct stat *sb,int Flag)
       given are not links themselves. */
    char Jnk[2];
    Owner->OriginalPath = File;
-   if (Owner->RealPath != 0 && readlink(File,Jnk,sizeof(Jnk)) != -1 &&
+   if (ReadLink && Owner->RealPath != 0 &&
+       readlink(File,Jnk,sizeof(Jnk)) != -1 &&
        realpath(File,Owner->RealPath) != 0)
       Owner->DoPackage(Owner->RealPath);
    else
@@ -154,7 +164,7 @@ bool FTWScanner::RecursiveScan(string Dir)
    
    // Do recursive directory searching
    Owner = this;
-   int Res = ftw(Dir.c_str(),Scanner,30);
+   int Res = ftw(Dir.c_str(),ScannerFTW,30);
    
    // Error treewalking?
    if (Res != 0)
@@ -209,12 +219,14 @@ bool FTWScanner::LoadFileList(string Dir,string File)
 	 FileName = Line;
       }
       
+#if 0
       struct stat St;
       int Flag = FTW_F;
       if (stat(FileName,&St) != 0)
 	 Flag = FTW_NS;
+#endif
 
-      if (Scanner(FileName,&St,Flag) != 0)
+      if (ScannerFile(FileName, false) != 0)
 	 break;
    }
   
@@ -227,7 +239,7 @@ bool FTWScanner::LoadFileList(string Dir,string File)
 /* */
 bool FTWScanner::Delink(string &FileName,const char *OriginalPath,
 			unsigned long &DeLinkBytes,
-			struct stat &St)
+			off_t FileSize)
 {
    // See if this isn't an internaly prefix'd file name.
    if (InternalPrefix.empty() == false &&
@@ -243,7 +255,7 @@ bool FTWScanner::Delink(string &FileName,const char *OriginalPath,
 	 
 	 NewLine(1);
 	 ioprintf(c1out, _(" DeLink %s [%s]\n"), (OriginalPath + InternalPrefix.length()),
-		    SizeToStr(St.st_size).c_str());
+		    SizeToStr(FileSize).c_str());
 	 c1out << flush;
 	 
 	 if (NoLinkAct == false)
@@ -269,7 +281,7 @@ bool FTWScanner::Delink(string &FileName,const char *OriginalPath,
 	    }	    
 	 }
 	 
-	 DeLinkBytes += St.st_size;
+	 DeLinkBytes += FileSize;
 	 if (DeLinkBytes/1024 >= DeLinkLimit)
 	    ioprintf(c1out, _(" DeLink limit of %sB hit.\n"), SizeToStr(DeLinkBytes).c_str());      
       }
@@ -295,6 +307,8 @@ PackagesWriter::PackagesWriter(string DB,string Overrides,string ExtOverrides,
    
    // Process the command line options
    DoMD5 = _config->FindB("APT::FTPArchive::MD5",true);
+   DoSHA1 = _config->FindB("APT::FTPArchive::SHA1",true);
+   DoSHA256 = _config->FindB("APT::FTPArchive::SHA256",true);
    DoContents = _config->FindB("APT::FTPArchive::Contents",true);
    NoOverride = _config->FindB("APT::FTPArchive::NoOverrideMsg",false);
 
@@ -343,29 +357,19 @@ bool FTWScanner::SetExts(string Vals)
 // PackagesWriter::DoPackage - Process a single package			/*{{{*/
 // ---------------------------------------------------------------------
 /* This method takes a package and gets its control information and 
-   MD5 then writes out a control record with the proper fields rewritten
-   and the path/size/hash appended. */
+   MD5, SHA1 and SHA256 then writes out a control record with the proper fields 
+   rewritten and the path/size/hash appended. */
 bool PackagesWriter::DoPackage(string FileName)
 {      
-   // Open the archive
-   FileFd F(FileName,FileFd::ReadOnly);
-   if (_error->PendingError() == true)
-      return false;
-   
-   // Stat the file for later
-   struct stat St;
-   if (fstat(F.Fd(),&St) != 0)
-      return _error->Errno("fstat",_("Failed to stat %s"),FileName.c_str());
-
    // Pull all the data we need form the DB
-   string MD5Res;
-   if (Db.SetFile(FileName,St,&F) == false ||
-       Db.LoadControl() == false ||
-       (DoContents == true && Db.LoadContents(true) == false) ||
-       (DoMD5 == true && Db.GetMD5(MD5Res,false) == false))
+   if (Db.GetFileInfo(FileName, true, DoContents, true, DoMD5, DoSHA1, DoSHA256) 
+		  == false)
+   {
       return false;
+   }
 
-   if (Delink(FileName,OriginalPath,Stats.DeLinkBytes,St) == false)
+   off_t FileSize = Db.GetFileSize();
+   if (Delink(FileName,OriginalPath,Stats.DeLinkBytes,FileSize) == false)
       return false;
    
    // Lookup the overide information
@@ -400,7 +404,7 @@ bool PackagesWriter::DoPackage(string FileName)
    }
 
    char Size[40];
-   sprintf(Size,"%lu",St.st_size);
+   sprintf(Size,"%lu", (unsigned long) FileSize);
    
    // Strip the DirStrip prefix from the FileName and add the PathPrefix
    string NewFileName;
@@ -420,7 +424,9 @@ bool PackagesWriter::DoPackage(string FileName)
 
    unsigned int End = 0;
    SetTFRewriteData(Changes[End++], "Size", Size);
-   SetTFRewriteData(Changes[End++], "MD5sum", MD5Res.c_str());
+   SetTFRewriteData(Changes[End++], "MD5sum", Db.MD5Res.c_str());
+   SetTFRewriteData(Changes[End++], "SHA1", Db.SHA1Res.c_str());
+   SetTFRewriteData(Changes[End++], "SHA256", Db.SHA256Res.c_str());
    SetTFRewriteData(Changes[End++], "Filename", NewFileName.c_str());
    SetTFRewriteData(Changes[End++], "Priority", OverItem->Priority.c_str());
    SetTFRewriteData(Changes[End++], "Status", 0);
@@ -491,6 +497,10 @@ SourcesWriter::SourcesWriter(string BOverrides,string SOverrides,
    else
       NoOverride = true;
 
+   // WTF?? The logic above: if we can't read binary overrides, don't even try
+   // reading source overrides. if we can read binary overrides, then say there
+   // are no overrides. THIS MAKES NO SENSE! -- ajt@d.o, 2006/02/28
+
    if (ExtOverrides.empty() == false)
       SOver.ReadExtraOverride(ExtOverrides);
    
@@ -607,12 +617,14 @@ bool SourcesWriter::DoPackage(string FileName)
    }
    
    auto_ptr<Override::Item> SOverItem(SOver.GetItem(Tags.FindS("Source")));
-   const auto_ptr<Override::Item> autoSOverItem(SOverItem);
+   // const auto_ptr<Override::Item> autoSOverItem(SOverItem);
    if (SOverItem.get() == 0)
    {
+      ioprintf(c1out, _("  %s has no source override entry\n"), Tags.FindS("Source").c_str());
       SOverItem = auto_ptr<Override::Item>(BOver.GetItem(Tags.FindS("Source")));
       if (SOverItem.get() == 0)
       {
+        ioprintf(c1out, _("  %s has no binary override entry either\n"), Tags.FindS("Source").c_str());
 	 SOverItem = auto_ptr<Override::Item>(new Override::Item);
 	 *SOverItem = *OverItem;
       }
@@ -657,7 +669,7 @@ bool SourcesWriter::DoPackage(string FileName)
 	  realpath(OriginalPath.c_str(),RealPath) != 0)
       {
 	 string RP = RealPath;
-	 if (Delink(RP,OriginalPath.c_str(),Stats.DeLinkBytes,St) == false)
+	 if (Delink(RP,OriginalPath.c_str(),Stats.DeLinkBytes,St.st_size) == false)
 	    return false;
       }
    }
@@ -727,26 +739,14 @@ ContentsWriter::ContentsWriter(string DB) :
    determine what the package name is. */
 bool ContentsWriter::DoPackage(string FileName,string Package)
 {
-   // Open the archive
-   FileFd F(FileName,FileFd::ReadOnly);
-   if (_error->PendingError() == true)
-      return false;
-   
-   // Stat the file for later
-   struct stat St;
-   if (fstat(F.Fd(),&St) != 0)
-      return _error->Errno("fstat","Failed too stat %s",FileName.c_str());
-
-   // Ready the DB
-   if (Db.SetFile(FileName,St,&F) == false || 
-       Db.LoadContents(false) == false)
+   if (!Db.GetFileInfo(FileName, Package.empty(), true, false, false, false, false))
+   {
       return false;
+   }
 
    // Parse the package name
    if (Package.empty() == true)
    {
-      if (Db.LoadControl() == false)
-	 return false;
       Package = Db.Control.Section.FindS("Package");
    }
 
@@ -896,6 +896,11 @@ bool ReleaseWriter::DoPackage(string FileName)
    SHA1.AddFD(fd.Fd(), fd.Size());
    CheckSums[NewFileName].SHA1 = SHA1.Result();
 
+   fd.Seek(0);
+   SHA256Summation SHA256;
+   SHA256.AddFD(fd.Fd(), fd.Size());
+   CheckSums[NewFileName].SHA256 = SHA256.Result();
+
    fd.Close();
    
    return true;
@@ -927,5 +932,16 @@ void ReleaseWriter::Finish()
               (*I).second.size,
               (*I).first.c_str());
    }
+
+   fprintf(Output, "SHA256:\n");
+   for(map<string,struct CheckSum>::iterator I = CheckSums.begin();
+       I != CheckSums.end();
+       ++I)
+   {
+      fprintf(Output, " %s %16ld %s\n",
+              (*I).second.SHA256.c_str(),
+              (*I).second.size,
+              (*I).first.c_str());
+   }
 }
 

+ 6 - 2
ftparchive/writer.h

@@ -45,10 +45,11 @@ class FTWScanner
    bool NoLinkAct;
    
    static FTWScanner *Owner;
-   static int Scanner(const char *File,const struct stat *sb,int Flag);
+   static int ScannerFTW(const char *File,const struct stat *sb,int Flag);
+   static int ScannerFile(const char *File, bool ReadLink);
 
    bool Delink(string &FileName,const char *OriginalPath,
-	       unsigned long &Bytes,struct stat &St);
+	       unsigned long &Bytes,off_t FileSize);
 
    inline void NewLine(unsigned Priority)
    {
@@ -84,6 +85,8 @@ class PackagesWriter : public FTWScanner
 
    // Some flags
    bool DoMD5;
+   bool DoSHA1;
+   bool DoSHA256;
    bool NoOverride;
    bool DoContents;
 
@@ -170,6 +173,7 @@ protected:
    {
       string MD5;
       string SHA1;
+      string SHA256;
       // Limited by FileFd::Size()
       unsigned long size;
       ~CheckSum() {};

+ 5 - 2
methods/ftp.cc

@@ -1055,9 +1055,12 @@ bool FtpMethod::Fetch(FetchItem *Itm)
 	 UBuf.modtime = FailTime;
 	 utime(FailFile.c_str(),&UBuf);
 	 
-	 // If the file is missing we hard fail otherwise transient fail
-	 if (Missing == true)
+	 // If the file is missing we hard fail and delete the destfile
+	 // otherwise transient fail
+	 if (Missing == true) {
+	    unlink(FailFile.c_str());
 	    return false;
+	 }
 	 Fail(true);
 	 return true;
       }

+ 18 - 12
methods/gpgv.cc

@@ -11,6 +11,7 @@
 #include <errno.h>
 #include <sys/wait.h>
 #include <iostream>
+#include <sstream>
 
 #define GNUPGPREFIX "[GNUPG:]"
 #define GNUPGBADSIG "[GNUPG:] BADSIG"
@@ -20,7 +21,7 @@
 class GPGVMethod : public pkgAcqMethod
 {
    private:
-   const char *VerifyGetSigners(const char *file, const char *outfile,
+   string VerifyGetSigners(const char *file, const char *outfile,
 				vector<string> &GoodSigners, vector<string> &BadSigners,
 				vector<string> &NoPubKeySigners);
    
@@ -32,11 +33,15 @@ class GPGVMethod : public pkgAcqMethod
    GPGVMethod() : pkgAcqMethod("1.0",SingleInstance | SendConfig) {};
 };
 
-const char *GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
+string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
 					 vector<string> &GoodSigners,
 					 vector<string> &BadSigners,
 					 vector<string> &NoPubKeySigners)
 {
+   // setup a (empty) stringstream for formating the return value
+   std::stringstream ret;
+   ret.str("");
+
    if (_config->FindB("Debug::Acquire::gpgv", false))
    {
       std::cerr << "inside VerifyGetSigners" << std::endl;
@@ -54,9 +59,11 @@ const char *GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
       std::cerr << "Keyring path: " << pubringpath << std::endl;
    }
 
-   if (stat(pubringpath.c_str(), &buff) != 0)
-      return (string("Couldn't access keyring: ") + strerror(errno)).c_str();
-
+   if (stat(pubringpath.c_str(), &buff) != 0) 
+   {
+      ioprintf(ret, _("Couldn't access keyring: '%s'"), strerror(errno)); 
+      return ret.str();
+   }
    if (pipe(fd) < 0)
    {
       return "Couldn't create pipe";
@@ -65,7 +72,7 @@ const char *GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
    pid = fork();
    if (pid < 0)
    {
-      return (string("Couldn't spawn new process") + strerror(errno)).c_str();
+      return string("Couldn't spawn new process") + strerror(errno);
    }
    else if (pid == 0)
    {
@@ -189,7 +196,7 @@ const char *GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
    {
       if (GoodSigners.empty())
          return _("Internal error: Good signature, but could not determine key fingerprint?!");
-      return NULL;
+      return "";
    }
    else if (WEXITSTATUS(status) == 1)
    {
@@ -197,9 +204,8 @@ const char *GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
    }
    else if (WEXITSTATUS(status) == 111)
    {
-      // FIXME String concatenation considered harmful.
-      return (string(_("Could not execute ")) + gpgvpath +
-	      string(_(" to verify signature (is gnupg installed?)"))).c_str();
+      ioprintf(ret, _("Could not execute '%s' to verify signature (is gnupg installed?)"), gpgvpath.c_str());
+      return ret.str();
    }
    else
    {
@@ -221,8 +227,8 @@ bool GPGVMethod::Fetch(FetchItem *Itm)
    URIStart(Res);
 
    // Run gpgv on file, extract contents and get the key ID of the signer
-   const char *msg = VerifyGetSigners(Path.c_str(), Itm->DestFile.c_str(),
-				      GoodSigners, BadSigners, NoPubKeySigners);
+   string msg = VerifyGetSigners(Path.c_str(), Itm->DestFile.c_str(),
+			      GoodSigners, BadSigners, NoPubKeySigners);
    if (GoodSigners.empty() || !BadSigners.empty() || !NoPubKeySigners.empty())
    {
       string errmsg;

+ 16 - 0
po/ChangeLog

@@ -1,3 +1,19 @@
+2006-04-01  Yavor Doganov  <yavor@doganov.org>
+
+	* bg.po: Added, complete to 512t. Closes: #360262
+
+2006-03-16  eric pareja  <xenos@upm.edu.ph>
+
+	* tl.po: Completed to 512t. Closes: #357215
+
+2006-03-13  Sorin Batariuc  <sorin@bonbon.net>
+
+	* ro.po: Completed to 512t. Closes: #355897
+
+2006-03-12  Miguel Figueiredo  <elmig@debianpt.org>
+
+	* pt.po: Completed to 512t. Closes: #355798
+
 2006-02-14  Carlos Z.F. Liu  <carlosliu@users.sourceforge.net>
 
 	* zh_CN.po: Completed to 512t. Closes: #353936

+ 1 - 1
po/LINGUAS

@@ -1 +1 @@
-bs ca cs cy da de el en_GB es eu fi fr gl hu it ja ko nb nl nn pl pt pt_BR ro ru sk sl sv tl vi zh_CN zh_TW
+bg bs ca cs cy da de el en_GB es eu fi fr gl hu it ja ko nb nl nn pl pt pt_BR ro ru sk sl sv tl vi zh_CN zh_TW

Разлика између датотеке није приказан због своје велике величине
+ 276 - 231
po/apt-all.pot


Разлика између датотеке није приказан због своје велике величине
+ 2776 - 0
po/bg.po


+ 116 - 99
po/cs.po

@@ -1,13 +1,13 @@
 # Czech translation of APT
 # This file is put in the public domain.
-# Miroslav Kure <kurem@debian.cz>, 2004-2005.
+# Miroslav Kure <kurem@debian.cz>, 2004-2006.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: apt\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-20 14:01+0100\n"
-"PO-Revision-Date: 2005-12-30 15:44+0100\n"
+"POT-Creation-Date: 2006-05-08 11:02+0200\n"
+"PO-Revision-Date: 2006-05-14 18:36+0200\n"
 "Last-Translator: Miroslav Kure <kurem@debian.cz>\n"
 "Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"
 "MIME-Version: 1.0\n"
@@ -145,14 +145,14 @@ msgstr "  Tabulka verzí:"
 msgid "       %4i %s\n"
 msgstr "       %4i %s\n"
 
-#: cmdline/apt-cache.cc:1651 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
+#: cmdline/apt-cache.cc:1652 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
 #: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:550
-#: cmdline/apt-get.cc:2378 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-get.cc:2369 cmdline/apt-sortpkgs.cc:144
 #, c-format
 msgid "%s %s for %s %s compiled on %s %s\n"
 msgstr "%s %s pro %s %s zkompilován na %s %s\n"
 
-#: cmdline/apt-cache.cc:1658
+#: cmdline/apt-cache.cc:1659
 msgid ""
 "Usage: apt-cache [options] command\n"
 "       apt-cache [options] add file1 [file2 ...]\n"
@@ -510,7 +510,7 @@ msgid " DeLink limit of %sB hit.\n"
 msgstr " Odlinkovací limit %sB dosažen.\n"
 
 #: ftparchive/writer.cc:358 apt-inst/extract.cc:181 apt-inst/extract.cc:193
-#: apt-inst/extract.cc:210 apt-inst/deb/dpkgdb.cc:121 methods/gpgv.cc:260
+#: apt-inst/extract.cc:210 apt-inst/deb/dpkgdb.cc:121 methods/gpgv.cc:266
 #, c-format
 msgid "Failed to stat %s"
 msgstr "Nemohu vyhodnotit %s"
@@ -628,7 +628,7 @@ msgstr "Selhalo přejmenování %s na %s"
 msgid "Y"
 msgstr "Y"
 
-#: cmdline/apt-get.cc:142 cmdline/apt-get.cc:1515
+#: cmdline/apt-get.cc:142 cmdline/apt-get.cc:1506
 #, c-format
 msgid "Regex compilation error - %s"
 msgstr "Chyba při kompilaci regulárního výrazu - %s"
@@ -789,11 +789,11 @@ msgstr "Balík je potřeba odstranit ale funkce Odstranit je vypnuta."
 msgid "Internal error, Ordering didn't finish"
 msgstr "Vnitřní chyba, třídění nedoběhlo do konce"
 
-#: cmdline/apt-get.cc:791 cmdline/apt-get.cc:1809 cmdline/apt-get.cc:1842
+#: cmdline/apt-get.cc:791 cmdline/apt-get.cc:1800 cmdline/apt-get.cc:1833
 msgid "Unable to lock the download directory"
 msgstr "Nemohu zamknout adresář pro stahování"
 
-#: cmdline/apt-get.cc:801 cmdline/apt-get.cc:1890 cmdline/apt-get.cc:2126
+#: cmdline/apt-get.cc:801 cmdline/apt-get.cc:1881 cmdline/apt-get.cc:2117
 #: apt-pkg/cachefile.cc:67
 msgid "The list of sources could not be read."
 msgstr "Nelze přečíst seznam zdrojů."
@@ -823,7 +823,7 @@ msgstr "Po rozbalení bude na disku použito dalších %sB.\n"
 msgid "After unpacking %sB disk space will be freed.\n"
 msgstr "Po rozbalení bude na disku uvolněno %sB.\n"
 
-#: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1980
+#: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1971
 #, c-format
 msgid "Couldn't determine free space in %s"
 msgstr "Nemohu určit volné místo v %s"
@@ -860,7 +860,7 @@ msgstr "Přerušeno."
 msgid "Do you want to continue [Y/n]? "
 msgstr "Chcete pokračovat [Y/n]? "
 
-#: cmdline/apt-get.cc:961 cmdline/apt-get.cc:1365 cmdline/apt-get.cc:2023
+#: cmdline/apt-get.cc:961 cmdline/apt-get.cc:1365 cmdline/apt-get.cc:2014
 #, c-format
 msgid "Failed to fetch %s  %s\n"
 msgstr "Selhalo stažení %s  %s\n"
@@ -869,7 +869,7 @@ msgstr "Selhalo stažení %s  %s\n"
 msgid "Some files failed to download"
 msgstr "Některé soubory nemohly být staženy"
 
-#: cmdline/apt-get.cc:980 cmdline/apt-get.cc:2032
+#: cmdline/apt-get.cc:980 cmdline/apt-get.cc:2023
 msgid "Download complete and in download only mode"
 msgstr "Stahování dokončeno v režimu pouze stáhnout"
 
@@ -970,7 +970,7 @@ msgstr "Vybraná verze %s (%s) pro %s\n"
 msgid "The update command takes no arguments"
 msgstr "Příkaz update neakceptuje žádné argumenty"
 
-#: cmdline/apt-get.cc:1326 cmdline/apt-get.cc:1420
+#: cmdline/apt-get.cc:1326
 msgid "Unable to lock the list directory"
 msgstr "Nemohu uzamknout list adresář"
 
@@ -986,21 +986,21 @@ msgstr ""
 msgid "Internal error, AllUpgrade broke stuff"
 msgstr "Vnitřní chyba, AllUpgrade pokazil věci"
 
-#: cmdline/apt-get.cc:1502 cmdline/apt-get.cc:1538
+#: cmdline/apt-get.cc:1493 cmdline/apt-get.cc:1529
 #, c-format
 msgid "Couldn't find package %s"
 msgstr "Nemohu najít balík %s"
 
-#: cmdline/apt-get.cc:1525
+#: cmdline/apt-get.cc:1516
 #, c-format
 msgid "Note, selecting %s for regex '%s'\n"
 msgstr "Pozn: vybírám %s pro regulární výraz '%s'\n"
 
-#: cmdline/apt-get.cc:1555
+#: cmdline/apt-get.cc:1546
 msgid "You might want to run `apt-get -f install' to correct these:"
 msgstr "Pro opravení následujících můžete spustit `apt-get -f install':"
 
-#: cmdline/apt-get.cc:1558
+#: cmdline/apt-get.cc:1549
 msgid ""
 "Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
 "solution)."
@@ -1008,7 +1008,7 @@ msgstr ""
 "Nesplněné závislosti. Zkuste spustit 'apt-get -f install' bez balíků (nebo "
 "navrhněte řešení)."
 
-#: cmdline/apt-get.cc:1570
+#: cmdline/apt-get.cc:1561
 msgid ""
 "Some packages could not be installed. This may mean that you have\n"
 "requested an impossible situation or if you are using the unstable\n"
@@ -1019,7 +1019,7 @@ msgstr ""
 "nemožnou situaci, nebo, pokud používáte nestabilní distribuci, že\n"
 "vyžadované balíky ještě nebyly vytvořeny nebo přesunuty z Příchozí fronty."
 
-#: cmdline/apt-get.cc:1578
+#: cmdline/apt-get.cc:1569
 msgid ""
 "Since you only requested a single operation it is extremely likely that\n"
 "the package is simply not installable and a bug report against\n"
@@ -1029,128 +1029,128 @@ msgstr ""
 "balík není instalovatelný a měl byste o tom zaslat hlášení o chybě\n"
 "(bug report)."
 
-#: cmdline/apt-get.cc:1583
+#: cmdline/apt-get.cc:1574
 msgid "The following information may help to resolve the situation:"
 msgstr "Následující informace vám mohou pomoci vyřešit tuto situaci:"
 
-#: cmdline/apt-get.cc:1586
+#: cmdline/apt-get.cc:1577
 msgid "Broken packages"
 msgstr "Poškozené balíky"
 
-#: cmdline/apt-get.cc:1612
+#: cmdline/apt-get.cc:1603
 msgid "The following extra packages will be installed:"
 msgstr "Následující extra balíky budou instalovány:"
 
-#: cmdline/apt-get.cc:1683
+#: cmdline/apt-get.cc:1674
 msgid "Suggested packages:"
 msgstr "Navrhované balíky:"
 
-#: cmdline/apt-get.cc:1684
+#: cmdline/apt-get.cc:1675
 msgid "Recommended packages:"
 msgstr "Doporučované balíky:"
 
-#: cmdline/apt-get.cc:1704
+#: cmdline/apt-get.cc:1695
 msgid "Calculating upgrade... "
 msgstr "Propočítávám aktualizaci... "
 
-#: cmdline/apt-get.cc:1707 methods/ftp.cc:702 methods/connect.cc:101
+#: cmdline/apt-get.cc:1698 methods/ftp.cc:702 methods/connect.cc:101
 msgid "Failed"
 msgstr "Selhalo"
 
-#: cmdline/apt-get.cc:1712
+#: cmdline/apt-get.cc:1703
 msgid "Done"
 msgstr "Hotovo"
 
-#: cmdline/apt-get.cc:1777 cmdline/apt-get.cc:1785
+#: cmdline/apt-get.cc:1768 cmdline/apt-get.cc:1776
 msgid "Internal error, problem resolver broke stuff"
 msgstr "Vnitřní chyba, řešitel problémů pokazil věci"
 
-#: cmdline/apt-get.cc:1885
+#: cmdline/apt-get.cc:1876
 msgid "Must specify at least one package to fetch source for"
 msgstr "Musíte zadat aspoň jeden balík, pro který se stáhnou zdrojové texty"
 
-#: cmdline/apt-get.cc:1915 cmdline/apt-get.cc:2144
+#: cmdline/apt-get.cc:1906 cmdline/apt-get.cc:2135
 #, c-format
 msgid "Unable to find a source package for %s"
 msgstr "Nemohu najít zdrojový balík pro %s"
 
-#: cmdline/apt-get.cc:1959
-#, fuzzy, c-format
+#: cmdline/apt-get.cc:1950
+#, c-format
 msgid "Skipping already downloaded file '%s'\n"
-msgstr "Přeskakuji rozbalení již rozbaleného zdroje v %s\n"
+msgstr "Přeskakuji dříve stažený soubor '%s'\n"
 
-#: cmdline/apt-get.cc:1983
+#: cmdline/apt-get.cc:1974
 #, c-format
 msgid "You don't have enough free space in %s"
 msgstr "Na %s nemáte dostatek volného místa"
 
-#: cmdline/apt-get.cc:1988
+#: cmdline/apt-get.cc:1979
 #, c-format
 msgid "Need to get %sB/%sB of source archives.\n"
 msgstr "Potřebuji stáhnout %sB/%sB zdrojových archivů.\n"
 
-#: cmdline/apt-get.cc:1991
+#: cmdline/apt-get.cc:1982
 #, c-format
 msgid "Need to get %sB of source archives.\n"
 msgstr "Potřebuji stáhnout %sB zdrojových archivů.\n"
 
-#: cmdline/apt-get.cc:1997
+#: cmdline/apt-get.cc:1988
 #, c-format
 msgid "Fetch source %s\n"
 msgstr "Stáhnout zdroj %s\n"
 
-#: cmdline/apt-get.cc:2028
+#: cmdline/apt-get.cc:2019
 msgid "Failed to fetch some archives."
 msgstr "Stažení některých archivů selhalo."
 
-#: cmdline/apt-get.cc:2056
+#: cmdline/apt-get.cc:2047
 #, c-format
 msgid "Skipping unpack of already unpacked source in %s\n"
 msgstr "Přeskakuji rozbalení již rozbaleného zdroje v %s\n"
 
-#: cmdline/apt-get.cc:2068
+#: cmdline/apt-get.cc:2059
 #, c-format
 msgid "Unpack command '%s' failed.\n"
 msgstr "Příkaz pro rozbalení '%s' selhal.\n"
 
-#: cmdline/apt-get.cc:2069
+#: cmdline/apt-get.cc:2060
 #, c-format
 msgid "Check if the 'dpkg-dev' package is installed.\n"
 msgstr "Zkontrolujte, zda je nainstalován balíček 'dpkg-dev'.\n"
 
-#: cmdline/apt-get.cc:2086
+#: cmdline/apt-get.cc:2077
 #, c-format
 msgid "Build command '%s' failed.\n"
 msgstr "Příkaz pro sestavení '%s' selhal.\n"
 
-#: cmdline/apt-get.cc:2105
+#: cmdline/apt-get.cc:2096
 msgid "Child process failed"
 msgstr "Synovský proces selhal"
 
-#: cmdline/apt-get.cc:2121
+#: cmdline/apt-get.cc:2112
 msgid "Must specify at least one package to check builddeps for"
 msgstr ""
 "Musíte zadat alespoň jeden balík, pro který budou kontrolovány závislosti "
 "pro sestavení"
 
-#: cmdline/apt-get.cc:2149
+#: cmdline/apt-get.cc:2140
 #, c-format
 msgid "Unable to get build-dependency information for %s"
 msgstr "Nemohu získat závislosti pro sestavení %s"
 
-#: cmdline/apt-get.cc:2169
+#: cmdline/apt-get.cc:2160
 #, c-format
 msgid "%s has no build depends.\n"
 msgstr "%s nemá žádné závislosti pro sestavení.\n"
 
-#: cmdline/apt-get.cc:2221
+#: cmdline/apt-get.cc:2212
 #, c-format
 msgid ""
 "%s dependency for %s cannot be satisfied because the package %s cannot be "
 "found"
 msgstr "%s závislost pro %s nemůže být splněna, protože balík %s nebyl nalezen"
 
-#: cmdline/apt-get.cc:2273
+#: cmdline/apt-get.cc:2264
 #, c-format
 msgid ""
 "%s dependency for %s cannot be satisfied because no available versions of "
@@ -1159,31 +1159,31 @@ msgstr ""
 "%s závislost pro %s nemůže být splněna protože není k dispozici verze balíku "
 "%s, která odpovídá požadavku na verzi"
 
-#: cmdline/apt-get.cc:2308
+#: cmdline/apt-get.cc:2299
 #, c-format
 msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
 msgstr ""
 "Selhalo splnění %s závislosti pro %s: Instalovaný balík %s je příliš nový"
 
-#: cmdline/apt-get.cc:2333
+#: cmdline/apt-get.cc:2324
 #, c-format
 msgid "Failed to satisfy %s dependency for %s: %s"
 msgstr "Selhalo splnění %s závislosti pro %s: %s"
 
-#: cmdline/apt-get.cc:2347
+#: cmdline/apt-get.cc:2338
 #, c-format
 msgid "Build-dependencies for %s could not be satisfied."
 msgstr "Závislosti pro sestavení %s nemohly být splněny."
 
-#: cmdline/apt-get.cc:2351
+#: cmdline/apt-get.cc:2342
 msgid "Failed to process build dependencies"
 msgstr "Chyba při zpracování závislostí pro sestavení"
 
-#: cmdline/apt-get.cc:2383
+#: cmdline/apt-get.cc:2374
 msgid "Supported modules:"
 msgstr "Podporované moduly:"
 
-#: cmdline/apt-get.cc:2424
+#: cmdline/apt-get.cc:2415
 msgid ""
 "Usage: apt-get [options] command\n"
 "       apt-get [options] install|remove pkg1 [pkg2 ...]\n"
@@ -1452,7 +1452,7 @@ msgstr "Rozbaluji %s vícekrát"
 #: apt-inst/extract.cc:137
 #, c-format
 msgid "The directory %s is diverted"
-msgstr "Adresář %s je divertován"
+msgstr "Adresář %s je odkloněn"
 
 #: apt-inst/extract.cc:147
 #, c-format
@@ -1534,7 +1534,7 @@ msgstr "Nepodařilo se změnit na admin adresář %sinfo"
 msgid "Internal error getting a package name"
 msgstr "Vnitřní chyba při získávání jména balíku"
 
-#: apt-inst/deb/dpkgdb.cc:205
+#: apt-inst/deb/dpkgdb.cc:205 apt-inst/deb/dpkgdb.cc:386
 msgid "Reading file listing"
 msgstr "Čtu výpis souborů"
 
@@ -1581,10 +1581,6 @@ msgstr "Vnitřní chyba při přidávání diverze"
 msgid "The pkg cache must be initialized first"
 msgstr "Cache balíků se musí nejprve inicializovat"
 
-#: apt-inst/deb/dpkgdb.cc:386
-msgid "Reading file list"
-msgstr "Čtu seznam souborů"
-
 #: apt-inst/deb/dpkgdb.cc:443
 #, c-format
 msgid "Failed to find a Package: header, offset %lu"
@@ -1657,12 +1653,12 @@ msgstr "Disk nebyl nalezen."
 msgid "File not found"
 msgstr "Soubor nebyl nalezen"
 
-#: methods/copy.cc:42 methods/gpgv.cc:269 methods/gzip.cc:133
+#: methods/copy.cc:42 methods/gpgv.cc:275 methods/gzip.cc:133
 #: methods/gzip.cc:142
 msgid "Failed to stat"
 msgstr "Selhalo vyhodnocení"
 
-#: methods/copy.cc:79 methods/gpgv.cc:266 methods/gzip.cc:139
+#: methods/copy.cc:79 methods/gpgv.cc:272 methods/gzip.cc:139
 msgid "Failed to set modification time"
 msgstr "Nelze nastavit čas modifikace"
 
@@ -1813,7 +1809,7 @@ msgstr "Přenos dat selhal, server řekl '%s'"
 msgid "Query"
 msgstr "Dotaz"
 
-#: methods/ftp.cc:1106
+#: methods/ftp.cc:1109
 msgid "Unable to invoke "
 msgstr "Nemohu vyvolat "
 
@@ -1842,69 +1838,71 @@ msgstr "Nemohu navázat spojení na %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Nemohu se připojit k %s:%s (%s), čas spojení vypršel"
 
-#: methods/connect.cc:106
+#: methods/connect.cc:108
 #, c-format
 msgid "Could not connect to %s:%s (%s)."
 msgstr "Nemohu se připojit k %s:%s (%s)."
 
 #. We say this mainly because the pause here is for the
 #. ssh connection that is still going
-#: methods/connect.cc:134 methods/rsh.cc:425
+#: methods/connect.cc:136 methods/rsh.cc:425
 #, c-format
 msgid "Connecting to %s"
 msgstr "Připojuji se k %s"
 
-#: methods/connect.cc:165
+#: methods/connect.cc:167
 #, c-format
 msgid "Could not resolve '%s'"
 msgstr "Nemohu zjistit '%s'"
 
-#: methods/connect.cc:171
+#: methods/connect.cc:173
 #, c-format
 msgid "Temporary failure resolving '%s'"
 msgstr "Dočasné selhání při zjišťování '%s'"
 
-#: methods/connect.cc:174
+#: methods/connect.cc:176
 #, c-format
 msgid "Something wicked happened resolving '%s:%s' (%i)"
 msgstr "Něco hodně ošklivého se přihodilo při zjišťování '%s:%s' (%i)"
 
-#: methods/connect.cc:221
+#: methods/connect.cc:223
 #, c-format
 msgid "Unable to connect to %s %s:"
 msgstr "Nemohu se připojit k %s %s:"
 
-#: methods/gpgv.cc:92
+#: methods/gpgv.cc:64
+#, c-format
+msgid "Couldn't access keyring: '%s'"
+msgstr "Nemohu přistoupit ke klíčence: '%s'"
+
+#: methods/gpgv.cc:99
 msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
 msgstr "E: Seznam argumentů Acquire::gpgv::Options je příliš dlouhý. Končím."
 
-#: methods/gpgv.cc:191
+#: methods/gpgv.cc:198
 msgid ""
 "Internal error: Good signature, but could not determine key fingerprint?!"
 msgstr "Vnitřní chyba: Dobrý podpis, ale nemohu zjistit otisk klíče?!"
 
-#: methods/gpgv.cc:196
+#: methods/gpgv.cc:203
 msgid "At least one invalid signature was encountered."
 msgstr "Byl zaznamenán nejméně jeden neplatný podpis. "
 
-#. FIXME String concatenation considered harmful.
-#: methods/gpgv.cc:201
-msgid "Could not execute "
-msgstr "Nemohu spustit "
-
-#: methods/gpgv.cc:202
-msgid " to verify signature (is gnupg installed?)"
-msgstr " pro ověření podpisu (je gnupg nainstalováno?)"
+#: methods/gpgv.cc:207
+#, c-format
+msgid "Could not execute '%s' to verify signature (is gnupg installed?)"
+msgstr ""
+"Nepodařilo se spustit '%s' pro ověření podpisu (je gnupg nainstalováno?)"
 
-#: methods/gpgv.cc:206
+#: methods/gpgv.cc:212
 msgid "Unknown error executing gpgv"
 msgstr "Neznámá chyba při spouštění gpgv"
 
-#: methods/gpgv.cc:237
+#: methods/gpgv.cc:243
 msgid "The following signatures were invalid:\n"
 msgstr "Následující podpisy jsou neplatné:\n"
 
-#: methods/gpgv.cc:244
+#: methods/gpgv.cc:250
 msgid ""
 "The following signatures couldn't be verified because the public key is not "
 "available:\n"
@@ -2283,12 +2281,12 @@ msgstr "Kandidátské verze"
 msgid "Dependency generation"
 msgstr "Generování závislostí"
 
-#: apt-pkg/tagfile.cc:73
+#: apt-pkg/tagfile.cc:72
 #, c-format
 msgid "Unable to parse package file %s (1)"
 msgstr "Nelze zpracovat soubor %s (1)"
 
-#: apt-pkg/tagfile.cc:160
+#: apt-pkg/tagfile.cc:102
 #, c-format
 msgid "Unable to parse package file %s (2)"
 msgstr "Nelze zpracovat soubor %s (2)"
@@ -2387,11 +2385,18 @@ msgstr "Adresář seznamů %spartial chybí."
 msgid "Archive directory %spartial is missing."
 msgstr "Archivní adresář %spartial chybí."
 
-#: apt-pkg/acquire.cc:821
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc:823
 #, c-format
-msgid "Downloading file %li of %li (%s remaining)"
+msgid "Retrieving file %li of %li (%s remaining)"
 msgstr "Stahuji soubor %li z %li (%s zbývá)"
 
+#: apt-pkg/acquire.cc:825
+#, c-format
+msgid "Retrieving file %li of %li"
+msgstr "Stahuji soubor %li z %li"
+
 #: apt-pkg/acquire-worker.cc:113
 #, c-format
 msgid "The method driver %s could not be found."
@@ -2533,15 +2538,15 @@ msgstr "Chyba IO při ukládání zdrojové cache"
 msgid "rename failed, %s (%s -> %s)."
 msgstr "přejmenování selhalo, %s (%s -> %s)."
 
-#: apt-pkg/acquire-item.cc:236 apt-pkg/acquire-item.cc:950
+#: apt-pkg/acquire-item.cc:236 apt-pkg/acquire-item.cc:945
 msgid "MD5Sum mismatch"
 msgstr "Neshoda MD5 součtů"
 
-#: apt-pkg/acquire-item.cc:645
+#: apt-pkg/acquire-item.cc:640
 msgid "There are no public key available for the following key IDs:\n"
-msgstr ""
+msgstr "K následujícím ID klíčů není dostupný veřejný klíč:\n"
 
-#: apt-pkg/acquire-item.cc:758
+#: apt-pkg/acquire-item.cc:753
 #, c-format
 msgid ""
 "I wasn't able to locate a file for the %s package. This might mean you need "
@@ -2550,7 +2555,7 @@ msgstr ""
 "Nebyl jsem schopen nalézt soubor s balíkem %s. To by mohlo znamenat, že "
 "tento balík je třeba opravit ručně (kvůli chybějící architektuře)"
 
-#: apt-pkg/acquire-item.cc:817
+#: apt-pkg/acquire-item.cc:812
 #, c-format
 msgid ""
 "I wasn't able to locate file for the %s package. This might mean you need to "
@@ -2559,14 +2564,14 @@ msgstr ""
 "Nebyl jsem schopen nalézt soubor s balíkem %s. Asi budete muset tento balík "
 "opravit ručně."
 
-#: apt-pkg/acquire-item.cc:853
+#: apt-pkg/acquire-item.cc:848
 #, c-format
 msgid ""
 "The package index files are corrupted. No Filename: field for package %s."
 msgstr ""
 "Indexové soubory balíku jsou narušeny. Chybí pole Filename: u balíku %s."
 
-#: apt-pkg/acquire-item.cc:940
+#: apt-pkg/acquire-item.cc:935
 msgid "Size mismatch"
 msgstr "Velikosti nesouhlasí"
 
@@ -2712,14 +2717,26 @@ msgstr "Odstraněn %s"
 
 #: apt-pkg/deb/dpkgpm.cc:378
 #, c-format
-msgid "Preparing for remove with config %s"
-msgstr "Připravuji odstranění %s včetně konfiguračních souborů"
+msgid "Preparing to completely remove %s"
+msgstr "Připravuji úplné odstranění %s"
 
 #: apt-pkg/deb/dpkgpm.cc:379
 #, c-format
-msgid "Removed with config %s"
-msgstr "Odstraněn %s včetně konfiguračního souboru"
+msgid "Completely removed %s"
+msgstr "Kompletně odstraněn %s"
 
 #: methods/rsh.cc:330
 msgid "Connection closed prematurely"
 msgstr "Spojení bylo předčasně ukončeno"
+
+#~ msgid "Reading file list"
+#~ msgstr "Čtu seznam souborů"
+
+#~ msgid "Could not execute "
+#~ msgstr "Nemohu spustit "
+
+#~ msgid "Preparing for remove with config %s"
+#~ msgstr "Připravuji odstranění %s včetně konfiguračních souborů"
+
+#~ msgid "Removed with config %s"
+#~ msgstr "Odstraněn %s včetně konfiguračního souboru"

+ 112 - 95
po/gl.po

@@ -6,8 +6,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-20 14:06+0100\n"
-"PO-Revision-Date: 2006-01-21 13:33+0100\n"
+"POT-Creation-Date: 2006-05-08 11:02+0200\n"
+"PO-Revision-Date: 2006-05-11 18:09+0200\n"
 "Last-Translator: Jacobo Tarrío <jtarrio@debian.org>\n"
 "Language-Team: Galician <trasno@ceu.fi.udc.es>\n"
 "MIME-Version: 1.0\n"
@@ -147,14 +147,14 @@ msgstr "  Táboa de versións:"
 msgid "       %4i %s\n"
 msgstr "       %4i %s\n"
 
-#: cmdline/apt-cache.cc:1651 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
+#: cmdline/apt-cache.cc:1652 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
 #: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:550
-#: cmdline/apt-get.cc:2378 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-get.cc:2369 cmdline/apt-sortpkgs.cc:144
 #, c-format
 msgid "%s %s for %s %s compiled on %s %s\n"
 msgstr "%s %s para %s %s compilado en %s %s\n"
 
-#: cmdline/apt-cache.cc:1658
+#: cmdline/apt-cache.cc:1659
 msgid ""
 "Usage: apt-cache [options] command\n"
 "       apt-cache [options] add file1 [file2 ...]\n"
@@ -523,7 +523,7 @@ msgid " DeLink limit of %sB hit.\n"
 msgstr " Alcanzouse o límite de desligado de %sB.\n"
 
 #: ftparchive/writer.cc:358 apt-inst/extract.cc:181 apt-inst/extract.cc:193
-#: apt-inst/extract.cc:210 apt-inst/deb/dpkgdb.cc:121 methods/gpgv.cc:260
+#: apt-inst/extract.cc:210 apt-inst/deb/dpkgdb.cc:121 methods/gpgv.cc:266
 #, c-format
 msgid "Failed to stat %s"
 msgstr "Non se atopou %s"
@@ -641,7 +641,7 @@ msgstr "Non se puido cambiar o nome de %s a %s"
 msgid "Y"
 msgstr "S"
 
-#: cmdline/apt-get.cc:142 cmdline/apt-get.cc:1515
+#: cmdline/apt-get.cc:142 cmdline/apt-get.cc:1506
 #, c-format
 msgid "Regex compilation error - %s"
 msgstr "Erro na compilación da expresión regular - %s"
@@ -802,11 +802,11 @@ msgstr "Hai que eliminar paquetes pero a eliminación está desactivada."
 msgid "Internal error, Ordering didn't finish"
 msgstr "Erro interno, a ordeación non rematou"
 
-#: cmdline/apt-get.cc:791 cmdline/apt-get.cc:1809 cmdline/apt-get.cc:1842
+#: cmdline/apt-get.cc:791 cmdline/apt-get.cc:1800 cmdline/apt-get.cc:1833
 msgid "Unable to lock the download directory"
 msgstr "Non se puido bloquear o directorio de descargas"
 
-#: cmdline/apt-get.cc:801 cmdline/apt-get.cc:1890 cmdline/apt-get.cc:2126
+#: cmdline/apt-get.cc:801 cmdline/apt-get.cc:1881 cmdline/apt-get.cc:2117
 #: apt-pkg/cachefile.cc:67
 msgid "The list of sources could not be read."
 msgstr "Non se puido ler a lista de orixes."
@@ -836,7 +836,7 @@ msgstr "Despois de desempaquetar hanse ocupar %sB de disco adicionais.\n"
 msgid "After unpacking %sB disk space will be freed.\n"
 msgstr "Despois de desempaquetar hanse liberar %sB de disco.\n"
 
-#: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1980
+#: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1971
 #, c-format
 msgid "Couldn't determine free space in %s"
 msgstr "Non se puido determinar o espazo libre en %s"
@@ -873,7 +873,7 @@ msgstr "Abortar."
 msgid "Do you want to continue [Y/n]? "
 msgstr "¿Quere continuar [S/n]? "
 
-#: cmdline/apt-get.cc:961 cmdline/apt-get.cc:1365 cmdline/apt-get.cc:2023
+#: cmdline/apt-get.cc:961 cmdline/apt-get.cc:1365 cmdline/apt-get.cc:2014
 #, c-format
 msgid "Failed to fetch %s  %s\n"
 msgstr "Non se puido obter %s  %s\n"
@@ -882,7 +882,7 @@ msgstr "Non se puido obter %s  %s\n"
 msgid "Some files failed to download"
 msgstr "Non se puido descargar algúns ficheiros"
 
-#: cmdline/apt-get.cc:980 cmdline/apt-get.cc:2032
+#: cmdline/apt-get.cc:980 cmdline/apt-get.cc:2023
 msgid "Download complete and in download only mode"
 msgstr "Completouse a descarga no modo de só descargas"
 
@@ -985,7 +985,7 @@ msgstr "Escolleuse a versión %s (%s) de %s\n"
 msgid "The update command takes no arguments"
 msgstr "A orde \"update\" non toma argumentos"
 
-#: cmdline/apt-get.cc:1326 cmdline/apt-get.cc:1420
+#: cmdline/apt-get.cc:1326
 msgid "Unable to lock the list directory"
 msgstr "Non se puido bloquear o directorio de listas"
 
@@ -1001,21 +1001,21 @@ msgstr ""
 msgid "Internal error, AllUpgrade broke stuff"
 msgstr "Erro interno, AllUpgrade rompeu cousas"
 
-#: cmdline/apt-get.cc:1502 cmdline/apt-get.cc:1538
+#: cmdline/apt-get.cc:1493 cmdline/apt-get.cc:1529
 #, c-format
 msgid "Couldn't find package %s"
 msgstr "Non se puido atopar o paquete %s"
 
-#: cmdline/apt-get.cc:1525
+#: cmdline/apt-get.cc:1516
 #, c-format
 msgid "Note, selecting %s for regex '%s'\n"
 msgstr "Nota, escóllese %s para a expresión regular \"%s\"\n"
 
-#: cmdline/apt-get.cc:1555
+#: cmdline/apt-get.cc:1546
 msgid "You might want to run `apt-get -f install' to correct these:"
 msgstr "Pode querer executar \"apt-get -f install\" corrixir isto:"
 
-#: cmdline/apt-get.cc:1558
+#: cmdline/apt-get.cc:1549
 msgid ""
 "Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
 "solution)."
@@ -1023,7 +1023,7 @@ msgstr ""
 "Dependencias incumpridas. Probe \"apt-get -f install\" sen paquetes (ou "
 "especifique unha solución)."
 
-#: cmdline/apt-get.cc:1570
+#: cmdline/apt-get.cc:1561
 msgid ""
 "Some packages could not be installed. This may mean that you have\n"
 "requested an impossible situation or if you are using the unstable\n"
@@ -1034,7 +1034,7 @@ msgstr ""
 "unha situación imposible ou, se emprega a distribución inestable, que\n"
 "algúns paquetes solicitados aínda non se crearon ou moveron de Incoming."
 
-#: cmdline/apt-get.cc:1578
+#: cmdline/apt-get.cc:1569
 msgid ""
 "Since you only requested a single operation it is extremely likely that\n"
 "the package is simply not installable and a bug report against\n"
@@ -1043,122 +1043,122 @@ msgstr ""
 "Xa que só solicitou unha soa operación, é bastante probable que o\n"
 "paquete non sea instalable e que se deba informar dun erro no paquete."
 
-#: cmdline/apt-get.cc:1583
+#: cmdline/apt-get.cc:1574
 msgid "The following information may help to resolve the situation:"
 msgstr "A seguinte información pode axudar a resolver a situación:"
 
-#: cmdline/apt-get.cc:1586
+#: cmdline/apt-get.cc:1577
 msgid "Broken packages"
 msgstr "Paquetes rotos"
 
-#: cmdline/apt-get.cc:1612
+#: cmdline/apt-get.cc:1603
 msgid "The following extra packages will be installed:"
 msgstr "Hanse instalar os seguintes paquetes extra:"
 
-#: cmdline/apt-get.cc:1683
+#: cmdline/apt-get.cc:1674
 msgid "Suggested packages:"
 msgstr "Paquetes suxiridos:"
 
-#: cmdline/apt-get.cc:1684
+#: cmdline/apt-get.cc:1675
 msgid "Recommended packages:"
 msgstr "Paquetes recomendados:"
 
-#: cmdline/apt-get.cc:1704
+#: cmdline/apt-get.cc:1695
 msgid "Calculating upgrade... "
 msgstr "A calcular a actualización... "
 
-#: cmdline/apt-get.cc:1707 methods/ftp.cc:702 methods/connect.cc:101
+#: cmdline/apt-get.cc:1698 methods/ftp.cc:702 methods/connect.cc:101
 msgid "Failed"
 msgstr "Fallou"
 
-#: cmdline/apt-get.cc:1712
+#: cmdline/apt-get.cc:1703
 msgid "Done"
 msgstr "Rematado"
 
-#: cmdline/apt-get.cc:1777 cmdline/apt-get.cc:1785
+#: cmdline/apt-get.cc:1768 cmdline/apt-get.cc:1776
 msgid "Internal error, problem resolver broke stuff"
 msgstr "Erro interno, o resolvedor interno rompeu cousas"
 
-#: cmdline/apt-get.cc:1885
+#: cmdline/apt-get.cc:1876
 msgid "Must specify at least one package to fetch source for"
 msgstr ""
 "Ten que especificar alomenos un paquete para lle descargar o código fonte"
 
-#: cmdline/apt-get.cc:1915 cmdline/apt-get.cc:2144
+#: cmdline/apt-get.cc:1906 cmdline/apt-get.cc:2135
 #, c-format
 msgid "Unable to find a source package for %s"
 msgstr "Non se puido atopar un paquete fonte para %s"
 
-#: cmdline/apt-get.cc:1959
+#: cmdline/apt-get.cc:1950
 #, c-format
 msgid "Skipping already downloaded file '%s'\n"
 msgstr "Omítese o ficheiro xa descargado \"%s\"\n"
 
-#: cmdline/apt-get.cc:1983
+#: cmdline/apt-get.cc:1974
 #, c-format
 msgid "You don't have enough free space in %s"
 msgstr "Non hai espazo libre de abondo en %s"
 
-#: cmdline/apt-get.cc:1988
+#: cmdline/apt-get.cc:1979
 #, c-format
 msgid "Need to get %sB/%sB of source archives.\n"
 msgstr "Hai que recibir %sB/%sB de arquivos de fonte.\n"
 
-#: cmdline/apt-get.cc:1991
+#: cmdline/apt-get.cc:1982
 #, c-format
 msgid "Need to get %sB of source archives.\n"
 msgstr "Hai que recibir %sB de arquivos de fonte.\n"
 
-#: cmdline/apt-get.cc:1997
+#: cmdline/apt-get.cc:1988
 #, c-format
 msgid "Fetch source %s\n"
 msgstr "Obter fonte %s\n"
 
-#: cmdline/apt-get.cc:2028
+#: cmdline/apt-get.cc:2019
 msgid "Failed to fetch some archives."
 msgstr "Non se puido recibir algúns arquivos."
 
-#: cmdline/apt-get.cc:2056
+#: cmdline/apt-get.cc:2047
 #, c-format
 msgid "Skipping unpack of already unpacked source in %s\n"
 msgstr "Omítese o desempaquetamento do código fonte xa desempaquetado en %s\n"
 
-#: cmdline/apt-get.cc:2068
+#: cmdline/apt-get.cc:2059
 #, c-format
 msgid "Unpack command '%s' failed.\n"
 msgstr "Fallou a orde de desempaquetamento \"%s\".\n"
 
-#: cmdline/apt-get.cc:2069
+#: cmdline/apt-get.cc:2060
 #, c-format
 msgid "Check if the 'dpkg-dev' package is installed.\n"
 msgstr "Comprobe que o paquete \"dpkg-dev\" estea instalado.\n"
 
-#: cmdline/apt-get.cc:2086
+#: cmdline/apt-get.cc:2077
 #, c-format
 msgid "Build command '%s' failed.\n"
 msgstr "Fallou a codificación de %s.\n"
 
-#: cmdline/apt-get.cc:2105
+#: cmdline/apt-get.cc:2096
 msgid "Child process failed"
 msgstr "O proceso fillo fallou"
 
-#: cmdline/apt-get.cc:2121
+#: cmdline/apt-get.cc:2112
 msgid "Must specify at least one package to check builddeps for"
 msgstr ""
 "Ten que especificar alomenos un paquete para lle comprobar as dependencias "
 "de compilación"
 
-#: cmdline/apt-get.cc:2149
+#: cmdline/apt-get.cc:2140
 #, c-format
 msgid "Unable to get build-dependency information for %s"
 msgstr "Non se puido obter a información de dependencias de compilación de %s"
 
-#: cmdline/apt-get.cc:2169
+#: cmdline/apt-get.cc:2160
 #, c-format
 msgid "%s has no build depends.\n"
 msgstr "%s non ten dependencias de compilación.\n"
 
-#: cmdline/apt-get.cc:2221
+#: cmdline/apt-get.cc:2212
 #, c-format
 msgid ""
 "%s dependency for %s cannot be satisfied because the package %s cannot be "
@@ -1167,7 +1167,7 @@ msgstr ""
 "A dependencia \"%s\" de %s non se pode satisfacer porque non se pode atopar "
 "o paquete %s"
 
-#: cmdline/apt-get.cc:2273
+#: cmdline/apt-get.cc:2264
 #, c-format
 msgid ""
 "%s dependency for %s cannot be satisfied because no available versions of "
@@ -1176,32 +1176,32 @@ msgstr ""
 "A dependencia \"%s\" de %s non se pode satisfacer porque ningunha versión "
 "dispoñible do paquete %s satisfai os requirimentos de versión"
 
-#: cmdline/apt-get.cc:2308
+#: cmdline/apt-get.cc:2299
 #, c-format
 msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
 msgstr ""
 "Non se puido satisfacer a dependencia \"%s\" de %s: O paquete instalado %s é "
 "novo de máis"
 
-#: cmdline/apt-get.cc:2333
+#: cmdline/apt-get.cc:2324
 #, c-format
 msgid "Failed to satisfy %s dependency for %s: %s"
 msgstr "Non se puido satisfacer a dependencia \"%s\" de %s: %s"
 
-#: cmdline/apt-get.cc:2347
+#: cmdline/apt-get.cc:2338
 #, c-format
 msgid "Build-dependencies for %s could not be satisfied."
 msgstr "Non se puideron satisfacer as dependencias de compilación de %s."
 
-#: cmdline/apt-get.cc:2351
+#: cmdline/apt-get.cc:2342
 msgid "Failed to process build dependencies"
 msgstr "Non se puido procesar as dependencias de compilación"
 
-#: cmdline/apt-get.cc:2383
+#: cmdline/apt-get.cc:2374
 msgid "Supported modules:"
 msgstr "Módulos soportados:"
 
-#: cmdline/apt-get.cc:2424
+#: cmdline/apt-get.cc:2415
 msgid ""
 "Usage: apt-get [options] command\n"
 "       apt-get [options] install|remove pkg1 [pkg2 ...]\n"
@@ -1558,7 +1558,7 @@ msgstr "Non se puido cambiar ao directorio de administración %sinfo"
 msgid "Internal error getting a package name"
 msgstr "Erro interno ao obter un nome de paquete"
 
-#: apt-inst/deb/dpkgdb.cc:205
+#: apt-inst/deb/dpkgdb.cc:205 apt-inst/deb/dpkgdb.cc:386
 msgid "Reading file listing"
 msgstr "A ler a lista de ficheiros"
 
@@ -1604,10 +1604,6 @@ msgstr "Erro interno ao engadir un desvío"
 msgid "The pkg cache must be initialized first"
 msgstr "Ten que se inicializar a caché de paquetes primeiro"
 
-#: apt-inst/deb/dpkgdb.cc:386
-msgid "Reading file list"
-msgstr "A ler a lista de paquetes"
-
 #: apt-inst/deb/dpkgdb.cc:443
 #, c-format
 msgid "Failed to find a Package: header, offset %lu"
@@ -1680,12 +1676,12 @@ msgstr "Non se atopou o disco"
 msgid "File not found"
 msgstr "Non se atopou o ficheiro"
 
-#: methods/copy.cc:42 methods/gpgv.cc:269 methods/gzip.cc:133
+#: methods/copy.cc:42 methods/gpgv.cc:275 methods/gzip.cc:133
 #: methods/gzip.cc:142
 msgid "Failed to stat"
 msgstr "Non se atopou"
 
-#: methods/copy.cc:79 methods/gpgv.cc:266 methods/gzip.cc:139
+#: methods/copy.cc:79 methods/gpgv.cc:272 methods/gzip.cc:139
 msgid "Failed to set modification time"
 msgstr "Non se puido estabrecer a hora de modificación"
 
@@ -1837,7 +1833,7 @@ msgstr "A transferencia de datos fallou, o servidor dixo \"%s\""
 msgid "Query"
 msgstr "Petición"
 
-#: methods/ftp.cc:1106
+#: methods/ftp.cc:1109
 msgid "Unable to invoke "
 msgstr "Non se puido chamar a "
 
@@ -1866,72 +1862,75 @@ msgstr "Non se pode iniciar a conexión a %s:%s (%s)."
 msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr "Non se puido conectar a %s:%s (%s), a conexión esgotou o tempo"
 
-#: methods/connect.cc:106
+#: methods/connect.cc:108
 #, c-format
 msgid "Could not connect to %s:%s (%s)."
 msgstr "Non se puido conectar a %s:%s (%s)."
 
 #. We say this mainly because the pause here is for the
 #. ssh connection that is still going
-#: methods/connect.cc:134 methods/rsh.cc:425
+#: methods/connect.cc:136 methods/rsh.cc:425
 #, c-format
 msgid "Connecting to %s"
 msgstr "A conectar a %s"
 
-#: methods/connect.cc:165
+#: methods/connect.cc:167
 #, c-format
 msgid "Could not resolve '%s'"
 msgstr "Non se puido resolver \"%s\""
 
-#: methods/connect.cc:171
+#: methods/connect.cc:173
 #, c-format
 msgid "Temporary failure resolving '%s'"
 msgstr "Fallo temporal ao resolver \"%s\""
 
-#: methods/connect.cc:174
+#: methods/connect.cc:176
 #, c-format
 msgid "Something wicked happened resolving '%s:%s' (%i)"
 msgstr "Algo estraño ocorreu ao resolver \"%s:%s\" (%i)"
 
-#: methods/connect.cc:221
+#: methods/connect.cc:223
 #, c-format
 msgid "Unable to connect to %s %s:"
 msgstr "Non se pode conectar a %s %s:"
 
-#: methods/gpgv.cc:92
+#: methods/gpgv.cc:64
+#, c-format
+msgid "Couldn't access keyring: '%s'"
+msgstr "Non se puido acceder ao chaveiro: \"%s\""
+
+#: methods/gpgv.cc:99
 msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
 msgstr ""
 "E: A lista de argumentos de Acquire:gpgv::Options é longa de máis. Sáese."
 
-#: methods/gpgv.cc:191
+#: methods/gpgv.cc:198
 msgid ""
 "Internal error: Good signature, but could not determine key fingerprint?!"
 msgstr ""
 "Erro interno: Sinatura correcta, pero non se puido determinar a pegada "
 "dixital da chave"
 
-#: methods/gpgv.cc:196
+#: methods/gpgv.cc:203
 msgid "At least one invalid signature was encountered."
 msgstr "Atopouse alomenos unha sinatura non válida."
 
-#. FIXME String concatenation considered harmful.
-#: methods/gpgv.cc:201
-msgid "Could not execute "
-msgstr "Non se puido executar "
-
-#: methods/gpgv.cc:202
-msgid " to verify signature (is gnupg installed?)"
-msgstr " para verificar a sinatura (¿está gnupg instalado?)"
+#: methods/gpgv.cc:207
+#, c-format
+msgid "Could not execute '%s' to verify signature (is gnupg installed?)"
+msgstr ""
+"Non se puido executar \"%s\" para verificar a sinatura (¿está gnupg "
+"instalado?)"
 
-#: methods/gpgv.cc:206
+#: methods/gpgv.cc:212
 msgid "Unknown error executing gpgv"
 msgstr "Erro descoñecido ao executar gpgv"
 
-#: methods/gpgv.cc:237
+#: methods/gpgv.cc:243
 msgid "The following signatures were invalid:\n"
 msgstr "As seguintes sinaturas non eran válidas:\n"
 
-#: methods/gpgv.cc:244
+#: methods/gpgv.cc:250
 msgid ""
 "The following signatures couldn't be verified because the public key is not "
 "available:\n"
@@ -2310,12 +2309,12 @@ msgstr "Versións candidatas"
 msgid "Dependency generation"
 msgstr "Xeración de dependencias"
 
-#: apt-pkg/tagfile.cc:73
+#: apt-pkg/tagfile.cc:72
 #, c-format
 msgid "Unable to parse package file %s (1)"
 msgstr "Non se pode analizar o ficheiro de paquetes %s (1)"
 
-#: apt-pkg/tagfile.cc:160
+#: apt-pkg/tagfile.cc:102
 #, c-format
 msgid "Unable to parse package file %s (2)"
 msgstr "Non se pode analizar o ficheiro de paquetes %s (2)"
@@ -2415,10 +2414,17 @@ msgstr "O directorio de listas %spartial falla."
 msgid "Archive directory %spartial is missing."
 msgstr "O directorio de arquivos %spartial falla."
 
-#: apt-pkg/acquire.cc:821
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc:823
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr "A obter o ficheiro %li de %li (fallan %s)"
+
+#: apt-pkg/acquire.cc:825
 #, c-format
-msgid "Downloading file %li of %li (%s remaining)"
-msgstr "A descargar o ficheiro %li de %li (fallan %s)"
+msgid "Retrieving file %li of %li"
+msgstr "A obter o ficheiro %li de %li"
 
 #: apt-pkg/acquire-worker.cc:113
 #, c-format
@@ -2562,16 +2568,16 @@ msgstr "Erro de E/S ao gravar a caché de fontes"
 msgid "rename failed, %s (%s -> %s)."
 msgstr "fallou o cambio de nome, %s (%s -> %s)."
 
-#: apt-pkg/acquire-item.cc:236 apt-pkg/acquire-item.cc:950
+#: apt-pkg/acquire-item.cc:236 apt-pkg/acquire-item.cc:945
 msgid "MD5Sum mismatch"
 msgstr "Os MD5Sum non coinciden"
 
-#: apt-pkg/acquire-item.cc:645
+#: apt-pkg/acquire-item.cc:640
 msgid "There are no public key available for the following key IDs:\n"
 msgstr ""
 "Non hai unha clave pública dispoñible para os seguintes IDs de clave:\n"
 
-#: apt-pkg/acquire-item.cc:758
+#: apt-pkg/acquire-item.cc:753
 #, c-format
 msgid ""
 "I wasn't able to locate a file for the %s package. This might mean you need "
@@ -2580,7 +2586,7 @@ msgstr ""
 "Non se puido atopar un ficheiro para o paquete %s. Isto pode significar que "
 "ten que arranxar este paquete a man. (Falla a arquitectura)"
 
-#: apt-pkg/acquire-item.cc:817
+#: apt-pkg/acquire-item.cc:812
 #, c-format
 msgid ""
 "I wasn't able to locate file for the %s package. This might mean you need to "
@@ -2589,7 +2595,7 @@ msgstr ""
 "Non se puido atopar un ficheiro para o paquete %s. Isto pode significar que "
 "ten que arranxar este paquete a man."
 
-#: apt-pkg/acquire-item.cc:853
+#: apt-pkg/acquire-item.cc:848
 #, c-format
 msgid ""
 "The package index files are corrupted. No Filename: field for package %s."
@@ -2597,7 +2603,7 @@ msgstr ""
 "Os ficheiros de índices de paquetes están corrompidos. Non hai un campo "
 "Filename: para o paquete %s."
 
-#: apt-pkg/acquire-item.cc:940
+#: apt-pkg/acquire-item.cc:935
 msgid "Size mismatch"
 msgstr "Os tamaños non coinciden"
 
@@ -2745,15 +2751,26 @@ msgstr "Eliminouse %s"
 
 #: apt-pkg/deb/dpkgpm.cc:378
 #, c-format
-msgid "Preparing for remove with config %s"
-msgstr "A se preparar para a eliminación con config %s"
+msgid "Preparing to completely remove %s"
+msgstr "A se preparar para eliminar %s completamente"
 
 #: apt-pkg/deb/dpkgpm.cc:379
 #, c-format
-msgid "Removed with config %s"
-msgstr "Eliminouse con config %s"
+msgid "Completely removed %s"
+msgstr "Eliminouse %s completamente"
 
 #: methods/rsh.cc:330
 msgid "Connection closed prematurely"
 msgstr "A conexión pechouse prematuramente"
 
+#~ msgid "Reading file list"
+#~ msgstr "A ler a lista de paquetes"
+
+#~ msgid "Could not execute "
+#~ msgstr "Non se puido executar "
+
+#~ msgid "Preparing for remove with config %s"
+#~ msgstr "A se preparar para a eliminación con config %s"
+
+#~ msgid "Removed with config %s"
+#~ msgstr "Eliminouse con config %s"

Разлика између датотеке није приказан због своје велике величине
+ 294 - 276
po/hu.po


+ 72 - 80
po/pt.po

@@ -1,14 +1,13 @@
 # Debian-PT translation for apt.
 # Copyright (C) 2004 Free Software Foundation, Inc.
-# Miguel Figueiredo <elmig@debianpt.org>, 2003.
-# 2005-03-07 - Miguel Figueiredo <elmig@debianpt.org> - Fxed 1 new fuzzy.
+# Miguel Figueiredo <elmig@debianpt.org>, 2005, 2006.
 msgid ""
 msgstr ""
 "Project-Id-Version: apt\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2006-01-20 14:01+0100\n"
 "PO-Revision-Date: 2005-03-07 22:20+0000\n"
-"Last-Translator: Miguel Figueiredo <elmig@debianpt.org>\n"
+"Last-Translator: Rui Az. <astronomy@mail.pt>\n"
 "Language-Team: Portuguese <traduz@debianpt.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -102,7 +101,7 @@ msgstr "Ficheiros de Pacotes :"
 #: cmdline/apt-cache.cc:1469 cmdline/apt-cache.cc:1555
 msgid "Cache is out of sync, can't x-ref a package file"
 msgstr ""
-"a cache está dessíncronizada, não pode x-referênciar um ficheiro de pacote"
+"A cache está dessincronizada, não pode x-referenciar um ficheiro de pacote"
 
 #: cmdline/apt-cache.cc:1470
 #, c-format
@@ -230,17 +229,15 @@ msgstr ""
 #: cmdline/apt-cdrom.cc:78
 msgid "Please provide a name for this Disc, such as 'Debian 2.1r1 Disk 1'"
 msgstr ""
+"Por favor forneça um nome para este Disco, tal como 'Debian 2.1r1 Disco 1'"
 
 #: cmdline/apt-cdrom.cc:93
-#, fuzzy
 msgid "Please insert a Disc in the drive and press enter"
-msgstr ""
-"Troca de mídia: Por favor insira o disco nomeado '%s' no drive '%s' e "
-"pressione enter\n"
+msgstr "Por favor insira um Disco no leitor e pressione enter"
 
 #: cmdline/apt-cdrom.cc:117
 msgid "Repeat this process for the rest of the CDs in your set."
-msgstr ""
+msgstr "Repita este processo para o resto dos CDs no seu conjunto."
 
 #: cmdline/apt-config.cc:41
 msgid "Arguments not in pairs"
@@ -399,7 +396,7 @@ msgstr ""
 "árvore de .dscs. A opção --source-override pode ser utilizada para \n"
 "especificar um ficheiro override de fontes\n"
 "\n"
-"Os comandos 'packages' e 'sources' devem ser executados na raíz da \n"
+"Os comandos 'packages' e 'sources' devem ser executados na raiz da \n"
 "árvore. CaminhoBinário deve apontar para a base de procura recursiva \n"
 "e o ficheiro override deve conter as flags override. CaminhoPrefixo é \n"
 "incluído aos campos filename caso esteja presente. Exemplo de uso do \n"
@@ -704,14 +701,12 @@ msgid "%s (due to %s) "
 msgstr "%s (devido a %s) "
 
 #: cmdline/apt-get.cc:546
-#, fuzzy
 msgid ""
 "WARNING: The following essential packages will be removed.\n"
 "This should NOT be done unless you know exactly what you are doing!"
 msgstr ""
-"AVISO: Os seguintes pacotes essenciais serão removidos\n"
-"Isso NÃO deve ser feito a menos que você saiba exactamente o que está a "
-"fazer!"
+"AVISO: Os seguintes pacotes essenciais serão removidos.\n"
+"Isso NÃO deverá ser feito a menos que saiba exactamente o que está a fazer!"
 
 #: cmdline/apt-get.cc:577
 #, c-format
@@ -772,7 +767,7 @@ msgstr "AVISO: Os seguintes pacotes não podem ser autenticados"
 
 #: cmdline/apt-get.cc:693
 msgid "Authentication warning overridden.\n"
-msgstr ""
+msgstr "Aviso de autenticação ultrapassado.\n"
 
 #: cmdline/apt-get.cc:700
 msgid "Install these packages without verification [y/N]? "
@@ -780,7 +775,7 @@ msgstr "Instalar estes pacotes sem verificação [y/N]? "
 
 #: cmdline/apt-get.cc:702
 msgid "Some packages could not be authenticated"
-msgstr "Alguns pacotes não poderam ser autenticados"
+msgstr "Alguns pacotes não puderam ser autenticados"
 
 #: cmdline/apt-get.cc:711 cmdline/apt-get.cc:858
 msgid "There are problems and -y was used without --force-yes"
@@ -788,16 +783,15 @@ msgstr "Há problemas e -y foi usado sem --force-yes"
 
 #: cmdline/apt-get.cc:755
 msgid "Internal error, InstallPackages was called with broken packages!"
-msgstr ""
+msgstr "Erro Interno, InstallPackages foi chamado com pacotes estragados!"
 
 #: cmdline/apt-get.cc:764
 msgid "Packages need to be removed but remove is disabled."
 msgstr "Pacotes precisam de ser removidos mas Remove está desabilitado."
 
 #: cmdline/apt-get.cc:775
-#, fuzzy
 msgid "Internal error, Ordering didn't finish"
-msgstr "Erro Interno ao adicionar um desvio"
+msgstr "Erro Interno, Ordering não terminou"
 
 #: cmdline/apt-get.cc:791 cmdline/apt-get.cc:1809 cmdline/apt-get.cc:1842
 msgid "Unable to lock the download directory"
@@ -811,6 +805,7 @@ msgstr "A lista de fontes não pôde ser lida."
 #: cmdline/apt-get.cc:816
 msgid "How odd.. The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
+"Estranho.. Os tamanhos não coincidiram, escreva para apt@packages.debian.org"
 
 #: cmdline/apt-get.cc:821
 #, c-format
@@ -826,7 +821,7 @@ msgstr "É necessário fazer o download de %sB de arquivos.\n"
 #, c-format
 msgid "After unpacking %sB of additional disk space will be used.\n"
 msgstr ""
-"Depois descompactar, %sB adicionais de espaço em disco serão utilizados.\n"
+"Depois de descompactar, %sB adicionais de espaço em disco serão utilizados.\n"
 
 #: cmdline/apt-get.cc:832
 #, c-format
@@ -834,9 +829,9 @@ msgid "After unpacking %sB disk space will be freed.\n"
 msgstr "Depois de descompactar, %sB de espaço em disco serão libertados.\n"
 
 #: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1980
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't determine free space in %s"
-msgstr "Desculpe, você não tem espaço suficiente em %s"
+msgstr "Impossível de determinar espaço livre em %s"
 
 #: cmdline/apt-get.cc:849
 #, c-format
@@ -852,13 +847,13 @@ msgid "Yes, do as I say!"
 msgstr "Sim, faça como eu digo!"
 
 #: cmdline/apt-get.cc:868
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "You are about to do something potentially harmful.\n"
 "To continue type in the phrase '%s'\n"
 " ?] "
 msgstr ""
-"Você está prestes a fazer algo potencialmente prejudicial\n"
+"Você está prestes a fazer algo potencialmente nocivo.\n"
 "Para continuar escreva a frase '%s'\n"
 " ?] "
 
@@ -929,7 +924,7 @@ msgstr " [Instalado]"
 
 #: cmdline/apt-get.cc:1086
 msgid "You should explicitly select one to install."
-msgstr "Você deve selecionar explicitamente um para instalar."
+msgstr "Você deve seleccionar explicitamente um para instalar."
 
 #: cmdline/apt-get.cc:1091
 #, c-format
@@ -944,7 +939,7 @@ msgstr ""
 
 #: cmdline/apt-get.cc:1110
 msgid "However the following packages replace it:"
-msgstr "No entanto, os seguintes pacotes substituem-o:"
+msgstr "No entanto, os seguintes pacotes substituem-no:"
 
 #: cmdline/apt-get.cc:1113
 #, c-format
@@ -1029,7 +1024,7 @@ msgid ""
 msgstr ""
 "Alguns pacotes não puderam ser instalados. Isso pode significar que\n"
 "você solicitou uma situação impossível ou se você está a usar a\n"
-"distribuição instável, que alguns pacotes requesitados ainda não foram \n"
+"distribuição instável, que alguns pacotes requisitados ainda não foram \n"
 "criados ou foram tirados do Incoming."
 
 #: cmdline/apt-get.cc:1578
@@ -1038,7 +1033,7 @@ msgid ""
 "the package is simply not installable and a bug report against\n"
 "that package should be filed."
 msgstr ""
-"Já que você requisitou uma única operação é extremamanete provável que o \n"
+"Já que você requisitou uma única operação é extremamente provável que o \n"
 "pacote esteja simplesmente não instalável e deve ser enviado um relatório "
 "de\n"
 "bug sobre esse pacote."
@@ -1076,9 +1071,8 @@ msgid "Done"
 msgstr "Pronto"
 
 #: cmdline/apt-get.cc:1777 cmdline/apt-get.cc:1785
-#, fuzzy
 msgid "Internal error, problem resolver broke stuff"
-msgstr "Erro Interno, AllUpgrade quebrou as coisas"
+msgstr "Erro Interno, o solucionador de problemas estragou coisas"
 
 #: cmdline/apt-get.cc:1885
 msgid "Must specify at least one package to fetch source for"
@@ -1091,10 +1085,9 @@ msgid "Unable to find a source package for %s"
 msgstr "Impossível encontrar um pacote de código fonte para %s"
 
 #: cmdline/apt-get.cc:1959
-#, fuzzy, c-format
+#, c-format
 msgid "Skipping already downloaded file '%s'\n"
-msgstr ""
-"Saltando a descompactação de pacote código fonte já descompactado em %s\n"
+msgstr "Saltando ficheiro do qual já havia sido feito download '%s'\n"
 
 #: cmdline/apt-get.cc:1983
 #, c-format
@@ -1134,7 +1127,7 @@ msgstr "O comando de descompactação '%s' falhou.\n"
 #: cmdline/apt-get.cc:2069
 #, c-format
 msgid "Check if the 'dpkg-dev' package is installed.\n"
-msgstr ""
+msgstr "Verifique se o pacote 'dpkg-dev' está instalado.\n"
 
 #: cmdline/apt-get.cc:2086
 #, c-format
@@ -1167,7 +1160,7 @@ msgid ""
 "%s dependency for %s cannot be satisfied because the package %s cannot be "
 "found"
 msgstr ""
-"a dependência de %s  por %s não pôde ser satisfeita porque o pacote %s não "
+"a dependência de %s por %s não pôde ser satisfeita porque o pacote %s não "
 "pôde ser encontrado"
 
 #: cmdline/apt-get.cc:2273
@@ -1177,7 +1170,7 @@ msgid ""
 "package %s can satisfy version requirements"
 msgstr ""
 "a dependência de %s por %s não pode ser satisfeita porque nenhuma versão "
-"disponível do pacote %s pode satisfazer os requesitos de versão"
+"disponível do pacote %s pode satisfazer os requisitos de versão"
 
 #: cmdline/apt-get.cc:2308
 #, c-format
@@ -1424,7 +1417,7 @@ msgstr "Arquivo é demasiado pequeno"
 
 #: apt-inst/contrib/arfile.cc:135
 msgid "Failed to read the archive headers"
-msgstr "Falha ao ler os cabeçahos do arquivo"
+msgstr "Falha ao ler os cabeçalhos do arquivo"
 
 #: apt-inst/filelist.cc:384
 msgid "DropNode called on still linked node"
@@ -1445,7 +1438,7 @@ msgstr "Erro Interno em AddDiversion"
 #: apt-inst/filelist.cc:481
 #, c-format
 msgid "Trying to overwrite a diversion, %s -> %s and %s/%s"
-msgstr "Tentando sobreescrever um desvio, %s -> %s e %s/%s"
+msgstr "Tentando sobrescrever um desvio, %s -> %s e %s/%s"
 
 #: apt-inst/filelist.cc:510
 #, c-format
@@ -1458,7 +1451,7 @@ msgid "Duplicate conf file %s/%s"
 msgstr "Arquivo de configuração duplicado %s/%s"
 
 #: apt-inst/dirstream.cc:45 apt-inst/dirstream.cc:50 apt-inst/dirstream.cc:53
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to write file %s"
 msgstr "Falha ao escrever ficheiro %s"
 
@@ -1494,7 +1487,7 @@ msgstr "O caminho de desvio é muito longo"
 #: apt-inst/extract.cc:243
 #, c-format
 msgid "The directory %s is being replaced by a non-directory"
-msgstr "O directório %s está sendo substituído por um não-diretório"
+msgstr "O directório %s está sendo substituído por um não-directório"
 
 #: apt-inst/extract.cc:283
 msgid "Failed to locate node in its hash bucket"
@@ -1512,7 +1505,7 @@ msgstr "Sobreescrita de pacote não coincide com nenhuma versão para %s"
 #: apt-inst/extract.cc:434
 #, c-format
 msgid "File %s/%s overwrites the one in the package %s"
-msgstr "Ficheiro %s/%s sobreescreve o que está no pacote %s"
+msgstr "Ficheiro %s/%s sobrescreve o que está no pacote %s"
 
 #: apt-inst/extract.cc:467 apt-pkg/contrib/configuration.cc:750
 #: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/sourcelist.cc:324
@@ -1678,9 +1671,8 @@ msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
 msgstr "Impossível desmontar o CD-ROM em %s, o mesmo ainda pode estar em uso."
 
 #: methods/cdrom.cc:169
-#, fuzzy
 msgid "Disk not found."
-msgstr "Arquivo não encontrado"
+msgstr "Disco não encontrado"
 
 #: methods/cdrom.cc:177 methods/file.cc:79 methods/rsh.cc:264
 msgid "File not found"
@@ -1869,7 +1861,7 @@ msgstr "Não posso iniciar a ligação para %s:%s (%s)."
 #: methods/connect.cc:93
 #, c-format
 msgid "Could not connect to %s:%s (%s), connection timed out"
-msgstr "Não foi possível ligarar em %s:%s (%s), a conexão expirou"
+msgstr "Não foi possível ligar a %s:%s (%s), a conexão expirou"
 
 #: methods/connect.cc:106
 #, c-format
@@ -1905,41 +1897,43 @@ msgstr "Impossível ligar a %s %s:"
 
 #: methods/gpgv.cc:92
 msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
-msgstr ""
+msgstr "E: A lista de argumentos de Acquire::gpgv::Options é demasiado longa. A sair."
 
 #: methods/gpgv.cc:191
 msgid ""
 "Internal error: Good signature, but could not determine key fingerprint?!"
 msgstr ""
+"Erro interno: Assinatura válida, mas não foi possível determinar a impressão "
+"digital da chave?!"
 
 #: methods/gpgv.cc:196
 msgid "At least one invalid signature was encountered."
-msgstr ""
+msgstr "Pelo menos uma assinatura inválida foi encontrada."
 
 #. FIXME String concatenation considered harmful.
 #: methods/gpgv.cc:201
-#, fuzzy
 msgid "Could not execute "
-msgstr "Não foi possível obter lock %s"
+msgstr "Impossível de executar "
 
 #: methods/gpgv.cc:202
 msgid " to verify signature (is gnupg installed?)"
-msgstr ""
+msgstr " para verificar assinatura (gnupg instalado?)"
 
 #: methods/gpgv.cc:206
 msgid "Unknown error executing gpgv"
-msgstr ""
+msgstr "Erro desconhecido ao executar gpgv"
 
 #: methods/gpgv.cc:237
-#, fuzzy
 msgid "The following signatures were invalid:\n"
-msgstr "Os seguintes pacotes extra serão instalados:"
+msgstr "As seguintes assinaturas estavam inválidas:\n"
 
 #: methods/gpgv.cc:244
 msgid ""
 "The following signatures couldn't be verified because the public key is not "
 "available:\n"
 msgstr ""
+"As seguintes assinaturas não puderam ser verificadas porque a chave pública "
+"não está disponível:\n"
 
 #: methods/gzip.cc:57
 #, c-format
@@ -2364,7 +2358,7 @@ msgid "Malformed line %u in source list %s (type)"
 msgstr "Linha malformada %u na lista de fontes %s (tipo)"
 
 #: apt-pkg/sourcelist.cc:244
-#, fuzzy, c-format
+#, c-format
 msgid "Type '%s' is not known on line %u in source list %s"
 msgstr "O tipo '%s' não é conhecido na linha %u na lista de fontes %s"
 
@@ -2418,12 +2412,12 @@ msgstr "Falta directório de listas %spartial."
 #: apt-pkg/acquire.cc:66
 #, c-format
 msgid "Archive directory %spartial is missing."
-msgstr "Falta o diretório de repositório %spartial."
+msgstr "Falta o directório de repositório %spartial."
 
 #: apt-pkg/acquire.cc:821
 #, c-format
 msgid "Downloading file %li of %li (%s remaining)"
-msgstr ""
+msgstr "A efectuar download de ficheiro %li de %li (%s restantes)"
 
 #: apt-pkg/acquire-worker.cc:113
 #, c-format
@@ -2436,12 +2430,10 @@ msgid "Method %s did not start correctly"
 msgstr "Método %s não iniciou corretamente"
 
 #: apt-pkg/acquire-worker.cc:377
-#, fuzzy, c-format
+#, c-format
 msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
 msgstr ""
-"Troca de mídia: Por favor insira o disco chamado\n"
-" '%s'\n"
-"na drive '%s' e pressione enter\n"
+"Por favor insira o disco denominado: '%s' no leitor '%s' e pressione enter."
 
 #: apt-pkg/init.cc:120
 #, c-format
@@ -2465,7 +2457,7 @@ msgstr "Você deve colocar alguns URIs 'source' no seu sources.list"
 #: apt-pkg/cachefile.cc:73
 msgid "The package lists or status file could not be parsed or opened."
 msgstr ""
-"As listas de pacotes ou o ficheiro de status não pôde ser analizado ou "
+"As listas de pacotes ou o ficheiro de status não pôde ser analisado ou "
 "aberto."
 
 #: apt-pkg/cachefile.cc:77
@@ -2580,7 +2572,7 @@ msgstr "MD5Sum incorreto"
 
 #: apt-pkg/acquire-item.cc:645
 msgid "There are no public key available for the following key IDs:\n"
-msgstr ""
+msgstr "Não existe qualquer chave pública disponível para as seguintes IDs de chave:\n"
 
 #: apt-pkg/acquire-item.cc:758
 #, c-format
@@ -2589,7 +2581,7 @@ msgid ""
 "to manually fix this package. (due to missing arch)"
 msgstr ""
 "Não foi possível localizar um arquivo para o pacote %s. Isto pode significar "
-"que você precisa consertar manualmente este pacote. (devido a arquitetura "
+"que você precisa consertar manualmente este pacote. (devido a arquitectura "
 "não especificada)."
 
 #: apt-pkg/acquire-item.cc:817
@@ -2611,7 +2603,7 @@ msgstr ""
 
 #: apt-pkg/acquire-item.cc:940
 msgid "Size mismatch"
-msgstr "Tamanho incorreto"
+msgstr "Tamanho incorrecto"
 
 #: apt-pkg/vendorlist.cc:66
 #, c-format
@@ -2715,54 +2707,54 @@ msgstr ""
 "coincidentes\n"
 
 #: apt-pkg/deb/dpkgpm.cc:358
-#, fuzzy, c-format
+#, c-format
 msgid "Preparing %s"
-msgstr "Abrindo %s"
+msgstr "A preparar %s"
 
 #: apt-pkg/deb/dpkgpm.cc:359
-#, fuzzy, c-format
+#, c-format
 msgid "Unpacking %s"
-msgstr "Abrindo %s"
+msgstr "A desempacotar %s"
 
 #: apt-pkg/deb/dpkgpm.cc:364
-#, fuzzy, c-format
+#, c-format
 msgid "Preparing to configure %s"
-msgstr "Abrindo ficheiro de configuração %s"
+msgstr "A preparar para configurar %s"
 
 #: apt-pkg/deb/dpkgpm.cc:365
-#, fuzzy, c-format
+#, c-format
 msgid "Configuring %s"
-msgstr "Ligando a %s"
+msgstr "A configurar %s"
 
 #: apt-pkg/deb/dpkgpm.cc:366
-#, fuzzy, c-format
+#, c-format
 msgid "Installed %s"
-msgstr "  Instalado: "
+msgstr "%s instalado"
 
 #: apt-pkg/deb/dpkgpm.cc:371
 #, c-format
 msgid "Preparing for removal of %s"
-msgstr ""
+msgstr "A preparar para remoção de %s"
 
 #: apt-pkg/deb/dpkgpm.cc:372
-#, fuzzy, c-format
+#, c-format
 msgid "Removing %s"
-msgstr "Abrindo %s"
+msgstr "A remover %s"
 
 #: apt-pkg/deb/dpkgpm.cc:373
-#, fuzzy, c-format
+#, c-format
 msgid "Removed %s"
-msgstr "Recomenda"
+msgstr "%s removido"
 
 #: apt-pkg/deb/dpkgpm.cc:378
 #, c-format
 msgid "Preparing for remove with config %s"
-msgstr ""
+msgstr "A preparar para remover com a configuração %s"
 
 #: apt-pkg/deb/dpkgpm.cc:379
 #, c-format
 msgid "Removed with config %s"
-msgstr ""
+msgstr "Removido com a configuração %s"
 
 #: methods/rsh.cc:330
 msgid "Connection closed prematurely"

+ 88 - 117
po/ro.po

@@ -1,19 +1,19 @@
 # translation of apt_ro.po to Romanian
 # This file is put in the public domain.
-# Sorin Batariuc <sorin@bonbon.net>, 2004, 2005.
 #
+# Sorin Batariuc <sorin@bonbon.net>, 2004, 2005, 2006.
 msgid ""
 msgstr ""
-"Project-Id-Version: apt_po_ro\n"
+"Project-Id-Version: apt_nou\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2006-01-20 14:01+0100\n"
-"PO-Revision-Date: 2005-08-25 17:43+0300\n"
+"PO-Revision-Date: 2006-02-27 11:59+0200\n"
 "Last-Translator: Sorin Batariuc <sorin@bonbon.net>\n"
 "Language-Team: Romanian <debian-l10-romanian@lists.debian.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9.1\n"
+"X-Generator: KBabel 1.11.2\n"
 "Plural-Forms:  nplurals=2; plural=(n != 1);\n"
 
 #: cmdline/apt-cache.cc:135
@@ -230,19 +230,15 @@ msgstr ""
 
 #: cmdline/apt-cdrom.cc:78
 msgid "Please provide a name for this Disc, such as 'Debian 2.1r1 Disk 1'"
-msgstr ""
+msgstr "Vă rog furnizaţi un nume pentru acest disc, cum ar fi 'Debian 2.1r1 Disk 1'"
 
 #: cmdline/apt-cdrom.cc:93
-#, fuzzy
 msgid "Please insert a Disc in the drive and press enter"
-msgstr ""
-"Schimbare de mediu: Vă rog introduceţi discul numit\n"
-" '%s'\n"
-"în unitatea '%s' şi apăsaţi Enter\n"
+msgstr "Vă rog introduceţi un disc în unitate şi apăsaţi Enter"
 
 #: cmdline/apt-cdrom.cc:117
 msgid "Repeat this process for the rest of the CDs in your set."
-msgstr ""
+msgstr "Repetaţi această procedură pentru restul CD-urilor."
 
 #: cmdline/apt-config.cc:41
 msgid "Arguments not in pairs"
@@ -713,12 +709,11 @@ msgid "%s (due to %s) "
 msgstr "%s (datorită %s) "
 
 #: cmdline/apt-get.cc:546
-#, fuzzy
 msgid ""
 "WARNING: The following essential packages will be removed.\n"
 "This should NOT be done unless you know exactly what you are doing!"
 msgstr ""
-"AVERTISMENT: Următoarele pachete esenţiale vor fi şterse\n"
+"AVERTISMENT: Următoarele pachete esenţiale vor fi şterse.\n"
 "Aceasta NU ar trebui făcută decât dacă ştiţi exact ce vreţi!"
 
 #: cmdline/apt-get.cc:577
@@ -780,7 +775,7 @@ msgstr "AVERTISMENT: Următoarele pachete nu pot fi autentificate!"
 
 #: cmdline/apt-get.cc:693
 msgid "Authentication warning overridden.\n"
-msgstr ""
+msgstr "Avertisment de autentificare înlocuit.\n"
 
 #: cmdline/apt-get.cc:700
 msgid "Install these packages without verification [y/N]? "
@@ -796,16 +791,15 @@ msgstr "Sunt unele probleme şi -y a fost folosit fără --force-yes"
 
 #: cmdline/apt-get.cc:755
 msgid "Internal error, InstallPackages was called with broken packages!"
-msgstr ""
+msgstr "Eroare internă, InstallPackages a fost apelat cu pachete deteriorate!"
 
 #: cmdline/apt-get.cc:764
 msgid "Packages need to be removed but remove is disabled."
 msgstr "Pachete trebuiesc şterse dar ştergerea este dezactivată."
 
 #: cmdline/apt-get.cc:775
-#, fuzzy
 msgid "Internal error, Ordering didn't finish"
-msgstr "Eroare internă în timpul adăugării unei diversiuni"
+msgstr "Eroare internă, Ordering nu s-a terminat"
 
 #: cmdline/apt-get.cc:791 cmdline/apt-get.cc:1809 cmdline/apt-get.cc:1842
 msgid "Unable to lock the download directory"
@@ -818,7 +812,7 @@ msgstr "Lista surselor nu poate fi citită."
 
 #: cmdline/apt-get.cc:816
 msgid "How odd.. The sizes didn't match, email apt@packages.debian.org"
-msgstr ""
+msgstr "Ce ciudat.. Dimensiunile nu se potrivesc, scrieţi la apt@packages.debian.org"
 
 #: cmdline/apt-get.cc:821
 #, c-format
@@ -841,9 +835,9 @@ msgid "After unpacking %sB disk space will be freed.\n"
 msgstr "După despachetare va fi eliberat %sB din spaţiul de pe disc.\n"
 
 #: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1980
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't determine free space in %s"
-msgstr "Nu aveţi suficient spaţiu în %s"
+msgstr "N-am putut determina spaţiul disponibil în %s"
 
 #: cmdline/apt-get.cc:849
 #, c-format
@@ -852,21 +846,20 @@ msgstr "Nu aveţi suficient spaţiu în %s."
 
 #: cmdline/apt-get.cc:864 cmdline/apt-get.cc:884
 msgid "Trivial Only specified but this is not a trivial operation."
-msgstr ""
-"A fost specificat 'doar neimportant' dar nu este o operaţiune neimportantă."
+msgstr "A fost specificat 'doar neimportant' dar nu este o operaţiune neimportantă."
 
 #: cmdline/apt-get.cc:866
 msgid "Yes, do as I say!"
 msgstr "Da, fă cum îţi spun!"
 
 #: cmdline/apt-get.cc:868
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "You are about to do something potentially harmful.\n"
 "To continue type in the phrase '%s'\n"
 " ?] "
 msgstr ""
-"Sunteţi pe cale de a face ceva cu potenţial distructiv\n"
+"Sunteţi pe cale de a face ceva cu potenţial distructiv.\n"
 "Pentru a continua tastaţi fraza '%s'\n"
 " ?] "
 
@@ -1082,9 +1075,8 @@ msgid "Done"
 msgstr "Terminat"
 
 #: cmdline/apt-get.cc:1777 cmdline/apt-get.cc:1785
-#, fuzzy
 msgid "Internal error, problem resolver broke stuff"
-msgstr "Eroare internă, înnoire totală a defectat diverse chestiuni"
+msgstr "Eroare internă, rezolvatorul de probleme a deteriorat diverse chestiuni"
 
 #: cmdline/apt-get.cc:1885
 msgid "Must specify at least one package to fetch source for"
@@ -1096,9 +1088,9 @@ msgid "Unable to find a source package for %s"
 msgstr "Nu pot găsi o sursă pachet pentru %s"
 
 #: cmdline/apt-get.cc:1959
-#, fuzzy, c-format
+#, c-format
 msgid "Skipping already downloaded file '%s'\n"
-msgstr "Sar peste despachetarea sursei deja despachetate în %s\n"
+msgstr "Sar peste fişierul deja descărcat '%s'\n"
 
 #: cmdline/apt-get.cc:1983
 #, c-format
@@ -1137,7 +1129,7 @@ msgstr "Comanda de despachetare '%s' eşuată.\n"
 #: cmdline/apt-get.cc:2069
 #, c-format
 msgid "Check if the 'dpkg-dev' package is installed.\n"
-msgstr ""
+msgstr "Verificaţi dacă pachetul 'dpkg-dev' este instalat.\n"
 
 #: cmdline/apt-get.cc:2086
 #, c-format
@@ -1370,17 +1362,14 @@ msgstr "S-au produs unele erori în timpul despachetării. Voi configura"
 
 #: dselect/install:101
 msgid "packages that were installed. This may result in duplicate errors"
-msgstr ""
-"pachetele care au fost instalate. Aceasta ar putea rezulta erori dublate"
+msgstr "pachetele care au fost instalate. Aceasta ar putea rezulta erori dublate"
 
 #: dselect/install:102
 msgid "or errors caused by missing dependencies. This is OK, only the errors"
-msgstr ""
-"sau erori cauzate de dependenţe lipsă. Aceasta este normal, doar erorile"
+msgstr "sau erori cauzate de dependenţe lipsă. Aceasta este normal, doar erorile"
 
 #: dselect/install:103
-msgid ""
-"above this message are important. Please fix them and run [I]nstall again"
+msgid "above this message are important. Please fix them and run [I]nstall again"
 msgstr ""
 "de deasupra acestui mesaj sunt importante. Vă rog corectaţi-le şi porniţi "
 "din nou [I]nstalarea"
@@ -1462,9 +1451,9 @@ msgid "Duplicate conf file %s/%s"
 msgstr "Fişier de configurare duplicat %s/%s"
 
 #: apt-inst/dirstream.cc:45 apt-inst/dirstream.cc:50 apt-inst/dirstream.cc:53
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to write file %s"
-msgstr "Eşuare în a scrie fişierul %s"
+msgstr "Eşuare în scrierea fişierului %s"
 
 #: apt-inst/dirstream.cc:96 apt-inst/dirstream.cc:104
 #, c-format
@@ -1612,7 +1601,6 @@ msgid "Internal error adding a diversion"
 msgstr "Eroare internă în timpul adăugării unei diversiuni"
 
 #: apt-inst/deb/dpkgdb.cc:383
-#, fuzzy
 msgid "The pkg cache must be initialized first"
 msgstr "Cache-ul pachetului trebuie întâi iniţializat"
 
@@ -1685,9 +1673,8 @@ msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
 msgstr "Nu pot demonta CDROM-ul în %s, poate este încă utilizat."
 
 #: methods/cdrom.cc:169
-#, fuzzy
 msgid "Disk not found."
-msgstr "Fişier negăsit"
+msgstr "Disc negăsit."
 
 #: methods/cdrom.cc:177 methods/file.cc:79 methods/rsh.cc:264
 msgid "File not found"
@@ -1912,41 +1899,38 @@ msgstr "Nu pot conecta la %s %s"
 
 #: methods/gpgv.cc:92
 msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
-msgstr ""
+msgstr "E: Listă de argumente din Acquire::gpgv::Options prea lungă. Ies."
 
 #: methods/gpgv.cc:191
-msgid ""
-"Internal error: Good signature, but could not determine key fingerprint?!"
-msgstr ""
+msgid "Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr "Eroare internă: Semnătură corespunzătoare, dar n-am putut determina cheia amprentei digitale?!"
 
 #: methods/gpgv.cc:196
 msgid "At least one invalid signature was encountered."
-msgstr ""
+msgstr "Cel puţin o semnătură invalidă a fost întâlnită."
 
 #. FIXME String concatenation considered harmful.
 #: methods/gpgv.cc:201
-#, fuzzy
 msgid "Could not execute "
-msgstr "Nu pot determina blocajul %s"
+msgstr "Nu s-a putut executa "
 
 #: methods/gpgv.cc:202
 msgid " to verify signature (is gnupg installed?)"
-msgstr ""
+msgstr " verificarea semnăturii (este instalat gnupg?)"
 
 #: methods/gpgv.cc:206
 msgid "Unknown error executing gpgv"
-msgstr ""
+msgstr "Eroare necunoscută în timp ce se execută gpgv"
 
 #: methods/gpgv.cc:237
-#, fuzzy
 msgid "The following signatures were invalid:\n"
-msgstr "Următoarele extra pachete vor fi instalate:"
+msgstr "Următoarele semnături au fost invalide:\n"
 
 #: methods/gpgv.cc:244
 msgid ""
 "The following signatures couldn't be verified because the public key is not "
 "available:\n"
-msgstr ""
+msgstr "Următoarele semnături n-au putut fi verificate datorită cheii publice care este indisponibilă:\n"
 
 #: methods/gzip.cc:57
 #, c-format
@@ -2013,8 +1997,7 @@ msgstr "Eroare la scrierea în fişierul"
 
 #: methods/http.cc:874
 msgid "Error reading from server. Remote end closed connection"
-msgstr ""
-"Eroare la citirea de pe server, conexiunea a fost închisă de la distanţă"
+msgstr "Eroare la citirea de pe server, conexiunea a fost închisă de la distanţă"
 
 #: methods/http.cc:876
 msgid "Error reading from server"
@@ -2079,8 +2062,7 @@ msgstr "Eroare de sintaxă %s:%u: mizerii suplimentare după valoare"
 #: apt-pkg/contrib/configuration.cc:684
 #, c-format
 msgid "Syntax error %s:%u: Directives can only be done at the top level"
-msgstr ""
-"Eroare de sintaxă %s:%u: directivele pot fi date doar la nivelul superior"
+msgstr "Eroare de sintaxă %s:%u: directivele pot fi date doar la nivelul superior"
 
 #: apt-pkg/contrib/configuration.cc:691
 #, c-format
@@ -2136,8 +2118,7 @@ msgstr "Opţiunea %s necesită un argument"
 #: apt-pkg/contrib/cmndline.cc:201 apt-pkg/contrib/cmndline.cc:207
 #, c-format
 msgid "Option %s: Configuration item specification must have an =<val>."
-msgstr ""
-"Opţiunea %s: Specificaţia configurării articolului trebuie să aibă o =<val>."
+msgstr "Opţiunea %s: Specificaţia configurării articolului trebuie să aibă o =<val>."
 
 #: apt-pkg/contrib/cmndline.cc:237
 #, c-format
@@ -2372,7 +2353,7 @@ msgid "Malformed line %u in source list %s (type)"
 msgstr "Linie greşită %u în lista sursă %s (tip)"
 
 #: apt-pkg/sourcelist.cc:244
-#, fuzzy, c-format
+#, c-format
 msgid "Type '%s' is not known on line %u in source list %s"
 msgstr "Tipul '%s' nu este cunoscut în linia %u din lista sursă %s"
 
@@ -2400,10 +2381,8 @@ msgstr "Tipul de fişier index '%s' nu este suportat"
 
 #: apt-pkg/algorithms.cc:241
 #, c-format
-msgid ""
-"The package %s needs to be reinstalled, but I can't find an archive for it."
-msgstr ""
-"Pachetul %s are nevoie să fie reinstalat, dar nu pot găsi o arhivă pentru el."
+msgid "The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr "Pachetul %s are nevoie să fie reinstalat, dar nu pot găsi o arhivă pentru el."
 
 #: apt-pkg/algorithms.cc:1059
 msgid ""
@@ -2430,7 +2409,7 @@ msgstr "Directorul de arhive %spartial lipseşte."
 #: apt-pkg/acquire.cc:821
 #, c-format
 msgid "Downloading file %li of %li (%s remaining)"
-msgstr ""
+msgstr "Se descarcă fişierul %li din %li (%s rămas)"
 
 #: apt-pkg/acquire-worker.cc:113
 #, c-format
@@ -2443,12 +2422,9 @@ msgid "Method %s did not start correctly"
 msgstr "Metoda %s nu s-a lansat corect"
 
 #: apt-pkg/acquire-worker.cc:377
-#, fuzzy, c-format
+#, c-format
 msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
-msgstr ""
-"Schimbare de mediu: Vă rog introduceţi discul numit\n"
-" '%s'\n"
-"în unitatea '%s' şi apăsaţi Enter\n"
+msgstr "Vă rog introduceţi discul numit: '%s' în unitatea '%s' şi apăsaţi Enter."
 
 #: apt-pkg/init.cc:120
 #, c-format
@@ -2476,8 +2452,7 @@ msgstr ""
 
 #: apt-pkg/cachefile.cc:77
 msgid "You may want to run apt-get update to correct these problems"
-msgstr ""
-"Aţi putea vrea să porniţi 'apt-get update' pentru a corecta aceste probleme."
+msgstr "Aţi putea vrea să porniţi 'apt-get update' pentru a corecta aceste probleme."
 
 #: apt-pkg/policy.cc:269
 msgid "Invalid record in the preferences file, no Package header"
@@ -2497,39 +2472,39 @@ msgid "Cache has an incompatible versioning system"
 msgstr "Cache are un versioning system incompatibil"
 
 #: apt-pkg/pkgcachegen.cc:117
-#, fuzzy, c-format
+#, c-format
 msgid "Error occurred while processing %s (NewPackage)"
-msgstr "Eroare în timpul procesării %s (Pachet Nou)"
+msgstr "Eroare apărută în timpul procesării %s (NewPackage)"
 
 #: apt-pkg/pkgcachegen.cc:129
-#, fuzzy, c-format
+#, c-format
 msgid "Error occurred while processing %s (UsePackage1)"
-msgstr "Eroare în timpul procesării %s (UsePackage1)"
+msgstr "Eroare apărută în timpul procesării %s (UsePackage1)"
 
 #: apt-pkg/pkgcachegen.cc:150
-#, fuzzy, c-format
+#, c-format
 msgid "Error occurred while processing %s (UsePackage2)"
-msgstr "Eroare în timpul procesării %s (UsePackage2)"
+msgstr "Eroare apărută în timpul procesării %s (UsePackage2)"
 
 #: apt-pkg/pkgcachegen.cc:154
-#, fuzzy, c-format
+#, c-format
 msgid "Error occurred while processing %s (NewFileVer1)"
-msgstr "Eroare în timpul procesării %s (NewFileVer1)"
+msgstr "Eroare apărută în timpul procesării %s (NewFileVer1)"
 
 #: apt-pkg/pkgcachegen.cc:184
-#, fuzzy, c-format
+#, c-format
 msgid "Error occurred while processing %s (NewVersion1)"
-msgstr "Eroare în timpul procesării %s (NewVersion1)"
+msgstr "Eroare apărută în timpul procesării %s (NewVersion1)"
 
 #: apt-pkg/pkgcachegen.cc:188
-#, fuzzy, c-format
+#, c-format
 msgid "Error occurred while processing %s (UsePackage3)"
-msgstr "Eroare în timpul procesării %s (UsePackage3)"
+msgstr "Eroare apărută în timpul procesării %s (UsePackage3)"
 
 #: apt-pkg/pkgcachegen.cc:192
-#, fuzzy, c-format
+#, c-format
 msgid "Error occurred while processing %s (NewVersion2)"
-msgstr "Eroare în timpul procesării %s (NewVersion2)"
+msgstr "Eroare apărută în timpul procesării %s (NewVersion2)"
 
 #: apt-pkg/pkgcachegen.cc:207
 msgid "Wow, you exceeded the number of package names this APT is capable of."
@@ -2539,29 +2514,26 @@ msgstr ""
 
 #: apt-pkg/pkgcachegen.cc:210
 msgid "Wow, you exceeded the number of versions this APT is capable of."
-msgstr ""
-"Mamăăă, aţi depăşit numărul de versiuni de care este capabil acest APT."
+msgstr "Mamăăă, aţi depăşit numărul de versiuni de care este capabil acest APT."
 
 #: apt-pkg/pkgcachegen.cc:213
 msgid "Wow, you exceeded the number of dependencies this APT is capable of."
-msgstr ""
-"Mamăăă, aţi depăşit numărul de dependenţe de care este capabil acest APT."
+msgstr "Mamăăă, aţi depăşit numărul de dependenţe de care este capabil acest APT."
 
 #: apt-pkg/pkgcachegen.cc:241
-#, fuzzy, c-format
+#, c-format
 msgid "Error occurred while processing %s (FindPkg)"
-msgstr "Eroare în timpul procesării %s (FindPkg)"
+msgstr "Eroare apărută în timpul procesării %s (FindPkg)"
 
 #: apt-pkg/pkgcachegen.cc:254
-#, fuzzy, c-format
+#, c-format
 msgid "Error occurred while processing %s (CollectFileProvides)"
-msgstr "Eroare în timpul procesării %s (CollectFileProvides)"
+msgstr "Eroare apărută în timpul procesării %s (CollectFileProvides)"
 
 #: apt-pkg/pkgcachegen.cc:260
 #, c-format
 msgid "Package %s %s was not found while processing file dependencies"
-msgstr ""
-"Nu s-a găsit pachetul %s %s în timpul procesării dependenţelor de fişiere"
+msgstr "Nu s-a găsit pachetul %s %s în timpul procesării dependenţelor de fişiere"
 
 #: apt-pkg/pkgcachegen.cc:574
 #, c-format
@@ -2587,7 +2559,7 @@ msgstr "Nepotrivire MD5Sum"
 
 #: apt-pkg/acquire-item.cc:645
 msgid "There are no public key available for the following key IDs:\n"
-msgstr ""
+msgstr "Nu există nici o cheie publică disponibilă pentru următoarele identificatoare de chei:\n"
 
 #: apt-pkg/acquire-item.cc:758
 #, c-format
@@ -2609,8 +2581,7 @@ msgstr ""
 
 #: apt-pkg/acquire-item.cc:853
 #, c-format
-msgid ""
-"The package index files are corrupted. No Filename: field for package %s."
+msgid "The package index files are corrupted. No Filename: field for package %s."
 msgstr ""
 "Fişierele index de pachete sunt deteriorate. Fără câmpul 'nume fişier:' la "
 "pachetul %s."
@@ -2716,59 +2687,59 @@ msgstr "S-au scris %i înregistrări cu %i fişiere nepotrivite\n"
 #: apt-pkg/indexcopy.cc:269
 #, c-format
 msgid "Wrote %i records with %i missing files and %i mismatched files\n"
-msgstr ""
-"S-au scris %i înregistrări cu %i fişiere lipsă şi %i fişiere nepotrivite\n"
+msgstr "S-au scris %i înregistrări cu %i fişiere lipsă şi %i fişiere nepotrivite\n"
 
 #: apt-pkg/deb/dpkgpm.cc:358
-#, fuzzy, c-format
+#, c-format
 msgid "Preparing %s"
-msgstr "Deschidere %s"
+msgstr "Se pregăteşte %s"
 
 #: apt-pkg/deb/dpkgpm.cc:359
-#, fuzzy, c-format
+#, c-format
 msgid "Unpacking %s"
-msgstr "Deschidere %s"
+msgstr "Se despachetează %s"
 
 #: apt-pkg/deb/dpkgpm.cc:364
-#, fuzzy, c-format
+#, c-format
 msgid "Preparing to configure %s"
-msgstr "Deschidere fişier de configurare %s"
+msgstr "Se pregăteşte configurarea %s"
 
 #: apt-pkg/deb/dpkgpm.cc:365
-#, fuzzy, c-format
+#, c-format
 msgid "Configuring %s"
-msgstr "Conectare la %s"
+msgstr "Se configurează %s"
 
 #: apt-pkg/deb/dpkgpm.cc:366
-#, fuzzy, c-format
+#, c-format
 msgid "Installed %s"
-msgstr "  Instalat: "
+msgstr "Instalat %s"
 
 #: apt-pkg/deb/dpkgpm.cc:371
 #, c-format
 msgid "Preparing for removal of %s"
-msgstr ""
+msgstr "Se pregăteşte ştergerea lui %s"
 
 #: apt-pkg/deb/dpkgpm.cc:372
-#, fuzzy, c-format
+#, c-format
 msgid "Removing %s"
-msgstr "Deschidere %s"
+msgstr "Se şterge %s"
 
 #: apt-pkg/deb/dpkgpm.cc:373
-#, fuzzy, c-format
+#, c-format
 msgid "Removed %s"
-msgstr "Recomandă"
+msgstr "Şters %s"
 
 #: apt-pkg/deb/dpkgpm.cc:378
 #, c-format
 msgid "Preparing for remove with config %s"
-msgstr ""
+msgstr "Se pregăteşte pentru ştergere inclusiv configurarea %s"
 
 #: apt-pkg/deb/dpkgpm.cc:379
 #, c-format
 msgid "Removed with config %s"
-msgstr ""
+msgstr "Şters inclusiv configurarea %s"
 
 #: methods/rsh.cc:330
 msgid "Connection closed prematurely"
 msgstr "Conexiune închisă prematur"
+

+ 37 - 36
po/tl.po

@@ -10,8 +10,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-20 14:01+0100\n"
-"PO-Revision-Date: 2005-12-22 01:10+0800\n"
+"POT-Creation-Date: 2006-01-20 14:06+0100\n"
+"PO-Revision-Date: 2006-03-16 15:53+0800\n"
 "Last-Translator: Eric Pareja <xenos@upm.edu.ph>\n"
 "Language-Team: Tagalog <debian-tl@banwa.upm.edu.ph>\n"
 "MIME-Version: 1.0\n"
@@ -442,7 +442,7 @@ msgstr "Nasira ang DB, pinalitan ng pangalan ang talaksan sa %s.old"
 #: ftparchive/cachedb.cc:63
 #, c-format
 msgid "DB is old, attempting to upgrade %s"
-msgstr "Luma ang DB, sinusubukang maupgrade %s"
+msgstr "Luma ang DB, sinusubukang maupgrade ang %s"
 
 #: ftparchive/cachedb.cc:73
 #, c-format
@@ -452,7 +452,7 @@ msgstr "Hindi mabuksan ang talaksang DB %s: %s"
 #: ftparchive/cachedb.cc:114
 #, c-format
 msgid "File date has changed %s"
-msgstr "Nagbago ang petsa ng talaksan %s"
+msgstr "Nagbago ang petsa ng talaksang %s"
 
 #: ftparchive/cachedb.cc:155
 msgid "Archive has no control record"
@@ -541,7 +541,7 @@ msgstr "  %s ay walang override entry\n"
 #: ftparchive/writer.cc:437 ftparchive/writer.cc:689
 #, c-format
 msgid "  %s maintainer is %s not %s\n"
-msgstr "  Maintainer ng %s ay %s hindi %s\n"
+msgstr "  Tagapangalaga ng %s ay %s hindi %s\n"
 
 #: ftparchive/contents.cc:317
 #, c-format
@@ -721,7 +721,7 @@ msgstr ""
 #: cmdline/apt-get.cc:577
 #, c-format
 msgid "%lu upgraded, %lu newly installed, "
-msgstr "%lu nai-upgrade, %lu bagong luklok, "
+msgstr "%lu na nai-upgrade, %lu na bagong luklok, "
 
 #: cmdline/apt-get.cc:581
 #, c-format
@@ -835,12 +835,13 @@ msgstr "Kailangang kumuha ng %sB ng arkibo.\n"
 #: cmdline/apt-get.cc:829
 #, c-format
 msgid "After unpacking %sB of additional disk space will be used.\n"
-msgstr "Matapos magbuklat ay %sB na karagdagang puwang sa disk ay magagamit.\n"
+msgstr ""
+"Matapos magbuklat ay %sB na karagdagang puwang sa disk ang magagamit.\n"
 
 #: cmdline/apt-get.cc:832
 #, c-format
 msgid "After unpacking %sB disk space will be freed.\n"
-msgstr "Matapos magbuklat %sB na puwang sa disk ay mapapalaya.\n"
+msgstr "Matapos magbuklat ay %sB na puwang sa disk ang mapapalaya.\n"
 
 #: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1980
 #, c-format
@@ -921,12 +922,12 @@ msgstr "Paunawa, pinili ang %s imbes na %s\n"
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
 msgstr ""
-"Linaktawan ang %s, ito'y naka-instol na at hindi nakatakda ang upgrade.\n"
+"Linaktawan ang %s, ito'y nakaluklok na at hindi nakatakda ang upgrade.\n"
 
 #: cmdline/apt-get.cc:1058
 #, c-format
 msgid "Package %s is not installed, so not removed\n"
-msgstr "Hindi naka-instol ang paketeng %s, kaya't hindi ito tinanggal\n"
+msgstr "Hindi nakaluklok ang paketeng %s, kaya't hindi ito tinanggal\n"
 
 #: cmdline/apt-get.cc:1069
 #, c-format
@@ -935,11 +936,11 @@ msgstr "Ang paketeng %s ay paketeng birtwal na bigay ng:\n"
 
 #: cmdline/apt-get.cc:1081
 msgid " [Installed]"
-msgstr " [Naka-instol]"
+msgstr " [Nakaluklok]"
 
 #: cmdline/apt-get.cc:1086
 msgid "You should explicitly select one to install."
-msgstr "Dapat ninyong piliin ang isa na instolahin."
+msgstr "Dapat kayong mamili ng isa na iluluklok."
 
 #: cmdline/apt-get.cc:1091
 #, c-format
@@ -949,7 +950,7 @@ msgid ""
 "is only available from another source\n"
 msgstr ""
 "Hindi magamit ang %s, ngunit ito'y tinutukoy ng ibang pakete.\n"
-"Maaaring nawawala ang pakete, o ito'y laos na, o ito'y makukuha lamang\n"
+"Maaaring nawawala ang pakete, ito'y laos na, o ito'y makukuha lamang\n"
 "sa ibang pinagmulan.\n"
 
 #: cmdline/apt-get.cc:1110
@@ -964,7 +965,7 @@ msgstr "Ang paketeng %s ay walang kandidatong maaaring instolahin"
 #: cmdline/apt-get.cc:1133
 #, c-format
 msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
-msgstr "Ang pag-instol muli ng %s ay hindi maaari, hindi ito makuha.\n"
+msgstr "Ang pagluklok muli ng %s ay hindi maaari, hindi ito makuha.\n"
 
 #: cmdline/apt-get.cc:1141
 #, c-format
@@ -1047,7 +1048,7 @@ msgid ""
 "that package should be filed."
 msgstr ""
 "Dahil ang hiniling niyo ay mag-isang operasyon, malamang ay ang pakete ay\n"
-"hindi talaga ma-instol at kailangang magpadala ng bug report tungkol sa\n"
+"hindi talaga mailuklok at kailangang magpadala ng bug report tungkol sa\n"
 "pakete na ito."
 
 #: cmdline/apt-get.cc:1583
@@ -1061,7 +1062,7 @@ msgstr "Sirang mga pakete"
 
 #: cmdline/apt-get.cc:1612
 msgid "The following extra packages will be installed:"
-msgstr "Ang mga sumusunod na extra na pakete ay iinstolahin:"
+msgstr "Ang mga sumusunod na extra na pakete ay luluklokin:"
 
 #: cmdline/apt-get.cc:1683
 msgid "Suggested packages:"
@@ -1073,7 +1074,7 @@ msgstr "Mga paketeng rekomendado:"
 
 #: cmdline/apt-get.cc:1704
 msgid "Calculating upgrade... "
-msgstr "Kinakalkula ang upgrade... "
+msgstr "Sinusuri ang pag-upgrade... "
 
 #: cmdline/apt-get.cc:1707 methods/ftp.cc:702 methods/connect.cc:101
 msgid "Failed"
@@ -1097,9 +1098,9 @@ msgid "Unable to find a source package for %s"
 msgstr "Hindi mahanap ang paketeng source para sa %s"
 
 #: cmdline/apt-get.cc:1959
-#, fuzzy, c-format
+#, c-format
 msgid "Skipping already downloaded file '%s'\n"
-msgstr "Linaktawan ang pagbuklat ng nabuklat na na source sa %s\n"
+msgstr "Linaktawan ang nakuha na na talaksan '%s'\n"
 
 #: cmdline/apt-get.cc:1983
 #, c-format
@@ -1310,7 +1311,7 @@ msgstr "Nakakuha ng %sB ng %s (%sB/s)\n"
 #: cmdline/acqprogress.cc:225
 #, c-format
 msgid " [Working]"
-msgstr " [May Ginagawa]"
+msgstr " [May ginagawa]"
 
 #: cmdline/acqprogress.cc:271
 #, c-format
@@ -1367,7 +1368,7 @@ msgstr "May mga error na naganap habang nagbubuklat. Isasaayos ko ang"
 
 #: dselect/install:101
 msgid "packages that were installed. This may result in duplicate errors"
-msgstr "mga paketeng na-instol. Maaaring dumulot ito ng mga error na doble"
+msgstr "mga paketeng naluklok. Maaaring dumulot ito ng mga error na doble"
 
 #: dselect/install:102
 msgid "or errors caused by missing dependencies. This is OK, only the errors"
@@ -1379,7 +1380,7 @@ msgid ""
 "above this message are important. Please fix them and run [I]nstall again"
 msgstr ""
 "sa taas nitong kalatas ang importante. Paki-ayusin ang mga ito at patakbuhin "
-"muli ang [I]nstol."
+"muli ang [I]luklok/Instol."
 
 #: dselect/update:30
 msgid "Merging available information"
@@ -1840,7 +1841,7 @@ msgstr "Bigo ang paglipat ng datos, sabi ng server ay '%s'"
 #. Get the files information
 #: methods/ftp.cc:997
 msgid "Query"
-msgstr "Query"
+msgstr "Tanong"
 
 #: methods/ftp.cc:1106
 msgid "Unable to invoke "
@@ -1957,16 +1958,16 @@ msgstr "Error sa pagbasa mula sa prosesong %s"
 
 #: methods/http.cc:376
 msgid "Waiting for headers"
-msgstr "Naghihintay ng mga header"
+msgstr "Naghihintay ng panimula"
 
 #: methods/http.cc:522
 #, c-format
 msgid "Got a single header line over %u chars"
-msgstr "Nakatanggap ng isang linyang header mula %u na mga karakter"
+msgstr "Nakatanggap ng isang linyang panimula mula %u na mga karakter"
 
 #: methods/http.cc:530
 msgid "Bad header line"
-msgstr "Maling linyang header"
+msgstr "Maling linyang panimula"
 
 #: methods/http.cc:549 methods/http.cc:556
 msgid "The HTTP server sent an invalid reply header"
@@ -2018,7 +2019,7 @@ msgstr "Error sa pagbasa mula sa server"
 
 #: methods/http.cc:1107
 msgid "Bad header data"
-msgstr "Maling datos sa header"
+msgstr "Maling datos sa panimula"
 
 #: methods/http.cc:1124
 msgid "Connection failed"
@@ -2111,40 +2112,40 @@ msgstr "%c%s... Tapos"
 #: apt-pkg/contrib/cmndline.cc:80
 #, c-format
 msgid "Command line option '%c' [from %s] is not known."
-msgstr "Option sa command line '%c' [mula %s] ay di kilala."
+msgstr "Opsyon sa command line '%c' [mula %s] ay di kilala."
 
 #: apt-pkg/contrib/cmndline.cc:106 apt-pkg/contrib/cmndline.cc:114
 #: apt-pkg/contrib/cmndline.cc:122
 #, c-format
 msgid "Command line option %s is not understood"
-msgstr "Option sa command line %s ay di naintindihan."
+msgstr "Opsyon sa command line %s ay di naintindihan."
 
 #: apt-pkg/contrib/cmndline.cc:127
 #, c-format
 msgid "Command line option %s is not boolean"
-msgstr "Option sa command line %s ay hindi boolean"
+msgstr "Opsyon sa command line %s ay hindi boolean"
 
 #: apt-pkg/contrib/cmndline.cc:166 apt-pkg/contrib/cmndline.cc:187
 #, c-format
 msgid "Option %s requires an argument."
-msgstr "Option %s ay nangangailangan ng argumento"
+msgstr "Opsyon %s ay nangangailangan ng argumento"
 
 #: apt-pkg/contrib/cmndline.cc:201 apt-pkg/contrib/cmndline.cc:207
 #, c-format
 msgid "Option %s: Configuration item specification must have an =<val>."
 msgstr ""
-"Option %s: Ang pagtakda ng aytem sa pagkaayos ay nangangailangan ng "
+"Opsyon %s: Ang pagtakda ng aytem sa pagkaayos ay nangangailangan ng "
 "=<halaga>."
 
 #: apt-pkg/contrib/cmndline.cc:237
 #, c-format
 msgid "Option %s requires an integer argument, not '%s'"
-msgstr "Option %s ay nangangailangan ng argumentong integer, hindi '%s'"
+msgstr "Opsyon %s ay nangangailangan ng argumentong integer, hindi '%s'"
 
 #: apt-pkg/contrib/cmndline.cc:268
 #, c-format
 msgid "Option '%s' is too long"
-msgstr "Option '%s' ay labis ang haba"
+msgstr "Opsyon '%s' ay labis ang haba"
 
 #: apt-pkg/contrib/cmndline.cc:301
 #, c-format
@@ -2279,7 +2280,7 @@ msgstr "Rekomendado"
 
 #: apt-pkg/pkgcache.cc:219
 msgid "Conflicts"
-msgstr "Conflict"
+msgstr "Tunggali"
 
 #: apt-pkg/pkgcache.cc:219
 msgid "Replaces"
@@ -2584,7 +2585,7 @@ msgstr "Di tugmang MD5Sum"
 
 #: apt-pkg/acquire-item.cc:645
 msgid "There are no public key available for the following key IDs:\n"
-msgstr ""
+msgstr "Walang public key na magagamit para sa sumusunod na key ID:\n"
 
 #: apt-pkg/acquire-item.cc:758
 #, c-format

+ 1 - 1
test/testdeb.cc

@@ -23,7 +23,7 @@ bool Test(const char *File)
       return false;
       
    // Extract it.
-   ExtractTar Tar(Deb.GetFile(),Member->Size);
+   ExtractTar Tar(Deb.GetFile(),Member->Size, "gzip");
    NullStream Dir;
    if (Tar.Go(Dir) == false)
       return false;   

+ 7 - 0
test/versions.lst

@@ -20,6 +20,13 @@ z . -1
 # Epochs
 1:0.4 10.3 1
 1:1.25-4 1:1.25-8 -1
+0:1.18.36 1.18.36 0
+
+# Funky, but allowed, characters in upstream version
+9:1.18.36:5.4-20 10:0.5.1-22 -1
+9:1.18.36:5.4-20 9:1.18.36:5.5-1 -1
+9:1.18.36:5.4-20 9:1.18.37:4.3-22 -1
+1.18.36-0.17.35-18 1.18.36-19 1
 
 # Junk
 1:1.2.13-3 1:1.2.13-3.1 -1