Parcourir la source

* merged with the apt--mvo branch

Michael Vogt il y a 20 ans
Parent
commit
9a4dfc82c5
64 fichiers modifiés avec 10152 ajouts et 1014 suppressions
  1. 2 1
      apt-inst/contrib/extracttar.cc
  2. 1 1
      apt-pkg/acquire-item.cc
  3. 1 0
      apt-pkg/contrib/hashes.cc
  4. 3 1
      apt-pkg/contrib/hashes.h
  5. 424 0
      apt-pkg/contrib/sha256.cc
  6. 75 0
      apt-pkg/contrib/sha256.h
  7. 7 1
      apt-pkg/deb/dpkgpm.cc
  8. 2 2
      apt-pkg/makefile
  9. 101 17
      apt-pkg/tagfile.cc
  10. 4 1
      apt-pkg/tagfile.h
  11. 75 57
      cmdline/apt-get.cc
  12. 2 2
      configure.in
  13. 67 11
      debian/changelog
  14. 1 1
      debian/control
  15. 1 1
      doc/apt-cache.8.xml
  16. 1 1
      doc/apt-get.8.xml
  17. 1 0
      doc/apt.ent
  18. 1 0
      doc/examples/configure-index
  19. 224 45
      ftparchive/cachedb.cc
  20. 30 10
      ftparchive/cachedb.h
  21. 60 44
      ftparchive/writer.cc
  22. 6 2
      ftparchive/writer.h
  23. 7 1
      methods/gpgv.cc
  24. 1 1
      methods/http.cc
  25. 40 0
      po/ChangeLog
  26. 103 92
      po/apt-all.pot
  27. 4 4
      po/bg.po
  28. 4 4
      po/bs.po
  29. 4 4
      po/ca.po
  30. 4 4
      po/cs.po
  31. 4 4
      po/cy.po
  32. 4 4
      po/da.po
  33. 4 4
      po/de.po
  34. 2762 0
      po/dz.po
  35. 4 4
      po/el.po
  36. 4 4
      po/en_GB.po
  37. 4 4
      po/es.po
  38. 208 191
      po/eu.po
  39. 4 4
      po/fi.po
  40. 4 4
      po/fr.po
  41. 5 5
      po/gl.po
  42. 51 52
      po/hu.po
  43. 4 4
      po/it.po
  44. 4 4
      po/ja.po
  45. 2732 0
      po/km.po
  46. 77 86
      po/ko.po
  47. 4 4
      po/nb.po
  48. 2728 0
      po/ne.po
  49. 4 4
      po/nl.po
  50. 4 4
      po/nn.po
  51. 4 4
      po/pl.po
  52. 4 4
      po/pt.po
  53. 4 4
      po/pt_BR.po
  54. 21 32
      po/ro.po
  55. 4 4
      po/ru.po
  56. 4 5
      po/sk.po
  57. 4 4
      po/sl.po
  58. 197 232
      po/sv.po
  59. 4 4
      po/tl.po
  60. 19 18
      po/vi.po
  61. 4 4
      po/zh_CN.po
  62. 5 5
      po/zh_TW.po
  63. 0 0
      share/debian-archive.gpg
  64. 7 0
      test/hash.cc

+ 2 - 1
apt-inst/contrib/extracttar.cc

@@ -136,7 +136,8 @@ bool ExtractTar::StartGzip()
       
       const char *Args[3];
       string confvar = string("dir::bin::") + DecompressProg;
-      Args[0] = _config->Find(confvar.c_str(),DecompressProg.c_str()).c_str();
+      string argv0 = _config->Find(confvar.c_str(),DecompressProg.c_str());
+      Args[0] = argv0.c_str();
       Args[1] = "-d";
       Args[2] = 0;
       execvp(Args[0],(char **)Args);

+ 1 - 1
apt-pkg/acquire-item.cc

@@ -149,7 +149,7 @@ pkgAcqIndex::pkgAcqIndex(pkgAcquire *Owner,
    if(comprExt.empty()) 
    {
       // autoselect the compression method
-      if(FileExists("/usr/bin/bzip2")) 
+      if(FileExists("/bin/bzip2")) 
 	 CompressionExtension = ".bz2";
       else 
 	 CompressionExtension = ".gz";

+ 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 * 4 + 0] << 24)
+		| ((u32) input[I * 4 + 1] << 16)
+		| ((u32) input[I * 4 + 2] << 8)
+		| ((u32) input[I * 4 + 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

+ 7 - 1
apt-pkg/deb/dpkgpm.cc

@@ -624,7 +624,13 @@ bool pkgDPkgPM::Go(int OutStatusFd)
 	    
 	 */
 	 char* list[5];
-	 TokSplitString(':', line, list, sizeof(list)/sizeof(list[0]));
+	 if(!TokSplitString(':', line, list, sizeof(list)/sizeof(list[0])))
+	    // FIXME: dpkg sends multiline error messages sometimes (see
+	    //        #374195 for a example. we should support this by
+	    //        either patching dpkg to not send multiline over the
+	    //        statusfd or by rewriting the code here to deal with
+	    //        it. for now we just ignore it and not crash
+	    continue;
 	 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 \

+ 101 - 17
apt-pkg/tagfile.cc

@@ -33,21 +33,32 @@ using std::string;
 /* */
 pkgTagFile::pkgTagFile(FileFd *pFd,unsigned long Size) :
      Fd(*pFd),
-     Size(Size)
+     Size(Size),
+     Map(NULL),
+     Buffer(0)
 {
-   if (Fd.IsOpen() == false || Fd.Size() == 0)
+   if (Fd.IsOpen() == false)
    {
-      Buffer = 0;
       Start = End = Buffer = 0;
+      Done = true;
       iOffset = 0;
       Map = NULL;
       return;
    }
    
-   Map = new MMap (Fd, MMap::Public | MMap::ReadOnly);
-   Buffer = (char *) Map->Data ();
-   Start = Buffer;
-   End = Buffer + Map->Size ();
+   // check if we can MMap it
+   if(Fd.Size() == 0)
+   {
+      Buffer = new char[Size];
+      Start = End = Buffer;
+      Done = false;
+      Fill();
+   } else {
+      Map = new MMap (Fd, MMap::Public | MMap::ReadOnly);
+      Buffer = (char *) Map->Data ();
+      Start = Buffer;
+      End = Buffer + Map->Size ();
+   }
    iOffset = 0;
 }
 									/*}}}*/
@@ -56,6 +67,7 @@ pkgTagFile::pkgTagFile(FileFd *pFd,unsigned long Size) :
 /* */
 pkgTagFile::~pkgTagFile()
 {
+   if(!Map) delete [] Buffer;
    delete Map;
 }
 									/*}}}*/
@@ -64,18 +76,70 @@ pkgTagFile::~pkgTagFile()
 /* If the Section Scanner fails we refill the buffer and try again. */
 bool pkgTagFile::Step(pkgTagSection &Tag)
 {
-   if (Start == End)
+   if ((Map != NULL) && (Start == End))
       return false;
 
    if (Tag.Scan(Start,End - Start) == false)
    {
-      return _error->Error(_("Unable to parse package file %s (1)"),
-	      Fd.Name().c_str());
+      if (Map != NULL)
+	 return _error->Error(_("Unable to parse package file %s (1)"),
+			      Fd.Name().c_str());
+
+      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());
    }
    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;
 }
 									/*}}}*/
@@ -94,12 +158,31 @@ bool pkgTagFile::Jump(pkgTagSection &Tag,unsigned long Offset)
       return Step(Tag);
    }
 
-   // Reposition and reload..
    iOffset = Offset;
-   Start = Buffer + iOffset;
+   if (Map != NULL)
+   {
+      Start = Buffer + iOffset;
+   } 
+   else 
+   {
+      // Reposition and reload..
+      Done = false;
+      if (Fd.Seek(Offset) == false)
+	 return false;
+      End = Start = Buffer;
    
-   // Start != End is a special case to not fail on empty TagFiles
-   if (Start != End && Tag.Scan(Start,End - Start) == false)
+      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;
+   }
+
+   if (Tag.Scan(Start,End - Start) == false)
       return _error->Error(_("Unable to parse package file %s (2)"),Fd.Name().c_str());
    
    return true;
@@ -157,8 +240,8 @@ bool pkgTagSection::Scan(const char *Start,unsigned long MaxLength)
 
    if ((Stop+1 >= End) && (End[-1] == '\n' || End[-1] == '\r'))
    {
-       Indexes[TagCount] = (End - 1) - Section;
-       return true;
+      Indexes[TagCount] = (End - 1) - Section;
+      return true;
    }
 
    return false;
@@ -343,7 +426,8 @@ static const char *iTFRewritePackageOrder[] = {
                           "Filename",
                           "Size",
                           "MD5Sum",
-                          "SHA1Sum",
+                          "SHA1",
+                          "SHA256",
                            "MSDOS-Filename",   // Obsolete
                           "Description",
                           0};

+ 4 - 1
apt-pkg/tagfile.h

@@ -74,16 +74,19 @@ class pkgTagFile
    char *Buffer;
    char *Start;
    char *End;
+   bool Done;
    unsigned long iOffset;
    unsigned long Size;
    
+   bool Fill();
+   
    public:
 
    bool Step(pkgTagSection &Section);
    inline unsigned long Offset() {return iOffset;};
    bool Jump(pkgTagSection &Tag,unsigned long Offset);
 
-   pkgTagFile(FileFd *F,unsigned long Size = 32*1024);
+   pkgTagFile(FileFd *F,unsigned long Size = 64*1024);
    ~pkgTagFile();
 };
 

+ 75 - 57
cmdline/apt-get.cc

@@ -1669,68 +1669,86 @@ bool DoInstall(CommandLine &CmdL)
       string SuggestsVersions, RecommendsVersions;
       for (unsigned J = 0; J < Cache->Head().PackageCount; J++)
       {
-	 pkgCache::PkgIterator I(Cache,Cache.List[J]);
+	 pkgCache::PkgIterator Pkg(Cache,Cache.List[J]);
 
 	 /* Just look at the ones we want to install */
-	 if ((*Cache)[I].Install() == false)
+	 if ((*Cache)[Pkg].Install() == false)
 	   continue;
 
-	 for (pkgCache::VerIterator V = I.VersionList(); V.end() == false; V++)
-         {
-	     for (pkgCache::DepIterator D = V.DependsList(); D.end() == false; )
-             {
-		 pkgCache::DepIterator Start;
-		 pkgCache::DepIterator End;
-		 D.GlobOr(Start,End); // advances D
-
-		 /* 
-		  * If this is a virtual package, we need to check the list of
-		  * packages that provide it and see if any of those are
-		  * installed
-		  */
-		 
-		 bool providedBySomething = false;
-		 for (pkgCache::PrvIterator Prv = Start.TargetPkg().ProvidesList();
-                      Prv.end() != true;
-                      Prv++)
-		    if ((*Cache)[Prv.OwnerPkg()].InstVerIter(*Cache).end() == false)
-                    {
-		       providedBySomething = true;
-		       break;
-		    }
-
-		 if (providedBySomething) continue;
-            
-                 for(;;)
-                 {
-                     /* Skip if package is  installed already, or is about to be */
-                     string target = string(Start.TargetPkg().Name()) + " ";
-
-                     if ((*Start.TargetPkg()).SelectedState == pkgCache::State::Install
-                         || Cache[Start.TargetPkg()].Install())
-                       break;
-
-                     /* Skip if we already saw it */
-                     if (int(SuggestsList.find(target)) != -1 || int(RecommendsList.find(target)) != -1)
-                       break; 
-
-		     if (Start->Type == pkgCache::Dep::Suggests) {
-		       SuggestsList += target;
-		       SuggestsVersions += string(Cache[Start.TargetPkg()].CandVersion) + "\n";
-		     }
-		     
-		     if (Start->Type == pkgCache::Dep::Recommends) {
-		       RecommendsList += target;
-		       RecommendsVersions += string(Cache[Start.TargetPkg()].CandVersion) + "\n";
-		     }
-
-                     if (Start >= End)
-                        break;
-                     Start++;
-                 }
-             }
-         }
+	 // get the recommends/suggests for the candidate ver
+	 pkgCache::VerIterator CV = (*Cache)[Pkg].CandidateVerIter(*Cache);
+	 for (pkgCache::DepIterator D = CV.DependsList(); D.end() == false; )
+	 {
+	    pkgCache::DepIterator Start;
+	    pkgCache::DepIterator End;
+	    D.GlobOr(Start,End); // advances D
+
+	    // FIXME: we really should display a or-group as a or-group to the user
+	    //        the problem is that ShowList is incapable of doing this
+	    string RecommendsOrList,RecommendsOrVersions;
+	    string SuggestsOrList,SuggestsOrVersions;
+	    bool foundInstalledInOrGroup = false;
+	    for(;;)
+	    {
+	       /* Skip if package is  installed already, or is about to be */
+	       string target = string(Start.TargetPkg().Name()) + " ";
+	       
+	       if ((*Start.TargetPkg()).SelectedState == pkgCache::State::Install
+		   || Cache[Start.TargetPkg()].Install())
+	       {
+		  foundInstalledInOrGroup=true;
+		  break;
+	       }
+
+	       /* Skip if we already saw it */
+	       if (int(SuggestsList.find(target)) != -1 || int(RecommendsList.find(target)) != -1)
+	       {
+		  foundInstalledInOrGroup=true;
+		  break; 
+	       }
+
+	       // this is a dep on a virtual pkg, check if any package that provides it
+	       // should be installed
+	       if(Start.TargetPkg().ProvidesList() != 0)
+	       {
+		  pkgCache::PrvIterator I = Start.TargetPkg().ProvidesList();
+		  for (; I.end() == false; I++)
+		  {
+		     pkgCache::PkgIterator Pkg = I.OwnerPkg();
+		     if (Cache[Pkg].CandidateVerIter(Cache) == I.OwnerVer() && 
+			 Pkg.CurrentVer() != 0)
+			foundInstalledInOrGroup=true;
+		  }
+	       }
+
+	       if (Start->Type == pkgCache::Dep::Suggests) 
+	       {
+		  SuggestsOrList += target;
+		  SuggestsOrVersions += string(Cache[Start.TargetPkg()].CandVersion) + "\n";
+	       }
+	       
+	       if (Start->Type == pkgCache::Dep::Recommends) 
+	       {
+		  RecommendsOrList += target;
+		  RecommendsOrVersions += string(Cache[Start.TargetPkg()].CandVersion) + "\n";
+	       }
+
+	       if (Start >= End)
+		  break;
+	       Start++;
+	    }
+	    
+	    if(foundInstalledInOrGroup == false)
+	    {
+	       RecommendsList += RecommendsOrList;
+	       RecommendsVersions += RecommendsOrVersions;
+	       SuggestsList += SuggestsOrList;
+	       SuggestsVersions += SuggestsOrVersions;
+	    }
+	       
+	 }
       }
+
       ShowList(c1out,_("Suggested packages:"),SuggestsList,SuggestsVersions);
       ShowList(c1out,_("Recommended packages:"),RecommendsList,RecommendsVersions);
 

+ 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.44.1-0.1")
+AC_DEFINE_UNQUOTED(VERSION,"0.6.45")
 PACKAGE="apt"
 AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
 AC_SUBST(PACKAGE)
@@ -192,7 +192,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="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"
+ALL_LINGUAS="bg bs ca cs cy da de dz 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)

+ 67 - 11
debian/changelog

@@ -1,18 +1,74 @@
-apt (0.6.44.2) unstable; urgency=low
+apt (0.6.45.1) unstable; urgency=low
 
-  * apt-pkg/depcache.cc:
-    - added Debug::pkgDepCache::AutoInstall (thanks to infinity)
-  * merged from 
-    http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main:
-  	* sk.po: Completed to 512t
-	* eu.po: Completed to 512t
-	* fr.po: Completed to 512t
-	* sv.po: Completed to 512t
-	* Update all PO and the POT. Gives 506t6f for formerly
-	  complete translations
+  * debian/control:
+    - switched to libdb4.4 for building (closes: #381019)
+  * cmdline/apt-get.cc:
+    - show only the recommends/suggests for the candidate-version, not for all
+      versions of the package (closes: #257054)
+    - properly handle recommends/suggests or-groups when printing the list of
+      suggested/recommends packages (closes: #311619)
+  * methods/http.cc:
+    - check more careful for incorrect proxy settings (closes: #378868)
 
  --
 
+apt (0.6.45) unstable; urgency=low
+
+  * apt-pkg/contrib/sha256.cc:
+    - fixed the sha256 generation (closes: #378183)
+  * ftparchive/cachedb.cc:
+    - applied patch from Anthony Towns to fix Clean() function
+      (closes: #379576)
+  * doc/apt-get.8.xml:
+    - fix path to the apt user build (Closes: #375640)
+  * doc/apt-cache.8.xml:
+    - typo (Closes: #376408)
+  * apt-pkg/deb/dpkgpm.cc:
+    - make progress reporting more robust against multiline error
+      messages (first half of a fix for #374195)
+  * doc/examples/configure-index:
+    - document Debug::pkgAcquire::Auth     
+  * methods/gpgv.cc:
+    - deal with gpg error "NODATA". Closes: #296103, Thanks to 
+      Luis Rodrigo Gallardo Cruz for the patch
+  * apt-inst/contrib/extracttar.cc:
+    - fix for string mangling, closes: #373864
+  * apt-pkg/acquire-item.cc:
+    - check for bzip2 in /bin (closes: #377391)
+  * apt-pkg/tagfile.cc:
+    - make it work on non-mapable files again, thanks 
+      to James Troup for confirming the fix (closes: #376777)
+  * Merged from Christian Perrier bzr branch:
+    * ko.po: Updated to 512t. Closes: #378901
+    * hu.po: Updated to 512t. Closes: #376330
+    * km.po: New Khmer translation: 506t6f. Closes: #375068
+    * ne.po: New Nepali translation: 512t. Closes: #373729
+    * vi.po: Updated to 512t. Closes: #368038
+    * zh_TW.po: Remove an extra %s in one string. Closes: #370551
+    * dz.po: New Dzongkha translation: 512t
+    * ro.po: Updated to 512t
+    * eu.po: Updated
+
+ -- Michael Vogt <mvo@debian.org>  Thu, 27 Jul 2006 00:52:05 +0200
+
+apt  (0.6.44.2) unstable; urgency=low 
+  
+   * apt-pkg/depcache.cc:
+     - added Debug::pkgDepCache::AutoInstall (thanks to infinity)
+   * apt-pkg/acquire-item.cc:
+     - fix missing chmod() in the new aquire code
+       (thanks to Bastian Blank, Closes: #367425)
+   * merged from
+     http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main:
+     * sk.po: Completed to 512t
+     * eu.po: Completed to 512t
+     * fr.po: Completed to 512t
+     * sv.po: Completed to 512t
+     * Update all PO and the POT. Gives 506t6f for formerly
+       complete translations
+
+ -- Michael Vogt <mvo@debian.org>  Wed, 14 Jun 2006 12:00:57 +0200 
+
 apt (0.6.44.1-0.1) unstable; urgency=low
 
   * Non-maintainer upload.

+ 1 - 1
debian/control

@@ -4,7 +4,7 @@ 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.2.2
-Build-Depends: debhelper (>= 5.0), libdb4.3-dev, gettext (>= 0.12)
+Build-Depends: debhelper (>= 5.0), libdb4.4-dev, gettext (>= 0.12)
 Build-Depends-Indep: debiandoc-sgml, docbook-utils (>= 0.6.12-1)
 
 Package: apt

+ 1 - 1
doc/apt-cache.8.xml

@@ -277,7 +277,7 @@ Reverse Provides:
      <listitem><para>Select the file to store the source cache. The source is used only by
      <literal>gencaches</literal> and it stores a parsed version of the package 
      information from remote sources. When building the package cache the 
-     source cache is used to advoid reparsing all of the package files.
+     source cache is used to avoid reparsing all of the package files.
      Configuration Item: <literal>Dir::Cache::srcpkgcache</literal>.</para></listitem>
      </varlistentry>
 

+ 1 - 1
doc/apt-get.8.xml

@@ -468,7 +468,7 @@
  <refsect1><title>See Also</title>
    <para>&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;,
    &apt-conf;, &apt-config;,
-   The APT User's guide in &docdir;, &apt-preferences;, the APT Howto.</para>
+   The APT User's guide in &guidesdir;, &apt-preferences;, the APT Howto.</para>
  </refsect1>
 
  <refsect1><title>Diagnostics</title>

+ 1 - 0
doc/apt.ent

@@ -2,6 +2,7 @@
 
 <!-- Some common paths.. -->
 <!ENTITY docdir "/usr/share/doc/apt/">
+<!ENTITY guidesdir "/usr/share/doc/apt-doc/">
 <!ENTITY configureindex "<filename>&docdir;examples/configure-index.gz</filename>">
 <!ENTITY aptconfdir "<filename>/etc/apt.conf</filename>">
 <!ENTITY statedir "/var/lib/apt">

+ 1 - 0
doc/examples/configure-index

@@ -251,6 +251,7 @@ Debug
   pkgDepCache::AutoInstall "false"; // what packages apt install to satify dependencies
   pkgAcquire "false";
   pkgAcquire::Worker "false";
+  pkgAcquire::Auth "false";
   pkgDPkgPM "false";
   pkgDPkgProgressReporting "false";
   pkgOrderList "false";

+ 224 - 45
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;
 }
 									/*}}}*/
@@ -272,16 +453,14 @@ bool CacheDB::Clean()
    memset(&Data,0,sizeof(Data));
    while ((errno = Cursor->c_get(Cursor,&Key,&Data,DB_NEXT)) == 0)
    {
-      const char *Colon = (char *)Key.data;
-      for (; Colon != (char *)Key.data+Key.size && *Colon != ':'; Colon++);
-      if ((char *)Key.data+Key.size - Colon > 2)
+      const char *Colon = (char*)memrchr(Key.data, ':', Key.size);
+      if (Colon)
       {
-	 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 (stringcmp(Colon + 1, (char *)Key.data+Key.size,"st") == 0 ||
+             stringcmp(Colon + 1, (char *)Key.data+Key.size,"cl") == 0 ||
+             stringcmp(Colon + 1, (char *)Key.data+Key.size,"cn") == 0)
 	 {
-	    if (FileExists(string(Colon+1,(const char *)Key.data+Key.size)) == true)
+            if (FileExists(string((const char *)Key.data,Colon)) == true)
 		continue;	     
 	 }
       }

+ 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() {};

+ 7 - 1
methods/gpgv.cc

@@ -17,6 +17,7 @@
 #define GNUPGBADSIG "[GNUPG:] BADSIG"
 #define GNUPGNOPUBKEY "[GNUPG:] NO_PUBKEY"
 #define GNUPGVALIDSIG "[GNUPG:] VALIDSIG"
+#define GNUPGNODATA "[GNUPG:] NODATA"
 
 class GPGVMethod : public pkgAcqMethod
 {
@@ -171,7 +172,12 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
             std::cerr << "Got NO_PUBKEY " << std::endl;
          NoPubKeySigners.push_back(string(buffer+sizeof(GNUPGPREFIX)));
       }
-
+      if (strncmp(buffer, GNUPGNODATA, sizeof(GNUPGBADSIG)-1) == 0)
+      {
+         if (_config->FindB("Debug::Acquire::gpgv", false))
+            std::cerr << "Got NODATA! " << std::endl;
+         BadSigners.push_back(string(buffer+sizeof(GNUPGPREFIX)));
+      }
       if (strncmp(buffer, GNUPGVALIDSIG, sizeof(GNUPGVALIDSIG)-1) == 0)
       {
          char *sig = buffer + sizeof(GNUPGPREFIX);

+ 1 - 1
methods/http.cc

@@ -657,7 +657,7 @@ void HttpMethod::SendReq(FetchItem *Itm,CircleBuf &Out)
       will glitch HTTP/1.0 proxies because they do not filter it out and 
       pass it on, HTTP/1.1 says the connection should default to keep alive
       and we expect the proxy to do this */
-   if (Proxy.empty() == true)
+   if (Proxy.empty() == true || Proxy.Host.empty())
       sprintf(Buf,"GET %s HTTP/1.1\r\nHost: %s\r\nConnection: keep-alive\r\n",
 	      QuoteString(Uri.Path,"~").c_str(),ProperHost.c_str());
    else

+ 40 - 0
po/ChangeLog

@@ -1,3 +1,43 @@
+2006-07-19  Sunjae Park  <darehanl@gmail.com>
+
+	* ko.po: Updated to 512t. Closes: #378901
+
+2006-07-02  SZERVAC Attila  <sas@321.hu>
+
+	* hu.po: Updated to 512t. Closes: #376330
+
+2006-07-01  Leang Chumsoben  <soben@khmeros.info>
+
+	* km.po: New Khmer translation: 506t6f. Closes: #375068
+
+2006-07-01  Shiva Pokharel  <pokharelshiva@hotmail.com>
+
+	* ne.po: New Nepali translation: 512t. Closes: #373729
+
+2006-07-01  Clytie Siddall  <clytie@riverland.net.au>
+
+	* vi.po: Updated to 512t. Closes: #368038
+
+2006-07-01  Christian Perrier  <bubulle@debian.org>
+
+	* zh_TW.po: Remove an extra %s in one string. Closes: #370551
+
+2006-07-01  Kinley Tshering  <gasepkuenden2k3@hotmail.com>
+
+	* dz.po: New Dzongkha translation: 512t
+
+2006-06-25  Sorin Batariuc  <sorin@bonbon.net>
+
+	* ro.po: Updated to 512t
+
+2006-06-21  Piarres Beobide  <pi@beobide.net>
+
+	* eu.po: Updated
+
+2006-06-07  Piarres Beobide  <pi@beobide.net>
+
+	* eu.po: Updated
+
 2006-05-29  Peter Mann  <Peter.Mann@tuke.sk>
 
 	* sk.po: Completed to 512t

+ 103 - 92
po/apt-all.pot

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-07-26 10:56+0200\n"
+"POT-Creation-Date: 2006-09-06 18:03+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -148,7 +148,7 @@ msgstr ""
 
 #: 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:2430 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-get.cc:2449 cmdline/apt-sortpkgs.cc:144
 #, c-format
 msgid "%s %s for %s %s compiled on %s %s\n"
 msgstr ""
@@ -327,115 +327,126 @@ msgstr ""
 msgid "Some files are missing in the package file group `%s'"
 msgstr ""
 
-#: ftparchive/cachedb.cc:45
+#: ftparchive/cachedb.cc:47
 #, c-format
 msgid "DB was corrupted, file renamed to %s.old"
 msgstr ""
 
-#: ftparchive/cachedb.cc:63
+#: ftparchive/cachedb.cc:65
 #, c-format
 msgid "DB is old, attempting to upgrade %s"
 msgstr ""
 
-#: ftparchive/cachedb.cc:73
+#: ftparchive/cachedb.cc:76
+msgid ""
+"DB format is invalid. If you upgraded from a older version of apt, please "
+"remove and re-create the database."
+msgstr ""
+
+#: ftparchive/cachedb.cc:81
 #, c-format
 msgid "Unable to open DB file %s: %s"
 msgstr ""
 
-#: ftparchive/cachedb.cc:114
+#: ftparchive/cachedb.cc:127 apt-inst/extract.cc:181 apt-inst/extract.cc:193
+#: apt-inst/extract.cc:210 apt-inst/deb/dpkgdb.cc:121 methods/gpgv.cc:272
 #, c-format
-msgid "File date has changed %s"
+msgid "Failed to stat %s"
 msgstr ""
 
-#: ftparchive/cachedb.cc:155
+#: ftparchive/cachedb.cc:242
 msgid "Archive has no control record"
 msgstr ""
 
-#: ftparchive/cachedb.cc:267
+#: ftparchive/cachedb.cc:448
 msgid "Unable to get a cursor"
 msgstr ""
 
-#: ftparchive/writer.cc:78
+#: ftparchive/writer.cc:79
 #, c-format
 msgid "W: Unable to read directory %s\n"
 msgstr ""
 
-#: ftparchive/writer.cc:83
+#: ftparchive/writer.cc:84
 #, c-format
 msgid "W: Unable to stat %s\n"
 msgstr ""
 
-#: ftparchive/writer.cc:125
+#: ftparchive/writer.cc:135
 msgid "E: "
 msgstr ""
 
-#: ftparchive/writer.cc:127
+#: ftparchive/writer.cc:137
 msgid "W: "
 msgstr ""
 
-#: ftparchive/writer.cc:134
+#: ftparchive/writer.cc:144
 msgid "E: Errors apply to file "
 msgstr ""
 
-#: ftparchive/writer.cc:151 ftparchive/writer.cc:181
+#: ftparchive/writer.cc:161 ftparchive/writer.cc:191
 #, c-format
 msgid "Failed to resolve %s"
 msgstr ""
 
-#: ftparchive/writer.cc:163
+#: ftparchive/writer.cc:173
 msgid "Tree walking failed"
 msgstr ""
 
-#: ftparchive/writer.cc:188
+#: ftparchive/writer.cc:198
 #, c-format
 msgid "Failed to open %s"
 msgstr ""
 
-#: ftparchive/writer.cc:245
+#: ftparchive/writer.cc:257
 #, c-format
 msgid " DeLink %s [%s]\n"
 msgstr ""
 
-#: ftparchive/writer.cc:253
+#: ftparchive/writer.cc:265
 #, c-format
 msgid "Failed to readlink %s"
 msgstr ""
 
-#: ftparchive/writer.cc:257
+#: ftparchive/writer.cc:269
 #, c-format
 msgid "Failed to unlink %s"
 msgstr ""
 
-#: ftparchive/writer.cc:264
+#: ftparchive/writer.cc:276
 #, c-format
 msgid "*** Failed to link %s to %s"
 msgstr ""
 
-#: ftparchive/writer.cc:274
+#: ftparchive/writer.cc:286
 #, c-format
 msgid " DeLink limit of %sB hit.\n"
 msgstr ""
 
-#: 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:266
-#, c-format
-msgid "Failed to stat %s"
-msgstr ""
-
-#: ftparchive/writer.cc:386
+#: ftparchive/writer.cc:390
 msgid "Archive had no package field"
 msgstr ""
 
-#: ftparchive/writer.cc:394 ftparchive/writer.cc:603
+#: ftparchive/writer.cc:398 ftparchive/writer.cc:613
 #, c-format
 msgid "  %s has no override entry\n"
 msgstr ""
 
-#: ftparchive/writer.cc:437 ftparchive/writer.cc:689
+#: ftparchive/writer.cc:443 ftparchive/writer.cc:701
 #, c-format
 msgid "  %s maintainer is %s not %s\n"
 msgstr ""
 
+#: ftparchive/writer.cc:623
+#, c-format
+msgid "  %s has no source override entry\n"
+msgstr ""
+
+#: ftparchive/writer.cc:627
+#, c-format
+msgid "  %s has no binary override entry either\n"
+msgstr ""
+
 #: ftparchive/contents.cc:317
 #, c-format
 msgid "Internal error, could not locate member %s"
@@ -535,7 +546,7 @@ msgstr ""
 msgid "Y"
 msgstr ""
 
-#: cmdline/apt-get.cc:143 cmdline/apt-get.cc:1560
+#: cmdline/apt-get.cc:143 cmdline/apt-get.cc:1561
 #, c-format
 msgid "Regex compilation error - %s"
 msgstr ""
@@ -694,11 +705,11 @@ msgstr ""
 msgid "Internal error, Ordering didn't finish"
 msgstr ""
 
-#: cmdline/apt-get.cc:792 cmdline/apt-get.cc:1861 cmdline/apt-get.cc:1894
+#: cmdline/apt-get.cc:792 cmdline/apt-get.cc:1880 cmdline/apt-get.cc:1913
 msgid "Unable to lock the download directory"
 msgstr ""
 
-#: cmdline/apt-get.cc:802 cmdline/apt-get.cc:1942 cmdline/apt-get.cc:2178
+#: cmdline/apt-get.cc:802 cmdline/apt-get.cc:1961 cmdline/apt-get.cc:2197
 #: apt-pkg/cachefile.cc:67
 msgid "The list of sources could not be read."
 msgstr ""
@@ -727,7 +738,7 @@ msgstr ""
 msgid "After unpacking %sB disk space will be freed.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:847 cmdline/apt-get.cc:2032
+#: cmdline/apt-get.cc:847 cmdline/apt-get.cc:2051
 #, c-format
 msgid "Couldn't determine free space in %s"
 msgstr ""
@@ -761,7 +772,7 @@ msgstr ""
 msgid "Do you want to continue [Y/n]? "
 msgstr ""
 
-#: cmdline/apt-get.cc:962 cmdline/apt-get.cc:1366 cmdline/apt-get.cc:2075
+#: cmdline/apt-get.cc:962 cmdline/apt-get.cc:1366 cmdline/apt-get.cc:2094
 #, c-format
 msgid "Failed to fetch %s  %s\n"
 msgstr ""
@@ -770,7 +781,7 @@ msgstr ""
 msgid "Some files failed to download"
 msgstr ""
 
-#: cmdline/apt-get.cc:981 cmdline/apt-get.cc:2084
+#: cmdline/apt-get.cc:981 cmdline/apt-get.cc:2103
 msgid "Download complete and in download only mode"
 msgstr ""
 
@@ -886,7 +897,7 @@ msgid ""
 "shouldn't happen. Please file a bug report against apt."
 msgstr ""
 
-#: cmdline/apt-get.cc:1427 cmdline/apt-get.cc:1628
+#: cmdline/apt-get.cc:1427 cmdline/apt-get.cc:1629
 msgid "The following information may help to resolve the situation:"
 msgstr ""
 
@@ -898,27 +909,27 @@ msgstr ""
 msgid "Internal error, AllUpgrade broke stuff"
 msgstr ""
 
-#: cmdline/apt-get.cc:1547 cmdline/apt-get.cc:1583
+#: cmdline/apt-get.cc:1548 cmdline/apt-get.cc:1584
 #, c-format
 msgid "Couldn't find package %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:1570
+#: cmdline/apt-get.cc:1571
 #, c-format
 msgid "Note, selecting %s for regex '%s'\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1600
+#: cmdline/apt-get.cc:1601
 msgid "You might want to run `apt-get -f install' to correct these:"
 msgstr ""
 
-#: cmdline/apt-get.cc:1603
+#: cmdline/apt-get.cc:1604
 msgid ""
 "Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
 "solution)."
 msgstr ""
 
-#: cmdline/apt-get.cc:1615
+#: cmdline/apt-get.cc:1616
 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"
@@ -926,159 +937,159 @@ msgid ""
 "or been moved out of Incoming."
 msgstr ""
 
-#: cmdline/apt-get.cc:1623
+#: cmdline/apt-get.cc:1624
 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"
 "that package should be filed."
 msgstr ""
 
-#: cmdline/apt-get.cc:1631
+#: cmdline/apt-get.cc:1632
 msgid "Broken packages"
 msgstr ""
 
-#: cmdline/apt-get.cc:1662
+#: cmdline/apt-get.cc:1663
 msgid "The following extra packages will be installed:"
 msgstr ""
 
-#: cmdline/apt-get.cc:1733
+#: cmdline/apt-get.cc:1752
 msgid "Suggested packages:"
 msgstr ""
 
-#: cmdline/apt-get.cc:1734
+#: cmdline/apt-get.cc:1753
 msgid "Recommended packages:"
 msgstr ""
 
-#: cmdline/apt-get.cc:1754
+#: cmdline/apt-get.cc:1773
 msgid "Calculating upgrade... "
 msgstr ""
 
-#: cmdline/apt-get.cc:1757 methods/ftp.cc:702 methods/connect.cc:101
+#: cmdline/apt-get.cc:1776 methods/ftp.cc:702 methods/connect.cc:101
 msgid "Failed"
 msgstr ""
 
-#: cmdline/apt-get.cc:1762
+#: cmdline/apt-get.cc:1781
 msgid "Done"
 msgstr ""
 
-#: cmdline/apt-get.cc:1829 cmdline/apt-get.cc:1837
+#: cmdline/apt-get.cc:1848 cmdline/apt-get.cc:1856
 msgid "Internal error, problem resolver broke stuff"
 msgstr ""
 
-#: cmdline/apt-get.cc:1937
+#: cmdline/apt-get.cc:1956
 msgid "Must specify at least one package to fetch source for"
 msgstr ""
 
-#: cmdline/apt-get.cc:1967 cmdline/apt-get.cc:2196
+#: cmdline/apt-get.cc:1986 cmdline/apt-get.cc:2215
 #, c-format
 msgid "Unable to find a source package for %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:2011
+#: cmdline/apt-get.cc:2030
 #, c-format
 msgid "Skipping already downloaded file '%s'\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2035
+#: cmdline/apt-get.cc:2054
 #, c-format
 msgid "You don't have enough free space in %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:2040
+#: cmdline/apt-get.cc:2059
 #, c-format
 msgid "Need to get %sB/%sB of source archives.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2043
+#: cmdline/apt-get.cc:2062
 #, c-format
 msgid "Need to get %sB of source archives.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2049
+#: cmdline/apt-get.cc:2068
 #, c-format
 msgid "Fetch source %s\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2080
+#: cmdline/apt-get.cc:2099
 msgid "Failed to fetch some archives."
 msgstr ""
 
-#: cmdline/apt-get.cc:2108
+#: cmdline/apt-get.cc:2127
 #, c-format
 msgid "Skipping unpack of already unpacked source in %s\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2120
+#: cmdline/apt-get.cc:2139
 #, c-format
 msgid "Unpack command '%s' failed.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2121
+#: cmdline/apt-get.cc:2140
 #, c-format
 msgid "Check if the 'dpkg-dev' package is installed.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2138
+#: cmdline/apt-get.cc:2157
 #, c-format
 msgid "Build command '%s' failed.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2157
+#: cmdline/apt-get.cc:2176
 msgid "Child process failed"
 msgstr ""
 
-#: cmdline/apt-get.cc:2173
+#: cmdline/apt-get.cc:2192
 msgid "Must specify at least one package to check builddeps for"
 msgstr ""
 
-#: cmdline/apt-get.cc:2201
+#: cmdline/apt-get.cc:2220
 #, c-format
 msgid "Unable to get build-dependency information for %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:2221
+#: cmdline/apt-get.cc:2240
 #, c-format
 msgid "%s has no build depends.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2273
+#: cmdline/apt-get.cc:2292
 #, c-format
 msgid ""
 "%s dependency for %s cannot be satisfied because the package %s cannot be "
 "found"
 msgstr ""
 
-#: cmdline/apt-get.cc:2325
+#: cmdline/apt-get.cc:2344
 #, c-format
 msgid ""
 "%s dependency for %s cannot be satisfied because no available versions of "
 "package %s can satisfy version requirements"
 msgstr ""
 
-#: cmdline/apt-get.cc:2360
+#: cmdline/apt-get.cc:2379
 #, c-format
 msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
 msgstr ""
 
-#: cmdline/apt-get.cc:2385
+#: cmdline/apt-get.cc:2404
 #, c-format
 msgid "Failed to satisfy %s dependency for %s: %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:2399
+#: cmdline/apt-get.cc:2418
 #, c-format
 msgid "Build-dependencies for %s could not be satisfied."
 msgstr ""
 
-#: cmdline/apt-get.cc:2403
+#: cmdline/apt-get.cc:2422
 msgid "Failed to process build dependencies"
 msgstr ""
 
-#: cmdline/apt-get.cc:2435
+#: cmdline/apt-get.cc:2454
 msgid "Supported modules:"
 msgstr ""
 
-#: cmdline/apt-get.cc:2476
+#: cmdline/apt-get.cc:2495
 msgid ""
 "Usage: apt-get [options] command\n"
 "       apt-get [options] install|remove pkg1 [pkg2 ...]\n"
@@ -1206,19 +1217,19 @@ msgstr ""
 msgid "Failed to create pipes"
 msgstr ""
 
-#: apt-inst/contrib/extracttar.cc:143
+#: apt-inst/contrib/extracttar.cc:144
 msgid "Failed to exec gzip "
 msgstr ""
 
-#: apt-inst/contrib/extracttar.cc:180 apt-inst/contrib/extracttar.cc:206
+#: apt-inst/contrib/extracttar.cc:181 apt-inst/contrib/extracttar.cc:207
 msgid "Corrupted archive"
 msgstr ""
 
-#: apt-inst/contrib/extracttar.cc:195
+#: apt-inst/contrib/extracttar.cc:196
 msgid "Tar checksum failed, archive corrupted"
 msgstr ""
 
-#: apt-inst/contrib/extracttar.cc:298
+#: apt-inst/contrib/extracttar.cc:299
 #, c-format
 msgid "Unknown TAR header type %u, member %s"
 msgstr ""
@@ -1493,12 +1504,12 @@ msgstr ""
 msgid "File not found"
 msgstr ""
 
-#: methods/copy.cc:42 methods/gpgv.cc:275 methods/gzip.cc:133
+#: methods/copy.cc:42 methods/gpgv.cc:281 methods/gzip.cc:133
 #: methods/gzip.cc:142
 msgid "Failed to stat"
 msgstr ""
 
-#: methods/copy.cc:79 methods/gpgv.cc:272 methods/gzip.cc:139
+#: methods/copy.cc:79 methods/gpgv.cc:278 methods/gzip.cc:139
 msgid "Failed to set modification time"
 msgstr ""
 
@@ -1708,38 +1719,38 @@ msgstr ""
 msgid "Unable to connect to %s %s:"
 msgstr ""
 
-#: methods/gpgv.cc:64
+#: methods/gpgv.cc:65
 #, c-format
 msgid "Couldn't access keyring: '%s'"
 msgstr ""
 
-#: methods/gpgv.cc:99
+#: methods/gpgv.cc:100
 msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
 msgstr ""
 
-#: methods/gpgv.cc:198
+#: methods/gpgv.cc:204
 msgid ""
 "Internal error: Good signature, but could not determine key fingerprint?!"
 msgstr ""
 
-#: methods/gpgv.cc:203
+#: methods/gpgv.cc:209
 msgid "At least one invalid signature was encountered."
 msgstr ""
 
-#: methods/gpgv.cc:207
+#: methods/gpgv.cc:213
 #, c-format
 msgid "Could not execute '%s' to verify signature (is gnupg installed?)"
 msgstr ""
 
-#: methods/gpgv.cc:212
+#: methods/gpgv.cc:218
 msgid "Unknown error executing gpgv"
 msgstr ""
 
-#: methods/gpgv.cc:243
+#: methods/gpgv.cc:249
 msgid "The following signatures were invalid:\n"
 msgstr ""
 
-#: methods/gpgv.cc:250
+#: methods/gpgv.cc:256
 msgid ""
 "The following signatures couldn't be verified because the public key is not "
 "available:\n"
@@ -2129,12 +2140,12 @@ msgstr ""
 msgid "Failed to write temporary StateFile %s"
 msgstr ""
 
-#: apt-pkg/tagfile.cc:72
+#: apt-pkg/tagfile.cc:85 apt-pkg/tagfile.cc:92
 #, c-format
 msgid "Unable to parse package file %s (1)"
 msgstr ""
 
-#: apt-pkg/tagfile.cc:103
+#: apt-pkg/tagfile.cc:186
 #, c-format
 msgid "Unable to parse package file %s (2)"
 msgstr ""

+ 4 - 4
po/bg.po

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2006-03-31 22:05+0300\n"
 "Last-Translator: Yavor Doganov <yavor@doganov.org>\n"
 "Language-Team: Bulgarian <dict@fsa-bg.org>\n"
@@ -2306,15 +2306,15 @@ msgstr "незадължителен"
 msgid "extra"
 msgstr "допълнителен"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Изграждане на дървото със зависимости"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Версии кандидати"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Генериране на зависимости"
 

+ 4 - 4
po/bs.po

@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.5.26\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2004-05-06 15:25+0100\n"
 "Last-Translator: Safir Šećerović <sapphire@linux.org.ba>\n"
 "Language-Team: Bosnian <lokal@lugbih.org>\n"
@@ -2109,15 +2109,15 @@ msgstr "opcionalno"
 msgid "extra"
 msgstr "extra"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Gradim stablo zavisnosti"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Verzije kandidata"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Stvaranje zavisnosti"
 

+ 4 - 4
po/ca.po

@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2006-02-05 22:00+0100\n"
 "Last-Translator: Jordi Mallach <jordi@debian.org>\n"
 "Language-Team: Catalan <debian-l10n-catalan@lists.debian.org>\n"
@@ -2298,15 +2298,15 @@ msgstr "opcional"
 msgid "extra"
 msgstr "extra"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "S'està construint l'arbre de dependències"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Versions candidates"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Dependències que genera"
 

+ 4 - 4
po/cs.po

@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-08 11:02+0200\n"
+"POT-Creation-Date: 2006-05-27 13:46+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"
@@ -2269,15 +2269,15 @@ msgstr "volitelný"
 msgid "extra"
 msgstr "extra"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Vytvářím strom závislostí"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Kandidátské verze"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Generování závislostí"
 

+ 4 - 4
po/cy.po

@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: APT\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2005-06-06 13:46+0100\n"
 "Last-Translator: Dafydd Harries <daf@muse.19inch.net>\n"
 "Language-Team: Welsh <cy@pengwyn.linux.org.uk>\n"
@@ -2363,17 +2363,17 @@ msgstr "opsiynnol"
 msgid "extra"
 msgstr "ychwanegol"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 #, fuzzy
 msgid "Building dependency tree"
 msgstr "Yn Aideladu Coeden Dibyniaeth"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 #, fuzzy
 msgid "Candidate versions"
 msgstr "Fersiynau Posib"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 #, fuzzy
 msgid "Dependency generation"
 msgstr "Cynhyrchaid Dibyniaeth"

+ 4 - 4
po/da.po

@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt-da\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2006-01-20 22:23+0100\n"
 "Last-Translator: Claus Hindsgaul <claus_h@image.dk>\n"
 "Language-Team: Danish <dansk@klid.dk>\n"
@@ -2283,15 +2283,15 @@ msgstr "frivillig"
 msgid "extra"
 msgstr "ekstra"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Opbygger afhængighedstræ"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Kandidatversioner"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Afhængighedsgenerering"
 

+ 4 - 4
po/de.po

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.5.26\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2005-06-15 18:22+0200\n"
 "Last-Translator: Michael Piefel <piefel@debian.org>\n"
 "Language-Team:  <de@li.org>\n"
@@ -2322,15 +2322,15 @@ msgstr "optional"
 msgid "extra"
 msgstr "extra"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Abhängigkeitsbaum wird aufgebaut"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Mögliche Versionen"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Abhängigkeits-Generierung"
 

Fichier diff supprimé car celui-ci est trop grand
+ 2762 - 0
po/dz.po


+ 4 - 4
po/el.po

@@ -18,7 +18,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt_po_el_new\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2006-01-18 15:16+0200\n"
 "Last-Translator: Konstantinos Margaritis <markos@debian.org>\n"
 "Language-Team: Greek <debian-l10n-greek@lists.debian.org>\n"
@@ -2320,15 +2320,15 @@ msgstr "προαιρετικό"
 msgid "extra"
 msgstr "επιπλέον"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Κατασκευή Δένδρου Εξαρτήσεων"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Υποψήφιες Εκδόσεις"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Παραγωγή Εξαρτήσεων"
 

+ 4 - 4
po/en_GB.po

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.5.5\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2002-11-10 20:56+0100\n"
 "Last-Translator: Neil Williams <linux@codehelp.co.uk>\n"
 "Language-Team: en_GB <en@li.org>\n"
@@ -2272,15 +2272,15 @@ msgstr "optional"
 msgid "extra"
 msgstr "extra"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Building dependency tree"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Candidate versions"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Dependency generation"
 

+ 4 - 4
po/es.po

@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.6.42.3exp1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2005-11-16 17:37+0100\n"
 "Last-Translator: Rubén Porras Campo <nahoo@inicia.es>\n"
 "Language-Team: Spanish <debian-l10n-spanish@lists.debian.org>\n"
@@ -2307,15 +2307,15 @@ msgstr "opcional"
 msgid "extra"
 msgstr "extra"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Creando árbol de dependencias"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Versiones candidatas"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Generación de dependencias"
 

Fichier diff supprimé car celui-ci est trop grand
+ 208 - 191
po/eu.po


+ 4 - 4
po/fi.po

@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.5.26\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2005-02-15 14:09+0200\n"
 "Last-Translator: Tapio Lehtonen <tale@debian.org>\n"
 "Language-Team: Finnish <debian-l10n-finnish@lists.debian.org>\n"
@@ -2285,15 +2285,15 @@ msgstr "valinnainen"
 msgid "extra"
 msgstr "ylimääräinen"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Muodostetaan riippuvuussuhteiden puu"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Mahdolliset versiot"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Luodaan riippuvuudet"
 

+ 4 - 4
po/fr.po

@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: fr\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2006-05-18 09:31-0500\n"
 "Last-Translator: Christian Perrier <bubulle@debian.org>\n"
 "Language-Team: French <debian-l10n-french@lists.debian.org>\n"
@@ -2327,15 +2327,15 @@ msgstr "optionnel"
 msgid "extra"
 msgstr "supplémentaire"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Construction de l'arbre des dépendances"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Versions possibles"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Génération des dépendances"
 

+ 5 - 5
po/gl.po

@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+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"
@@ -15,7 +15,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 
 #: cmdline/apt-cache.cc:135
-#, c-format 
+#, c-format
 msgid "Package %s version %s has an unmet dep:\n"
 msgstr "O paquete %s versión %s ten unha dependencia incumprida:\n"
 
@@ -2297,15 +2297,15 @@ msgstr "opcional"
 msgid "extra"
 msgstr "extra"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "A construír a árbore de dependencias"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Versións candidatas"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Xeración de dependencias"
 

+ 51 - 52
po/hu.po

@@ -1,21 +1,23 @@
-# Advanced Package Transfer - APT message translation catalog
-# Hungarian messages
-# PASZTOR Gyorgy <pasztor@linux.gyakg.u-szeged.hu>, 2002.
-# Gabor Kelemen <kelemeng@gnome.hu>, 2004, 2005.
-# 
+# Advanced Package Transfer - APT message translation catalog
+# Hungarian messages
+# PASZTOR Gyorgy <pasztor@linux.gyakg.u-szeged.hu>, 2002.
+# Gabor Kelemen <kelemeng@gnome.hu>, 2004, 2005.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: hu\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
-"PO-Revision-Date: 2006-04-30 06:14+0100\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
+"PO-Revision-Date: 2006-07-02 07:34+0100\n"
 "Last-Translator: SZERVÑC Attila <sas@321.hu>\n"
-"Language-Team: Hungarian <gnome@gnome.hu>\n"
+"Language-Team: Hungarian <debian-l10-hungarian>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: KBabel 1.3.1\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
+"X-Poedit-Language: Hungarian\n"
+"X-Poedit-Country: HUNGARY\n"
 
 #: cmdline/apt-cache.cc:135
 #, c-format
@@ -337,7 +339,6 @@ msgid "Error processing contents %s"
 msgstr "Hiba %s tartalmának feldolgozásakor"
 
 #: ftparchive/apt-ftparchive.cc:556
-#, fuzzy
 msgid ""
 "Usage: apt-ftparchive [options] command\n"
 "Commands: packages binarypath [overridefile [pathprefix]]\n"
@@ -390,13 +391,13 @@ msgstr ""
 "sok stílusát támogatja, a teljesen automatizálttól kezdve a\n"
 "dpkg-scanpackages és a dpkg-scansources funkcionális helyettesítéséig.\n"
 "\n"
-"Az apt-ftparchive 'Package' fájlokat generál a .deb-ek fájából. A Package\n"
+"Az apt-ftparchive Package fájlokat generál a .deb-ek fájából. A Package\n"
 "fájl minden vezérlő mezőt tartalmaz minden egyes csomagról úgy az MD5\n"
 "hasht mint a fájlméretet. Az override (felülbíráló) fájl támogatott a\n"
 "Prioritás és Szekció mezők értékének kényszerítésére.\n"
 "\n"
-"Hasonlóképpen az apt-ftparchive 'Sources' fájlokat generál .dsc-k fájából.\n"
-"A --source-override opció használható forrásfelülbíráló fájlok megadására\n"
+"Hasonlóképpen az apt-ftparchive Sources fájlokat generál .dsc-k fájából.\n"
+"A --source-override opció használható forrás-felülbíráló fájlok megadására\n"
 "\n"
 "A 'packages' és 'sources' parancsokat a fa gyökeréből kell futtatni.\n"
 "A BinaryPath-nak a rekurzív keresés kiindulópontjára kell mutatni és\n"
@@ -404,12 +405,12 @@ msgstr ""
 "előtag\n"
 "hozzáadódik a fájlnév mezőkhöz, ha meg van adva. Felhasználására egy példa "
 "a\n"
-"debian archívumból:\n"
+"Debian archívumból:\n"
 "   apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
 "               dists/potato/main/binary-i386/Packages\n"
 "\n"
 "Opciók:\n"
-"  -h    Ez a súgó szöveg\n"
+"  -h    E súgó szöveg\n"
 "  --md5 MD5 generálás vezérlése\n"
 "  -s=?  Forrás felülbíráló fájl\n"
 "  -q    Szűkszavú mód\n"
@@ -775,7 +776,7 @@ msgstr "A hitelesítési figyelmeztetést átléptem.\n"
 
 #: cmdline/apt-get.cc:700
 msgid "Install these packages without verification [y/N]? "
-msgstr "Valóban telepíted e csomagokat ellenőrzés nélkül (y/N)? "
+msgstr "Valóban telepíted e csomagokat ellenőrzés nélkül (i/N)? "
 
 #: cmdline/apt-get.cc:702
 msgid "Some packages could not be authenticated"
@@ -935,7 +936,7 @@ msgid ""
 "This may mean that the package is missing, has been obsoleted, or\n"
 "is only available from another source\n"
 msgstr ""
-"%s csomag nem elérhető, de egy másikhivatkozik rá\n"
+"%s csomag nem elérhető, de egy másik hivatkozik rá\n"
 ".A kért csomag tehát: hiányzik, elavult vagy csak más forrásból érhető el\n"
 
 #: cmdline/apt-get.cc:1110
@@ -1095,12 +1096,12 @@ msgstr "Nincs elég szabad hely itt: %s"
 #: cmdline/apt-get.cc:1979
 #, c-format
 msgid "Need to get %sB/%sB of source archives.\n"
-msgstr "%sB/%sB forrásarchívot kell letölteni.\n"
+msgstr "%sB/%sB forrás-archívumot kell letölteni.\n"
 
 #: cmdline/apt-get.cc:1982
 #, c-format
 msgid "Need to get %sB of source archives.\n"
-msgstr "%sB forrásarchívumot kell letölteni.\n"
+msgstr "%sB forrás-archívumot kell letölteni.\n"
 
 #: cmdline/apt-get.cc:1988
 #, c-format
@@ -1167,7 +1168,7 @@ msgid ""
 "package %s can satisfy version requirements"
 msgstr ""
 "%s függősége ennek: %s, ez nem elégíthető ki, mert a(z) %s csomagnak nincs a "
-"verziókövetelményt kielégítő elérhető verziója."
+"verzió-követelményt kielégítő elérhető verziója."
 
 #: cmdline/apt-get.cc:2299
 #, c-format
@@ -1526,7 +1527,7 @@ msgstr "%sinfo nem érhető el"
 
 #: apt-inst/deb/dpkgdb.cc:123
 msgid "The info and temp directories need to be on the same filesystem"
-msgstr "Az info és temp könyvtáraknak ugyanazon a fájlrendszeren kell lenniük"
+msgstr "Az info és temp könyvtáraknak egy fájlrendszeren kell lenniük"
 
 #. Build the status cache
 #: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:643
@@ -1590,7 +1591,7 @@ msgstr "Belső hiba egy eltérítés hozzáadásakor"
 
 #: apt-inst/deb/dpkgdb.cc:383
 msgid "The pkg cache must be initialized first"
-msgstr "A csomag gyorsítótárnak előbb kell inicializálva lennie"
+msgstr "A csomag gyorstárnak előbb kell inicializálva lennie"
 
 #: apt-inst/deb/dpkgdb.cc:443
 #, c-format
@@ -1782,7 +1783,7 @@ msgstr "Nem lehet PORT parancsot küldeni"
 #: methods/ftp.cc:789
 #, c-format
 msgid "Unknown address family %u (AF_*)"
-msgstr "Ismeretlen a(z) %u címcsalád (AF_*)"
+msgstr "Ismeretlen %u címcsalád (AF_*)"
 
 #: methods/ftp.cc:798
 #, c-format
@@ -1852,7 +1853,7 @@ msgstr "Időtúllépés miatt nem lehet kapcsolódni a következőhöz: %s: %s (
 #: methods/connect.cc:108
 #, c-format
 msgid "Could not connect to %s:%s (%s)."
-msgstr "Nem lehet ehhez: %s: %s (%s)."
+msgstr "Nem tudtam kapcsolódni ehhez: %s: %s (%s)."
 
 #. We say this mainly because the pause here is for the
 #. ssh connection that is still going
@@ -1882,9 +1883,9 @@ msgid "Unable to connect to %s %s:"
 msgstr "Sikertelen kapcsolódás ide: %s %s:"
 
 #: methods/gpgv.cc:64
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't access keyring: '%s'"
-msgstr "Nem lehet feloldani a következőt: '%s' "
+msgstr "%s kulcstartó nem érhető el"
 
 #: methods/gpgv.cc:99
 msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
@@ -1893,16 +1894,16 @@ msgstr "H: Az Acquire::gpgv::Options argumentum lista túl hosszú. Kilépek."
 #: methods/gpgv.cc:198
 msgid ""
 "Internal error: Good signature, but could not determine key fingerprint?!"
-msgstr ""
+msgstr "Belső hiba: Jó aláírás, de meghatározhatatlan kulcs ujjlenyomat?!"
 
 #: methods/gpgv.cc:203
 msgid "At least one invalid signature was encountered."
 msgstr "1 vagy több érvénytelen aláírást találtam."
 
 #: methods/gpgv.cc:207
-#, fuzzy, c-format
+#, c-format
 msgid "Could not execute '%s' to verify signature (is gnupg installed?)"
-msgstr " az aláírás igazolásához (a gnupg telepítve van?)"
+msgstr "'%s' nem futtatható az aláírás ellenőrzéséhez (a gnupg telepítve van?)"
 
 #: methods/gpgv.cc:212
 msgid "Unknown error executing gpgv"
@@ -1927,7 +1928,7 @@ msgstr "Nem lehet csövet nyitni ehhez: %s"
 #: methods/gzip.cc:102
 #, c-format
 msgid "Read error from %s process"
-msgstr "Olvasási hiba a(z) %s folyamattól"
+msgstr "Olvasási hiba %s folyamattól"
 
 #: methods/http.cc:376
 msgid "Waiting for headers"
@@ -2002,7 +2003,7 @@ msgstr "Sikertelen kapcsolódás"
 msgid "Internal error"
 msgstr "Belső hiba"
 
-# FIXME
+# FIXME
 #: apt-pkg/contrib/mmap.cc:82
 msgid "Can't mmap an empty file"
 msgstr "Nem lehet mmap-olni egy üres fájlt"
@@ -2015,7 +2016,7 @@ msgstr "Nem sikerült %lu bájtot mmap-olni"
 #: apt-pkg/contrib/strutl.cc:938
 #, c-format
 msgid "Selection %s not found"
-msgstr "A(z) %s kiválasztás nem található"
+msgstr "%s kiválasztás nem található"
 
 #: apt-pkg/contrib/configuration.cc:436
 #, c-format
@@ -2065,7 +2066,7 @@ msgstr "Szintaktikai hiba %s: %u: ugyaninnen include-olva"
 #: apt-pkg/contrib/configuration.cc:704
 #, c-format
 msgid "Syntax error %s:%u: Unsupported directive '%s'"
-msgstr "Szintaktikai hiba %s: %u: '%s' nem támogatott előrás"
+msgstr "Szintaktikai hiba %s: %u: '%s' nem támogatott előírás"
 
 #: apt-pkg/contrib/configuration.cc:738
 #, c-format
@@ -2212,15 +2213,15 @@ msgstr "Hiba a fájl szinkronizálásakor"
 
 #: apt-pkg/pkgcache.cc:126
 msgid "Empty package cache"
-msgstr "Üres csomaggyorsítótár"
+msgstr "Üres csomag-gyorstár"
 
 #: apt-pkg/pkgcache.cc:132
 msgid "The package cache file is corrupted"
-msgstr "A csomaggyorsítótár-fájl megsérült"
+msgstr "A csomag-gyorstár fájl megsérült"
 
 #: apt-pkg/pkgcache.cc:137
 msgid "The package cache file is an incompatible version"
-msgstr "A csomaggyorsítótár-fájl inkompatibilis verziójú"
+msgstr "A csomag-gyorstár fájl inkompatibilis verziójú"
 
 #: apt-pkg/pkgcache.cc:142
 #, c-format
@@ -2229,7 +2230,7 @@ msgstr "Ez az APT nem támogatja a(z) '%s' verziórendszert"
 
 #: apt-pkg/pkgcache.cc:147
 msgid "The package cache was built for a different architecture"
-msgstr "A csomaggyorsítótár egy másik architektúrához készült"
+msgstr "A csomag-gyorstár egy másik architektúrához készült"
 
 #: apt-pkg/pkgcache.cc:218
 msgid "Depends"
@@ -2279,15 +2280,15 @@ msgstr "opcionális"
 msgid "extra"
 msgstr "extra"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Függőségi fa építése"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Lehetséges verziók"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Függőség-generálás"
 
@@ -2400,14 +2401,14 @@ msgstr "%spartial archívumkönyvtár hiányzik."
 #. only show the ETA if it makes sense
 #. two days
 #: apt-pkg/acquire.cc:823
-#, fuzzy, c-format
+#, c-format
 msgid "Retrieving file %li of %li (%s remaining)"
-msgstr "Fájlletöltés: %li/%li (%s van hátra)"
+msgstr "%li/%li fájl letöltése (%s marad)"
 
 #: apt-pkg/acquire.cc:825
-#, fuzzy, c-format
+#, c-format
 msgid "Retrieving file %li of %li"
-msgstr "Fájllista olvasása"
+msgstr "%li/%li fájl letöltése"
 
 #: apt-pkg/acquire-worker.cc:113
 #, c-format
@@ -2539,7 +2540,7 @@ msgstr ""
 msgid "Couldn't stat source package list %s"
 msgstr "Nem lehet a(z) %s forrás csomaglistáját elérni"
 
-# FIXME
+# FIXME
 #: apt-pkg/pkgcachegen.cc:658
 msgid "Collecting File Provides"
 msgstr "\"Előkészít\" kapcsolatok összegyűjtése"
@@ -2636,11 +2637,9 @@ msgid "Scanning disc for index files..\n"
 msgstr "Indexfájlok keresése a lemezen...\n"
 
 #: apt-pkg/cdrom.cc:647
-#, fuzzy, c-format
+#, c-format
 msgid "Found %i package indexes, %i source indexes and %i signatures\n"
-msgstr ""
-"%i csomagindexet, %i forrásindexet, %i fordításindexet és %i aláírást "
-"találtam\n"
+msgstr "%i csomagindexet, %i forrásindexet és %i aláírást találtam\n"
 
 #: apt-pkg/cdrom.cc:710
 msgid "That is not a valid name, try again.\n"
@@ -2732,14 +2731,14 @@ msgid "Removed %s"
 msgstr "Eltávolított %s"
 
 #: apt-pkg/deb/dpkgpm.cc:378
-#, fuzzy, c-format
+#, c-format
 msgid "Preparing to completely remove %s"
-msgstr "%s konfigurálásának előkészítése"
+msgstr "%s teljes eltávolítása előkészítése"
 
 #: apt-pkg/deb/dpkgpm.cc:379
-#, fuzzy, c-format
+#, c-format
 msgid "Completely removed %s"
-msgstr "%s eltávolítása sikertelen"
+msgstr "%s teljesen eltávolítva"
 
 #: methods/rsh.cc:330
 msgid "Connection closed prematurely"

+ 4 - 4
po/it.po

@@ -5,7 +5,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.5.5\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2006-02-14 11:41+0100\n"
 "Last-Translator: Samuele Giovanni Tonon <samu@debian.org>\n"
 "Language-Team: Italian <it@li.org>\n"
@@ -2309,15 +2309,15 @@ msgstr "opzionale"
 msgid "extra"
 msgstr "extra"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Generazione dell'albero delle dipendenze in corso"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Versioni candidate"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Generazione delle dipendenze"
 

+ 4 - 4
po/ja.po

@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2006-01-25 20:55+0900\n"
 "Last-Translator: Kenshi Muto <kmuto@debian.org>\n"
 "Language-Team: Debian Japanese List <debian-japanese@lists.debian.org>\n"
@@ -2289,15 +2289,15 @@ msgstr "任意"
 msgid "extra"
 msgstr "特別"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "依存関係ツリーを作成しています"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "候補バージョン"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "依存関係の生成"
 

Fichier diff supprimé car celui-ci est trop grand
+ 2732 - 0
po/km.po


+ 77 - 86
po/ko.po

@@ -1,13 +1,14 @@
-# Changwoo Ryu <cwryu@debian.org>, 2004-2005.
-# 
+# Sunjae Park <darehanl@gmail.com>, 2006.
+# Changwoo Ryu <cwryu@debian.org>, 2004-2005.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: apt\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
-"PO-Revision-Date: 2005-02-10 21:56+0900\n"
-"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
-"Language-Team: Korean <cwryu@debian.org>\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
+"PO-Revision-Date: 2006-07-20 00:28+0900\n"
+"Last-Translator: Sunjae Park <darehanl@gmail.com>\n"
+"Language-Team: Korean <debian-l10n-korean@lists.debian.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -226,19 +227,15 @@ msgstr ""
 
 #: cmdline/apt-cdrom.cc:78
 msgid "Please provide a name for this Disc, such as 'Debian 2.1r1 Disk 1'"
-msgstr ""
+msgstr "이 디스크를 위해 'Debian 2.1r1 Disk 1'와 같은 이름을 지정해주십시오"
 
 #: cmdline/apt-cdrom.cc:93
-#, fuzzy
 msgid "Please insert a Disc in the drive and press enter"
-msgstr ""
-"미디어 바꾸기: '%2$s' 드라이브에 다음 레이블이 달린\n"
-"디스크를 넣고 enter를 누르십시오\n"
-" '%1$s'\n"
+msgstr "드라이브에 디스크를 넣고 엔터를 누르십시오"
 
 #: cmdline/apt-cdrom.cc:117
 msgid "Repeat this process for the rest of the CDs in your set."
-msgstr ""
+msgstr "현재 갖고 있는 다른 CD에도 이 과정을 반복하십시오."
 
 #: cmdline/apt-config.cc:41
 msgid "Arguments not in pairs"
@@ -335,7 +332,6 @@ msgid "Error processing contents %s"
 msgstr "%s 컨텐츠를 처리하는 데 오류가 발생했습니다"
 
 #: ftparchive/apt-ftparchive.cc:556
-#, fuzzy
 msgid ""
 "Usage: apt-ftparchive [options] command\n"
 "Commands: packages binarypath [overridefile [pathprefix]]\n"
@@ -385,34 +381,34 @@ msgstr ""
 "      clean 설정\n"
 "\n"
 "apt-ftparchive는 데비안 아카이브용 인덱스 파일을 만듭니다. 이 프로그램은\n"
-"여러가지 종류의 인덱스 파일 만들기를 지원합니다 -- 완전 자동에서부터\n"
+"여러 종류의 인덱스 파일 만드는 작업을 지원합니다 -- 완전 자동화 작업부터\n"
 "dpkg-scanpackages와 dpkg-scansources의 기능을 대체하기도 합니다.\n"
 "\n"
 "apt-ftparchive는 .deb 파일의 트리에서부터 Package 파일을 만듭니다.\n"
-"Package 파일에는 각 꾸러미의 모든 컨트롤 필드는 물론 MD5 해시와 파일\n"
-"크기도 들어 있습니다. override 파일을 이용해 우선 순위와 섹션 값을 \n"
+"Package 파일에는 각 꾸러미의 모든 제어 필드는 물론 MD5 해시와 파일\n"
+"크기도 들어 있습니다. override 파일을 이용해 Priority와 Section의 값을 \n"
 "강제로 설정할 수 있습니다\n"
 "\n"
-"비슷하게 apt-ftparchive는 .dsc 파일의 트리에서부터 Sources 파일을\n"
+"이와 비슷하게 apt-ftparchive는 .dsc 파일의 트리에서 Sources 파일을\n"
 "만듭니다. --source-override 옵션을 이용해 소스 override 파일을\n"
 "지정할 수 있습니다.\n"
 "\n"
 "'packages'와 'sources' 명령은 해당 트리의 맨 위에서 실행해야 합니다.\n"
-"\"바이너리경로\"는 서치할 때 기준 위치를 가리켜야 하고 \"override파일\"은\n"
-"override 플래그들이 들어 있어야 합니다. \"경로앞부분\"은 각각의 파일 이름\n"
-"필드에 더해 집니다. 예를 들어 데비안 아카이브는 다음과 같이 사용합니다:\n"
+"\"바이너리경로\"는 검색할 때의 기준 위치를 가리키며 \"override파일\"에는\n"
+"override 플래그들을 담고 있습니다. \"경로앞부분\"은 각 파일 이름\n"
+"필드의 앞에 더해 집니다. 데비안 아카이브에 있는 예를 하나 들자면:\n"
 "\n"
 "   apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
 "               dists/potato/main/binary-i386/Packages\n"
 "\n"
 "옵션:\n"
 "  -h    이 도움말\n"
-"  --md5 MD5 만들기를 컨트롤합니다\n"
+"  --md5 MD5 만들기 작업을 제어합니다\n"
 "  -s=?  소스 override 파일\n"
 "  -q    조용히\n"
 "  -d=?  캐시 데이터베이스를 직접 설정합니다\n"
 "  --no-delink 디버깅 모드 지우기를 사용합니다\n"
-"  --contents  컨텐츠 파일을 만들기를 컨트롤합니다\n"
+"  --contents  컨텐츠 파일을 만드는 적업을 제어합니다\n"
 "  -c=?  이 설정 파일을 읽습니다\n"
 "  -o=?  임의의 옵션을 설정합니다"
 
@@ -449,7 +445,7 @@ msgstr "%s 파일의 마지막 수정 시각이 바뀌엇습니다"
 msgid "Archive has no control record"
 msgstr "아카이브에 컨트롤 기록이 없습니다"
 
-# FIXME: 왠 커서??
+# FIXME: 왠 커서??
 #: ftparchive/cachedb.cc:267
 msgid "Unable to get a cursor"
 msgstr "커서를 가져올 수 없습니다"
@@ -490,7 +486,7 @@ msgstr "트리에서 이동이 실패했습니다"
 msgid "Failed to open %s"
 msgstr "%s 파일을 여는 데 실패했습니다"
 
-# FIXME: ??
+# FIXME: ??
 #: ftparchive/writer.cc:245
 #, c-format
 msgid " DeLink %s [%s]\n"
@@ -704,7 +700,6 @@ msgid "%s (due to %s) "
 msgstr "%s (%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!"
@@ -772,7 +767,7 @@ msgstr "경고: 다음 꾸러미를 인증할 수 없습니다!"
 
 #: cmdline/apt-get.cc:693
 msgid "Authentication warning overridden.\n"
-msgstr ""
+msgstr "인증 경고를 무시합니다.\n"
 
 #: cmdline/apt-get.cc:700
 msgid "Install these packages without verification [y/N]? "
@@ -788,16 +783,15 @@ msgstr "문제가 발생했고 -y 옵션이 --force-yes 옵션 없이 사용되
 
 #: cmdline/apt-get.cc:755
 msgid "Internal error, InstallPackages was called with broken packages!"
-msgstr ""
+msgstr "내부 오류. 망가진 꾸러미에서 InstallPackages를 호출했습니다!"
 
 #: cmdline/apt-get.cc:764
 msgid "Packages need to be removed but remove is disabled."
 msgstr "꾸러미를 지워야 하지만 지우기가 금지되어 있습니다."
 
 #: cmdline/apt-get.cc:775
-#, fuzzy
 msgid "Internal error, Ordering didn't finish"
-msgstr "diversion을 추가하는 데 내부 오류"
+msgstr "내부 오류. 순서변경작업이 끝나지 않았습니다"
 
 #: cmdline/apt-get.cc:791 cmdline/apt-get.cc:1800 cmdline/apt-get.cc:1833
 msgid "Unable to lock the download directory"
@@ -811,6 +805,8 @@ msgstr "소스 목록을 읽을 수 없습니다."
 #: cmdline/apt-get.cc:816
 msgid "How odd.. The sizes didn't match, email apt@packages.debian.org"
 msgstr ""
+"이상하게도 크기가 서로 다릅니다. apt@packages.debian.org로 이메일을 보내주십"
+"시오."
 
 #: cmdline/apt-get.cc:821
 #, c-format
@@ -833,9 +829,9 @@ msgid "After unpacking %sB disk space will be freed.\n"
 msgstr "압축을 풀면 %s바이트의 디스크 공간이 비워집니다.\n"
 
 #: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1971
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't determine free space in %s"
-msgstr "%s에 충분한 공간이 없습니다"
+msgstr "%s의 여유 공간의 크기를 파악할 수 없습니다"
 
 #: cmdline/apt-get.cc:849
 #, c-format
@@ -848,19 +844,19 @@ msgstr ""
 "사소한 작업만 가능하도록(Trivial Only) 지정되었지만 이 작업은 사소한 작업이 "
 "아닙니다."
 
-# 입력을 받아야 한다.  한글 입력을 못 할 수 있으므로 원문 그대로 사용.
+# 입력을 받아야 한다.  한글 입력을 못 할 수 있으므로 원문 그대로 사용.
 #: cmdline/apt-get.cc:866
 msgid "Yes, do as I say!"
 msgstr "Yes, do as I say!"
 
 #: 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 ""
-"무언가 시스템에 해가 되는 작업을 하려고 합니다.\n"
+"시스템에 무언가 해가 되는 작업을 하려고 합니다.\n"
 "계속하시려면 다음 문구를 입력하십시오: '%s'\n"
 " ?] "
 
@@ -1013,7 +1009,7 @@ msgstr "주의, 정규식 '%2$s'에 대하여 %1$s을(를) 선택합니다\n"
 msgid "You might want to run `apt-get -f install' to correct these:"
 msgstr "다음을 바로잡으려면 `apt-get -f install'을 실행해 보십시오:"
 
-# FIXME: specify a solution?  무슨 솔루션?
+# FIXME: specify a solution?  무슨 솔루션?
 #: cmdline/apt-get.cc:1549
 msgid ""
 "Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
@@ -1075,9 +1071,8 @@ msgid "Done"
 msgstr "완료"
 
 #: cmdline/apt-get.cc:1768 cmdline/apt-get.cc:1776
-#, fuzzy
 msgid "Internal error, problem resolver broke stuff"
-msgstr "내부 오류, AllUpgrade때문에 망가졌습니다"
+msgstr "내부 오류, 문제 해결 프로그램이 사고쳤습니다"
 
 #: cmdline/apt-get.cc:1876
 msgid "Must specify at least one package to fetch source for"
@@ -1089,9 +1084,9 @@ msgid "Unable to find a source package for %s"
 msgstr "%s의 소스 꾸러미를 찾을 수 없습니다"
 
 #: cmdline/apt-get.cc:1950
-#, fuzzy, c-format
+#, c-format
 msgid "Skipping already downloaded file '%s'\n"
-msgstr "%s에 이미 풀려 있는 소스의 압축을 풀지 않고 건너 뜁니다.\n"
+msgstr "이미 다운로드 받은 파일 '%s'은(는) 다시 받지 않고 건너 뜁니다.\n"
 
 #: cmdline/apt-get.cc:1974
 #, c-format
@@ -1130,7 +1125,7 @@ msgstr "압축 풀기 명령 '%s' 실패.\n"
 #: cmdline/apt-get.cc:2060
 #, c-format
 msgid "Check if the 'dpkg-dev' package is installed.\n"
-msgstr ""
+msgstr "'dpkg-dev' 꾸러미가 설치되었는지를 확인해주십시오.\n"
 
 #: cmdline/apt-get.cc:2077
 #, c-format
@@ -1447,7 +1442,7 @@ msgid "Duplicate conf file %s/%s"
 msgstr "%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 "%s 파일을 쓰는 데 실패했습니다"
 
@@ -1662,9 +1657,8 @@ msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
 msgstr "%s 안의 CD-ROM을 마운트 해제할 수 없습니다. 사용 중일 것입니다."
 
 #: methods/cdrom.cc:169
-#, fuzzy
 msgid "Disk not found."
-msgstr "파일이 없습니다"
+msgstr "디스크가 없습니다"
 
 #: methods/cdrom.cc:177 methods/file.cc:79 methods/rsh.cc:264
 msgid "File not found"
@@ -1888,42 +1882,41 @@ msgid "Unable to connect to %s %s:"
 msgstr "%s %s에 연결할 수 없습니다:"
 
 #: methods/gpgv.cc:64
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't access keyring: '%s'"
-msgstr "'%s'의 주소를 알아낼 수 없습니다"
+msgstr "키링에 접근할 수 없습니다: '%s'"
 
 #: methods/gpgv.cc:99
 msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
-msgstr ""
+msgstr "E: Acquire::gpgv::Options의 인자 목록이 너무 깁니다. 종료하는 중."
 
 #: methods/gpgv.cc:198
 msgid ""
 "Internal error: Good signature, but could not determine key fingerprint?!"
-msgstr ""
+msgstr "내부 오류: 서명은 올바르지만 키 지문을 확인할 수 없습니다!"
 
 #: methods/gpgv.cc:203
 msgid "At least one invalid signature was encountered."
-msgstr ""
+msgstr "최소한 하나 이상의 서명이 잘못되었습니다."
 
 #: methods/gpgv.cc:207
 #, c-format
 msgid "Could not execute '%s' to verify signature (is gnupg installed?)"
-msgstr ""
+msgstr "서명을 인증하기 위한 '%s'를 실행할 수 없습니다(gnupg가 설치됐나요?)"
 
 #: methods/gpgv.cc:212
 msgid "Unknown error executing gpgv"
-msgstr ""
+msgstr "gpgv 실행 도중 알 수 없는 오류 발생"
 
 #: methods/gpgv.cc:243
-#, fuzzy
 msgid "The following signatures were invalid:\n"
-msgstr "다음 꾸러미를 더 설치할 것입니다:"
+msgstr "다음 서명이 올바르지 않습니다:\n"
 
 #: methods/gpgv.cc:250
 msgid ""
 "The following signatures couldn't be verified because the public key is not "
 "available:\n"
-msgstr ""
+msgstr "다음 서명들은 공개키가 없기 때문에 인증할 수 없습니다:\n"
 
 #: methods/gzip.cc:57
 #, c-format
@@ -2283,15 +2276,15 @@ msgstr "옵션"
 msgid "extra"
 msgstr "별도"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "의존성 트리를 만드는 중입니다"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "후보 버전"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "의존성 만들기"
 
@@ -2346,9 +2339,9 @@ msgid "Malformed line %u in source list %s (type)"
 msgstr "소스 리스트 %2$s의 %1$u번 줄이 잘못되었습니다 (타입)"
 
 #: apt-pkg/sourcelist.cc:244
-#, fuzzy, c-format
+#, c-format
 msgid "Type '%s' is not known on line %u in source list %s"
-msgstr "소스 리스트 %3$s의 %2$u번 줄의 '%1$s' 타입을 알 수 없습니다"
+msgstr "소스 목록 %3$s의 %2$u번 줄의 '%1$s' 타입을 알 수 없습니다"
 
 #: apt-pkg/sourcelist.cc:252 apt-pkg/sourcelist.cc:255
 #, c-format
@@ -2405,12 +2398,12 @@ msgstr "아카이브 디렉토리 %spartial이 빠졌습니다."
 #: apt-pkg/acquire.cc:823
 #, c-format
 msgid "Retrieving file %li of %li (%s remaining)"
-msgstr ""
+msgstr "파일 받아오는 중: %2$li 중 %1$li (%3$s 남았음)"
 
 #: apt-pkg/acquire.cc:825
-#, fuzzy, c-format
+#, c-format
 msgid "Retrieving file %li of %li"
-msgstr "파일 목록을 읽는 중입니다"
+msgstr "파일 받아오는 중: %2$li 중 %1$li"
 
 #: apt-pkg/acquire-worker.cc:113
 #, c-format
@@ -2423,12 +2416,10 @@ msgid "Method %s did not start correctly"
 msgstr "설치 방법 %s이(가) 올바르게 시작하지 않았습니다"
 
 #: 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 ""
-"미디어 바꾸기: '%2$s' 드라이브에 다음 레이블이 달린\n"
-"디스크를 넣고 enter를 누르십시오\n"
-" '%1$s'\n"
+"'%2$s' 드라이브에 '%1$s'로 표기된 디스크를 삽입하고 엔터를 눌러주십시오."
 
 #: apt-pkg/init.cc:120
 #, c-format
@@ -2559,7 +2550,7 @@ msgstr "MD5Sum이 맞지 않습니다"
 
 #: apt-pkg/acquire-item.cc:640
 msgid "There are no public key available for the following key IDs:\n"
-msgstr ""
+msgstr "다음 키 ID의 공개키가 없습니다:\n"
 
 #: apt-pkg/acquire-item.cc:753
 #, c-format
@@ -2690,54 +2681,54 @@ msgid "Wrote %i records with %i missing files and %i mismatched files\n"
 msgstr "레코드 %i개를 파일 %i개가 빠지고 %i개가 맞지 않은 상태로 썼습니다\n"
 
 #: apt-pkg/deb/dpkgpm.cc:358
-#, fuzzy, c-format
+#, c-format
 msgid "Preparing %s"
-msgstr "%s 파일을 여는 중입니다"
+msgstr "%s 준비 중"
 
 #: apt-pkg/deb/dpkgpm.cc:359
-#, fuzzy, c-format
+#, c-format
 msgid "Unpacking %s"
-msgstr "%s 파일을 여는 중입니다"
+msgstr "%s을(를) 푸는 중입니다"
 
 #: apt-pkg/deb/dpkgpm.cc:364
-#, fuzzy, c-format
+#, c-format
 msgid "Preparing to configure %s"
-msgstr "설정 파일 %s 파일을 여는 중입니다"
+msgstr "%s을(를) 설정할 준비를 하는 중입니다"
 
 #: apt-pkg/deb/dpkgpm.cc:365
-#, fuzzy, c-format
+#, c-format
 msgid "Configuring %s"
-msgstr "%s에 연결하는 중입니다"
+msgstr "%s 설정 중"
 
 #: apt-pkg/deb/dpkgpm.cc:366
-#, fuzzy, c-format
+#, c-format
 msgid "Installed %s"
-msgstr "  설치: "
+msgstr "%s 설치했음"
 
 #: apt-pkg/deb/dpkgpm.cc:371
 #, c-format
 msgid "Preparing for removal of %s"
-msgstr ""
+msgstr "%s을(를) 삭제할 준비 중"
 
 #: apt-pkg/deb/dpkgpm.cc:372
-#, fuzzy, c-format
+#, c-format
 msgid "Removing %s"
-msgstr "%s 파일을 여는 중입니다"
+msgstr "%s 지우는 중"
 
 #: apt-pkg/deb/dpkgpm.cc:373
-#, fuzzy, c-format
+#, c-format
 msgid "Removed %s"
-msgstr "추천"
+msgstr "%s 지움"
 
 #: apt-pkg/deb/dpkgpm.cc:378
-#, fuzzy, c-format
+#, c-format
 msgid "Preparing to completely remove %s"
-msgstr "설정 파일 %s 파일을 여는 중입니다"
+msgstr "%s을(를) 완전히 지울 준비를 하는 중입니다"
 
 #: apt-pkg/deb/dpkgpm.cc:379
-#, fuzzy, c-format
+#, c-format
 msgid "Completely removed %s"
-msgstr "%s을(를) 지우는 데 실패했습니다"
+msgstr "%s을(를) 완전히 지웠습니다"
 
 #: methods/rsh.cc:330
 msgid "Connection closed prematurely"

+ 4 - 4
po/nb.po

@@ -19,7 +19,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2005-02-09 10:45+0100\n"
 "Last-Translator: Hans Fredrik Nordhaug <hans@nordhaug.priv.no>\n"
 "Language-Team: Norwegian Bokmål <i18n-nb@lister.ping.ui.no>\n"
@@ -2304,15 +2304,15 @@ msgstr "valgfri"
 msgid "extra"
 msgstr "tillegg"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Skaper oversikt over avhengighetsforhold"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Versjons-kandidater"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Oppretter avhengighetsforhold"
 

Fichier diff supprimé car celui-ci est trop grand
+ 2728 - 0
po/ne.po


+ 4 - 4
po/nl.po

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2005-02-10 17:35+0100\n"
 "Last-Translator: Bart Cornelis <cobaco@linux.be>\n"
 "Language-Team: debian-l10n-dutch <debian-l10n-dutch@lists.debian.org>\n"
@@ -2322,15 +2322,15 @@ msgstr "optioneel"
 msgid "extra"
 msgstr "extra"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Boom van vereisten wordt opgebouwd"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Kandidaat-versies"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Generatie vereisten"
 

+ 4 - 4
po/nn.po

@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt_nn\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2005-02-14 23:30+0100\n"
 "Last-Translator: Håvard Korsvoll <korsvoll@skulelinux.no>\n"
 "Language-Team: Norwegian nynorsk <i18n-nn@lister.ping.uio.no>\n"
@@ -2287,15 +2287,15 @@ msgstr "valfri"
 msgid "extra"
 msgstr "tillegg"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Byggjer kravtre"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Kandidatversjonar"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Genererer kravforhold"
 

+ 4 - 4
po/pl.po

@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.5.5\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2006-01-23 15:32+0100\n"
 "Last-Translator: Bartosz Fenski <fenio@debian.org>\n"
 "Language-Team: Polish <pddp@debian.linux.org.pl>\n"
@@ -2292,15 +2292,15 @@ msgstr "opcjonalny"
 msgid "extra"
 msgstr "dodatkowy"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Budowanie drzewa zale¿no¶ci"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Kandyduj±ce wersje"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Generowanie zale¿no¶ci"
 

+ 4 - 4
po/pt.po

@@ -5,7 +5,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2005-03-07 22:20+0000\n"
 "Last-Translator: Rui Az. <astronomy@mail.pt>\n"
 "Language-Team: Portuguese <traduz@debianpt.org>\n"
@@ -2293,15 +2293,15 @@ msgstr "opcional"
 msgid "extra"
 msgstr "extra"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Construindo Árvore de Dependências"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Versões Candidatas"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Geração de Dependência"
 

+ 4 - 4
po/pt_BR.po

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2006-02-11 17:57-0200\n"
 "Last-Translator: André Luís Lopes <andrelop@debian.org>\n"
 "Language-Team: Debian-BR Project <debian-l10n-portuguese@lists.debian.org>\n"
@@ -2294,15 +2294,15 @@ msgstr "opcional"
 msgid "extra"
 msgstr "extra"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Construindo Árvore de Dependências"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Versões Candidatas"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Geração de Dependência"
 

+ 21 - 32
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, 2006.
+#
 msgid ""
 msgstr ""
-"Project-Id-Version: apt_nou\n"
+"Project-Id-Version: apt_po_ro\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
-"PO-Revision-Date: 2006-02-27 11:59+0200\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
+"PO-Revision-Date: 2006-06-25 12:58+0300\n"
 "Last-Translator: Sorin Batariuc <sorin@bonbon.net>\n"
-"Language-Team: Romanian <debian-l10-romanian@lists.debian.org>\n"
+"Language-Team: Romanian <debian-l10n-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.11.2\n"
+"X-Generator: KBabel 1.10.2\n"
 "Plural-Forms:  nplurals=2; plural=(n != 1);\n"
 
 #: cmdline/apt-cache.cc:135
@@ -1901,9 +1901,9 @@ msgid "Unable to connect to %s %s:"
 msgstr "Nu pot conecta la %s %s"
 
 #: methods/gpgv.cc:64
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't access keyring: '%s'"
-msgstr "Nu pot rezolva '%s'"
+msgstr "Nu pot accesa keyring: '%s'"
 
 #: methods/gpgv.cc:99
 msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
@@ -1921,9 +1921,10 @@ msgid "At least one invalid signature was encountered."
 msgstr "Cel puţin o semnătură invalidă a fost întâlnită."
 
 #: methods/gpgv.cc:207
-#, fuzzy, c-format
+#, c-format
 msgid "Could not execute '%s' to verify signature (is gnupg installed?)"
-msgstr " verificarea semnăturii (este instalat gnupg?)"
+msgstr ""
+"Nu pot executa '%s' pentru verificarea semnăturii (este instalat gnupg?)"
 
 #: methods/gpgv.cc:212
 msgid "Unknown error executing gpgv"
@@ -2302,15 +2303,15 @@ msgstr "opţional"
 msgid "extra"
 msgstr "extra"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Se construieşte arborele de dependenţă"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Versiuni candidat"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Generare dependenţe"
 
@@ -2423,14 +2424,14 @@ msgstr "Directorul de arhive %spartial lipseşte."
 #. only show the ETA if it makes sense
 #. two days
 #: apt-pkg/acquire.cc:823
-#, fuzzy, c-format
+#, c-format
 msgid "Retrieving file %li of %li (%s remaining)"
 msgstr "Se descarcă fişierul %li din %li (%s rămas)"
 
 #: apt-pkg/acquire.cc:825
-#, fuzzy, c-format
+#, c-format
 msgid "Retrieving file %li of %li"
-msgstr "Citire derulare fişier"
+msgstr "Se descarcă fişierul %li din %li"
 
 #: apt-pkg/acquire-worker.cc:113
 #, c-format
@@ -2760,27 +2761,15 @@ msgid "Removed %s"
 msgstr "Şters %s"
 
 #: apt-pkg/deb/dpkgpm.cc:378
-#, fuzzy, c-format
+#, c-format
 msgid "Preparing to completely remove %s"
-msgstr "Se pregăteşte configurarea %s"
+msgstr "Se pregăteşte ştergerea completă a %s"
 
 #: apt-pkg/deb/dpkgpm.cc:379
-#, fuzzy, c-format
+#, c-format
 msgid "Completely removed %s"
-msgstr "Eşuare în ştergerea %s"
+msgstr "Şters complet %s"
 
 #: methods/rsh.cc:330
 msgid "Connection closed prematurely"
 msgstr "Conexiune închisă prematur"
-
-#~ msgid "Reading file list"
-#~ msgstr "Citirea listei de fişiere"
-
-#~ msgid "Could not execute "
-#~ msgstr "Nu s-a putut executa "
-
-#~ msgid "Preparing for remove with config %s"
-#~ msgstr "Se pregăteşte pentru ştergere inclusiv configurarea %s"
-
-#~ msgid "Removed with config %s"
-#~ msgstr "Şters inclusiv configurarea %s"

+ 4 - 4
po/ru.po

@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt_po_ru\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2006-01-21 14:55+0300\n"
 "Last-Translator: Yuri Kozlov <kozlov.y@gmail.com>\n"
 "Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
@@ -2326,15 +2326,15 @@ msgstr "необязательный"
 msgid "extra"
 msgstr "дополнительный"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Построение дерева зависимостей"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Версии-кандидаты"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Генерирование зависимостей"
 

+ 4 - 5
po/sk.po

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2006-05-29 15:33+0200\n"
 "Last-Translator: Peter Mann <Peter.Mann@tuke.sk>\n"
 "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
@@ -2275,15 +2275,15 @@ msgstr "voliteľný"
 msgid "extra"
 msgstr "extra"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Vytvára sa strom závislostí"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Kandidátske verzie"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Generovanie závislostí"
 
@@ -2732,4 +2732,3 @@ msgstr "Balík '%s' je úplne odstránený"
 #: methods/rsh.cc:330
 msgid "Connection closed prematurely"
 msgstr "Spojenie bolo predčasne ukončené"
-

+ 4 - 4
po/sl.po

@@ -4,7 +4,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.5.5\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2005-02-16 22:18+0100\n"
 "Last-Translator: Jure Èuhalev <gandalf@owca.info>\n"
 "Language-Team: Slovenian <sl@li.org>\n"
@@ -2278,15 +2278,15 @@ msgstr "izbirno"
 msgid "extra"
 msgstr "dodatno"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Gradnja drevesa odvisnosti"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Razlièice kandidatov"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Ustvarjanje odvisnosti"
 

Fichier diff supprimé car celui-ci est trop grand
+ 197 - 232
po/sv.po


+ 4 - 4
po/tl.po

@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\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"
@@ -2307,15 +2307,15 @@ msgstr "optional"
 msgid "extra"
 msgstr "extra"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Ginagawa ang puno ng mga dependensiya"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Bersyong Kandidato"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Pagbuo ng Dependensiya"
 

+ 19 - 18
po/vi.po

@@ -6,15 +6,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
-"PO-Revision-Date: 2006-01-22 13:04+1030\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
+"PO-Revision-Date: 2006-05-19 22:19+0930\n"
 "Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
 "Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0\n"
-"X-Generator: LocFactoryEditor 1.6b30\n"
+"X-Generator: LocFactoryEditor 1.5.5b43u\n"
 
 #: cmdline/apt-cache.cc:135
 #, c-format
@@ -1927,9 +1927,9 @@ msgid "Unable to connect to %s %s:"
 msgstr "Không thể kết nối đến %s %s:"
 
 #: methods/gpgv.cc:64
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't access keyring: '%s'"
-msgstr "Không thể tháo gỡ « %s »"
+msgstr "Không thể truy cập vòng khoá « %s »"
 
 #: methods/gpgv.cc:99
 msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
@@ -1945,9 +1945,10 @@ msgid "At least one invalid signature was encountered."
 msgstr "Gặp ít nhất một chữ ký không hợp lệ."
 
 #: methods/gpgv.cc:207
-#, fuzzy, c-format
+#, c-format
 msgid "Could not execute '%s' to verify signature (is gnupg installed?)"
-msgstr " để kiểm chứng chữ ký (gnupg có được cài đặt chưa?)"
+msgstr ""
+"Không thể thực hiện « %s » để kiểm chứng chữ ký (gnupg có được cài đặt chưa?)"
 
 #: methods/gpgv.cc:212
 msgid "Unknown error executing gpgv"
@@ -2326,15 +2327,15 @@ msgstr "tùy chọn"
 msgid "extra"
 msgstr "thêm"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "Đang xây dụng cây cách phụ thuộc..."
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "Phiên bản ứng cử"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "Tạo ra cách phụ thuộc"
 
@@ -2449,14 +2450,14 @@ msgstr "Thiếu thư mục kho « %spartial »."
 #. only show the ETA if it makes sense
 #. two days
 #: apt-pkg/acquire.cc:823
-#, fuzzy, c-format
+#, c-format
 msgid "Retrieving file %li of %li (%s remaining)"
-msgstr "Đang tải về tập tin %li trên %li (%s còn lại)"
+msgstr "Đang lấy tập tin %li trên %li (%s còn lại)..."
 
 #: apt-pkg/acquire.cc:825
-#, fuzzy, c-format
+#, c-format
 msgid "Retrieving file %li of %li"
-msgstr "Đang đọc danh sách tập tin..."
+msgstr "Đang lấy tập tin %li trên %li..."
 
 #: apt-pkg/acquire-worker.cc:113
 #, c-format
@@ -2783,14 +2784,14 @@ msgid "Removed %s"
 msgstr "Đã gỡ bỏ %s"
 
 #: apt-pkg/deb/dpkgpm.cc:378
-#, fuzzy, c-format
+#, c-format
 msgid "Preparing to completely remove %s"
-msgstr "Đang chuẩn bị cấu hình %s..."
+msgstr "Đang chuẩn bị gỡ bỏ hoàn toàn %s..."
 
 #: apt-pkg/deb/dpkgpm.cc:379
-#, fuzzy, c-format
+#, c-format
 msgid "Completely removed %s"
-msgstr "Việc gỡ bỏ %s bị lỗi"
+msgstr "Mới gỡ bỏ hoàn toàn %s"
 
 #: methods/rsh.cc:330
 msgid "Connection closed prematurely"

+ 4 - 4
po/zh_CN.po

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.5.23\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2006-02-22 14:20+1300\n"
 "Last-Translator: Carlos Z.F. Liu <carlosliu@users.sourceforge.net>\n"
 "Language-Team: Debian Chinese [GB] <debian-chinese-gb@lists.debian.org>\n"
@@ -2258,15 +2258,15 @@ msgstr "可选"
 msgid "extra"
 msgstr "额外"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "正在分析软件包的依赖关系树"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "候选版本"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "生成依赖关系"
 

+ 5 - 5
po/zh_TW.po

@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: 0.5.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 07:33-0500\n"
+"POT-Creation-Date: 2006-05-27 13:46+0200\n"
 "PO-Revision-Date: 2005-02-19 22:24+0800\n"
 "Last-Translator: Asho Yeh <asho@debian.org.tw>\n"
 "Language-Team: Chinese/Traditional <zh-l10n@linux.org.tw>\n"
@@ -665,7 +665,7 @@ msgstr "但是它只是虛擬的套件"
 
 #: cmdline/apt-get.cc:341
 msgid "but it is not installed"
-msgstr "但是『%s』卻還沒有安裝。"
+msgstr "但是『』卻還沒有安裝。"
 
 #: cmdline/apt-get.cc:341
 msgid "but it is not going to be installed"
@@ -2270,15 +2270,15 @@ msgstr "次要"
 msgid "extra"
 msgstr "添加"
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
 msgid "Building dependency tree"
 msgstr "了解套件依存關係中"
 
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:62
 msgid "Candidate versions"
 msgstr "候選版本"
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:91
 msgid "Dependency generation"
 msgstr "產生套件依存關係"
 

share/debian-archive.gpg.moved → share/debian-archive.gpg


+ 7 - 0
test/hash.cc

@@ -1,5 +1,6 @@
 #include <apt-pkg/md5.h>
 #include <apt-pkg/sha1.h>
+#include <apt-pkg/sha256.h>
 #include <apt-pkg/strutl.h>
 #include <iostream>
 
@@ -57,6 +58,12 @@ int main()
 		      "d174ab98d277d9f5a5611c2c9f419d9f");
    Test<MD5Summation>("12345678901234567890123456789012345678901234567890123456789012345678901234567890",
 		      "57edf4a22be3c955ac49da2e2107b67a");
+
+   // SHA-256, From FIPS 180-2
+   Test<SHA256Summation>("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 
+			 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1");
+   
+
    return 0; 
 }