Michael Vogt лет назад: 19
Родитель
Сommit
3ca6583849

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

@@ -672,7 +672,7 @@ bool pkgAcqMetaIndex::VerifyVendor(string Message)
    // check for missing sigs (that where not fatal because otherwise we had
    // bombed earlier)
    string missingkeys;
-   string msg = _("There are no public key available for the "
+   string msg = _("There is no public key available for the "
 		  "following key IDs:\n");
    pos = Message.find("NO_PUBKEY ");
    if (pos != std::string::npos)

+ 2 - 1
apt-pkg/contrib/progress.cc

@@ -115,6 +115,8 @@ bool OpProgress::CheckChange(float Interval)
    
    if ((int)LastPercent == (int)Percent)
       return false;
+
+   LastPercent = Percent;
    
    if (Interval == 0)
       return false;
@@ -126,7 +128,6 @@ bool OpProgress::CheckChange(float Interval)
    if (Diff < Interval)
       return false;
    LastTime = Now;   
-   LastPercent = Percent;
    return true;
 }
 									/*}}}*/

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

@@ -18,6 +18,12 @@
  * any later version.
  *
  */
+
+#ifdef __GNUG__
+#pragma implementation "apt-pkg/sha256.h"
+#endif
+
+
 #define SHA256_DIGEST_SIZE      32
 #define SHA256_HMAC_BLOCK_SIZE  64
 

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

@@ -20,7 +20,6 @@
 
 #include <string>
 #include <algorithm>
-#include <stdint.h>
 
 using std::string;
 using std::min;

+ 1 - 1
apt-pkg/deb/debindexfile.cc

@@ -305,7 +305,7 @@ pkgCache::PkgFileIterator debPackagesIndex::FindInCache(pkgCache &Cache) const
    pkgCache::PkgFileIterator File = Cache.FileBegin();
    for (; File.end() == false; File++)
    {
-      if (FileName != File.FileName())
+       if (File.FileName() == NULL || FileName != File.FileName())
 	 continue;
       
       struct stat St;

+ 9 - 19
apt-pkg/deb/debsrcrecords.cc

@@ -18,6 +18,8 @@
 #include <apt-pkg/error.h>
 #include <apt-pkg/strutl.h>
 #include <apt-pkg/configuration.h>
+
+using std::max;
 									/*}}}*/
 
 // SrcRecordParser::Binaries - Return the binaries field		/*{{{*/
@@ -34,31 +36,19 @@ const char **debSrcRecordParser::Binaries()
    if (Bins.empty() == true || Bins.length() >= 102400)
       return 0;
    
-   // Workaround for #236688.  Only allocate a new buffer if the field
-   // is large, to avoid a performance penalty
-   char *BigBuf = NULL;
-   char *Buf;
-   if (Bins.length() > sizeof(Buffer))
-   {
-      BigBuf = new char[Bins.length()];
-      Buf = BigBuf;
-   }
-   else
+   if (Bins.length() >= BufSize)
    {
-      Buf = Buffer;
+      delete [] Buffer;
+      // allocate new size based on buffer (but never smaller than 4000)
+      BufSize = max((unsigned long)4000, max((unsigned long)Bins.length()+1,2*BufSize));
+      Buffer = new char[BufSize];
    }
 
-   strcpy(Buf,Bins.c_str());
-   if (TokSplitString(',',Buf,StaticBinList,
+   strcpy(Buffer,Bins.c_str());
+   if (TokSplitString(',',Buffer,StaticBinList,
 		      sizeof(StaticBinList)/sizeof(StaticBinList[0])) == false)
-   {
-      if (BigBuf != NULL)
-         delete BigBuf;
       return 0;
-   }
 
-   if (BigBuf != NULL)
-      delete BigBuf;
    return (const char **)StaticBinList;
 }
 									/*}}}*/

+ 5 - 5
apt-pkg/deb/debsrcrecords.h

@@ -24,9 +24,10 @@ class debSrcRecordParser : public pkgSrcRecords::Parser
    FileFd Fd;
    pkgTagFile Tags;
    pkgTagSection Sect;
-   char Buffer[10000];
    char *StaticBinList[400];
    unsigned long iOffset;
+   char *Buffer;
+   unsigned long BufSize;
    
    public:
 
@@ -49,10 +50,9 @@ class debSrcRecordParser : public pkgSrcRecords::Parser
    };
    virtual bool Files(vector<pkgSrcRecords::File> &F);
 
-   debSrcRecordParser(string File,pkgIndexFile const *Index) :
-                   Parser(Index),      
-                   Fd(File,FileFd::ReadOnly),
-                   Tags(&Fd,102400) {};
+   debSrcRecordParser(string File,pkgIndexFile const *Index) 
+      : Parser(Index), Fd(File,FileFd::ReadOnly), Tags(&Fd,102400), 
+        Buffer(0), BufSize(0) {}
 };
 
 #endif

+ 30 - 14
apt-pkg/deb/dpkgpm.cc

@@ -626,15 +626,22 @@ bool pkgDPkgPM::Go(int OutStatusFd)
 	    
 	 */
 	 char* list[5];
-	 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;
+	 //        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
+	 TokSplitString(':', line, list, sizeof(list)/sizeof(list[0]));
 	 char *pkg = list[1];
 	 char *action = _strstrip(list[2]);
+	 if( pkg == NULL || action == NULL) 
+	 {
+	    if (_config->FindB("Debug::pkgDPkgProgressReporting",false) == true)
+	       std::clog << "ignoring line: not enough ':'" << std::endl;
+	    // reset the line buffer
+	    line[0]=0;
+	    continue;
+	 }
 
 	 if(strncmp(action,"error",strlen("error")) == 0)
 	 {
@@ -706,14 +713,23 @@ bool pkgDPkgPM::Go(int OutStatusFd)
       // Check for an error code.
       if (WIFEXITED(Status) == 0 || WEXITSTATUS(Status) != 0)
       {
-	 RunScripts("DPkg::Post-Invoke");
-	 if (WIFSIGNALED(Status) != 0 && WTERMSIG(Status) == SIGSEGV)
-	    return _error->Error("Sub-process %s received a segmentation fault.",Args[0]);
-
-	 if (WIFEXITED(Status) != 0)
-	    return _error->Error("Sub-process %s returned an error code (%u)",Args[0],WEXITSTATUS(Status));
+	 // if it was set to "keep-dpkg-runing" then we won't return
+	 // here but keep the loop going and just report it as a error
+	 // for later
+	 bool stopOnError = _config->FindB("Dpkg::StopOnError",true);
 	 
-	 return _error->Error("Sub-process %s exited unexpectedly",Args[0]);
+	 if(stopOnError)
+	    RunScripts("DPkg::Post-Invoke");
+
+	 if (WIFSIGNALED(Status) != 0 && WTERMSIG(Status) == SIGSEGV) 
+	    _error->Error("Sub-process %s received a segmentation fault.",Args[0]);
+	 else if (WIFEXITED(Status) != 0)
+	    _error->Error("Sub-process %s returned an error code (%u)",Args[0],WEXITSTATUS(Status));
+	 else 
+	    _error->Error("Sub-process %s exited unexpectedly",Args[0]);
+
+	 if(stopOnError)
+	    return false;
       }      
    }
 

+ 37 - 4
apt-pkg/tagfile.cc

@@ -59,19 +59,52 @@ pkgTagFile::~pkgTagFile()
    delete [] Buffer;
 }
 									/*}}}*/
+// TagFile::Resize - Resize the internal buffer				/*{{{*/
+// ---------------------------------------------------------------------
+/* Resize the internal buffer (double it in size). Fail if a maximum size
+ * size is reached.
+ */
+bool pkgTagFile::Resize()
+{
+   char *tmp;
+   unsigned long EndSize = End - Start;
+
+   // fail is the buffer grows too big
+   if(Size > 1024*1024+1)
+      return false;
+
+   // get new buffer and use it
+   tmp = new char[2*Size];
+   memcpy(tmp, Buffer, Size);
+   Size = Size*2;
+   delete [] Buffer;
+   Buffer = tmp;
+
+   // update the start/end pointers to the new buffer
+   Start = Buffer;
+   End = Start + EndSize;
+   return true;
+}
+
 // TagFile::Step - Advance to the next section				/*{{{*/
 // ---------------------------------------------------------------------
-/* If the Section Scanner fails we refill the buffer and try again. */
+/* If the Section Scanner fails we refill the buffer and try again. 
+ * If that fails too, double the buffer size and try again until a
+ * maximum buffer is reached.
+ */
 bool pkgTagFile::Step(pkgTagSection &Tag)
 {
-   if (Tag.Scan(Start,End - Start) == false)
+   while (Tag.Scan(Start,End - Start) == false)
    {
       if (Fill() == false)
 	 return false;
       
-      if (Tag.Scan(Start,End - Start) == false)
+      if(Tag.Scan(Start,End - Start))
+	 break;
+
+      if (Resize() == false)
 	 return _error->Error(_("Unable to parse package file %s (1)"),
-			      Fd.Name().c_str());
+				 Fd.Name().c_str());
    }
    Start += Tag.size();
    iOffset += Tag.size();

+ 4 - 3
apt-pkg/tagfile.h

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

+ 1 - 1
apt-pkg/vendorlist.cc

@@ -113,7 +113,7 @@ bool pkgVendorList::CreateList(Configuration& Cnf)
 
 const Vendor* pkgVendorList::LookupFingerprint(string Fingerprint)
 {
-   for (const_iterator I = begin(); I != end(); ++I)
+   for (const_iterator I = VendorList.begin(); I != VendorList.end(); ++I)
    {
       if ((*I)->LookupFingerprint(Fingerprint) != "")
          return *I;

+ 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.45ubuntu15")
+AC_DEFINE_UNQUOTED(VERSION,"0.6.46.4ubuntu1")
 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 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"
+ALL_LINGUAS="bg bs ca cs cy da de dz el en_GB es eu fi fr gl hu it ja ko ku 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)

+ 2 - 0
debian/apt.postinst

@@ -20,6 +20,8 @@ case "$1" in
                 cp /usr/share/apt/ubuntu-archive.gpg /etc/apt/trusted.gpg
         fi
 
+	apt-key update
+
     ;;
 
     abort-upgrade|abort-remove|abort-deconfigure)

+ 111 - 4
debian/changelog

@@ -1,17 +1,120 @@
-apt (0.6.45ubuntu15) edgy; urgency=low
+apt (0.6.46.4ubuntu1) feisty; urgency=low
+
+  * 
+
+ --
+
+apt (0.6.46.4) unstable; urgency=high
+
+  * ack NMU (closes: #401017)
+  * added apt-secure.8 to "See also" section
+  * apt-pkg/deb/dpkgpm.cc:
+    - added "Dpkg::StopOnError" variable that controls if apt
+      will abort on errors from dpkg
+  * apt-pkg/deb/debsrcrecords.{cc,h}:
+    - make the Buffer grow dynmaically (closes: #400874)
+  * Merged from Christian Perrier bzr branch:
+    - uk.po: New Ukrainian translation: 483t28f3u
+    - el.po: Update to 503t9f2u
+    - de.po: Updates and corrections.
+  * apt-pkg/contrib/progress.cc:
+    - OpProgress::CheckChange optimized, thanks to Paul Brook
+      (closes: #398381)
+  * apt-pkg/contrib/sha256.cc:
+    - fix building with noopt
+
+ -- Michael Vogt <mvo@debian.org>  Thu,  7 Dec 2006 10:49:50 +0100
+
+apt  (0.6.46.3-0.2) unstable; urgency=high
+
+  * Non-maintainer upload with permission of Michael Vogt.
+  * Fix FTBFS on most arches (regression from the fix of #400874)
+
+ -- Andreas Barth <aba@not.so.argh.org>  Tue,  5 Dec 2006 15:51:22 +0000 
+  
+apt (0.6.46.3-0.1) unstable; urgency=high
+
+  * Non-maintainer upload with permission of Michael Vogt.
+  * Fix segfault at apt-get source. Closes: #400874
+  * Add apt-key update in postinst, so that debian-archive-keyring doesn't
+    need to depend on apt >= 0.6. Closes: #401114
+  * Don't double-queue pdiff files. Closes: #401017
+  
+ -- Andreas Barth <aba@not.so.argh.org>  Tue,  5 Dec 2006 10:34:56 +0000
+
+apt (0.6.46.3ubuntu1) feisty; urgency=low
 
   * doc/apt-get.8.xml:
-    - documented autoremove, thanks to Vladimír Lapáček 
+    - documented autoremove, thanks to Vladimír Lapá%Gč%@ek 
       (lp: #62919)
   * fix broken i18n in the dpkg progress reporting, thanks to 
     Frans Pop and Steinar Gunderson. (closes: #389261)
   * po/en_GB.po:
     - typo (lp: #61270)
+  * add apt-secure.8 to "See also" section
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 23 Nov 2006 07:24:12 +0100
 
- -- 
+apt (0.6.46.3) unstable; urgency=low
 
-apt (0.6.45ubuntu14) edgy; urgency=low
+  * apt-pkg/deb/dpkgpm.cc:
+    - make progress reporting robust against multiline error
+      messages 
+
+  * Merged from Christian Perrier bzr branch:
+     - ca.po: Updated to 514t
+     - be.po: Updated to 514t
+     - it.po: Updated to 514t
+     - hu.po: Updated to 514t
+     - zh_TW.po: Updated to 514t
+     - ar.po: Updated to 293t221u.
+     - ru.po: Updated to 514t. Closes: #392466
+     - nb.po: Updated to 514t. Closes: #392466
+     - pt.po: Updated to 514t. Closes: #393199
+     - fr.po: One spelling error corrected: s/accèder/accéder
+     - km.po: Updated to 514t.
+     - ko.po: Updated to 514t.
+     - bg.po: Updated to 514t.
+     - de.po: Updated to 514t.
+     - en_GB.po: Updated to 514t.
+
+ -- Michael Vogt <mvo@debian.org>  Thu, 2 Nov 2006 11:37:58 +0100 
+
+apt (0.6.46.2) unstable; urgency=low
+
+  * Merged from Christian Perrier bzr branch:
+    - es.po: Updated to 514t. Closes: #391661
+    - da.po: Updated to 514t. Closes: #391424
+    - cs.po: Updated. Closes: #391064
+    - es.po: Updated to 514t. Closes: #391661
+    - da.po: Updated to 514t. Closes: #391424
+  
+ -- Michael Vogt <mvo@debian.org>  Wed, 11 Oct 2006 09:03:15 +0200
+
+apt (0.6.46.1) unstable; urgency=low
+
+  * methods/gzip.cc:
+    - deal with empty files 
+  * Applied patch from Daniel Schepler to make apt bin-NMU able.  
+    (closes: bug#359634)
+  * rebuild against current g++ because of:
+    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29289
+    (closes: #390189)
+  * fix broken i18n in the dpkg progress reporting, thanks to 
+    Frans Pop and Steinar Gunderson. (closes: #389261)
+  * Merged from Christian Perrier bzr branch:
+    * fi.po: Updated to 514t. Closes: #390149
+    * eu.po: Updated to 514t. Closes: #389725
+    * vi.po: Updated to 514t. Closes: #388555
+  * make the internal buffer in pkgTagFile grow dynamically
+    (closes: #388708)
+  
+ -- Michael Vogt <mvo@debian.org>  Mon,  2 Oct 2006 20:42:20 +0200
+
+apt (0.6.46) unstable; urgency=low
 
+  * debian/control:
+    - switched to libdb4.4 for building (closes: #381019)
   * cmdline/apt-get.cc:
     - fix in the TryInstallTask() code to make sure that all package
       there are marked manual install (lp: #61684)
@@ -53,6 +156,10 @@ apt (0.6.45ubuntu10) edgy; urgency=low
   * doc/examples/sources.list:
     - removed non-us.debian.org from the example (closes: #380030,#316196)
   * Merged from Christian Perrier bzr branch:
+    * ro.po: Updated to 514t. Closes: #388402
+    * dz.po: Updated to 514t. Closes: #388184
+    * it.po: Fixed typos. Closes: #387812
+    * ku.po: New kurdish translation. Closes: #387766
     * sk.po: Updated to 514t. Closes: #386851
     * ja.po: Updated to 514t. Closes: #386537
     * gl.po: Updated to 514t. Closes: #386397

+ 1 - 1
debian/rules

@@ -38,7 +38,7 @@ build:
 
 PKG=apt
 DEB_BUILD_PROG:=debuild --preserve-envvar PATH --preserve-envvar CCACHE_DIR -us -uc $(DEB_BUILD_PROG_OPTS)
-APT_DEBVER=$(shell dpkg-parsechangelog |sed -n -e '/^Version:/s/^Version: //p')
+APT_DEBVER=$(shell dpkg-parsechangelog |sed -n -e '/^Version:/s/^Version: //p' -e 's/\+.*$$//')
 APT_CONFVER=$(shell sed -n -e 's/^AC_DEFINE_UNQUOTED(VERSION,"\(.*\)")/\1/p' configure.in)
 APT_CVSTAG=$(shell echo "$(APT_DEBVER)" | sed -e 's/^/v/' -e 's/\./_/g')
 

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

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

+ 2 - 1
doc/apt.8

@@ -32,7 +32,8 @@ None.
 .BR apt-cache (8),
 .BR apt-get (8),
 .BR apt.conf (5),
-.BR sources.list (5)
+.BR sources.list (5),
+.BR apt-secure (8)
 .SH DIAGNOSTICS
 apt returns zero on normal operation, decimal 100 on error.
 .SH BUGS

+ 5 - 1
doc/examples/configure-index

@@ -245,6 +245,10 @@ DPkg
    // Control the size of the command line passed to dpkg.
    MaxBytes 1024;
    MaxArgs 350;
+
+   // controls if apt will apport on the first dpkg error or if it 
+   // tries to install as many packages as possible
+   StopOnError "true";
 }
 
 /* Options you can set to see some debugging text They correspond to names
@@ -260,7 +264,7 @@ Debug
   pkgDPkgProgressReporting "false";
   pkgOrderList "false";
   pkgAutoRemove "false";   // show information about automatic removes
-
+  BuildDeps "false";
   pkgInitialize "false";   // This one will dump the configuration space
   NoLocking "false";
   Acquire::Ftp "false";    // Show ftp command traffic

+ 2 - 2
doc/fr/apt-get.fr.8.xml

@@ -175,8 +175,8 @@ d'
 Avec la commande <literal>source</literal>, <command>apt-get</command> récupère des paquets
 sources. APT examine les paquets disponibles pour choisir le paquet source
 à récupérer. Il trouve ensuite et télécharge dans le répertoire courant
-la version la plus récente. Les paquets source sont suivis différemment que
-les paquets binaires, via les lignes de type <literal>deb-src</literal> dans le fichier
+la version la plus récente. Les paquets source sont gérés indépendamment
+des paquets binaires, via les lignes de type <literal>deb-src</literal> dans le fichier
 &sources-list;. On n'obtiendra probablement pas les mêmes sources que celles
 du paquet installé ou celles du paquet qu'on pourrait installer. Si l'option 
 <option>--compile</option> est spécifiée, le paquet est compilé en un binaire .deb 

+ 2 - 2
doc/fr/apt_preferences.fr.5.xml

@@ -208,7 +208,7 @@ d'
 <programlisting>
 Package: *
 Pin: release a=unstable
-Pin-Priority: 500
+Pin-Priority: 50
 </programlisting>
 
 <simpara>L'entrée suivante affecte une priorité haute à toutes les versions
@@ -578,4 +578,4 @@ apt-get install <replaceable>paquet</replaceable>/unstable
 
  &manbugs;
 &traducteur;
-</refentry>
+</refentry>

+ 1 - 1
doc/fr/makefile

@@ -7,7 +7,7 @@ include ../../buildlib/defaults.mak
 
 # Do not use XMLTO, build the manpages directly with XSLTPROC
 XSLTPROC=/usr/bin/xsltproc
-STYLESHEET=/usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl
+STYLESHEET=./style.fr.xsl
 
 
 # Man pages

+ 9 - 0
doc/fr/style.fr.xsl

@@ -0,0 +1,9 @@
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:import href="/usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl" />
+
+<xsl:param name="man.output.encoding" select="'ISO-8859-15'" />
+
+</xsl:stylesheet>

+ 1 - 1
doc/ja/sources.list.ja.5.xml

@@ -391,7 +391,7 @@ deb http://http.us.debian.org/debian dists/stable-updates/
 <!--
    <para>Uses HTTP to access the archive at nonus.debian.org, under the
    debian-non-US directory, and uses only files found under
-   <filename>unstable/binary-i3866</filename> on i386 machines, 
+   <filename>unstable/binary-i386</filename> on i386 machines, 
    <filename>unstable/binary-m68k</filename> on m68k, and so
    forth for other supported architectures. [Note this example only 
    illustrates how to use the substitution variable; non-us is no longer 

+ 2 - 2
doc/ja/style.ja.xsl

@@ -4,6 +4,6 @@
 
 <xsl:import href="/usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl" />
 
-<xsl:param name="chunker.output.encoding" select="'EUC-JP'" />
+<xsl:param name="man.output.encoding" select="'EUC-JP'" />
 
-</xsl:stylesheet>
+</xsl:stylesheet>

+ 7 - 0
methods/gzip.cc

@@ -52,6 +52,13 @@ bool GzipMethod::Fetch(FetchItem *Itm)
    // Open the source and destination files
    FileFd From(Path,FileFd::ReadOnly);
 
+   // if the file is empty, just rename it and return
+   if(From.Size() == 0) 
+   {
+      rename(Path.c_str(), Itm->DestFile.c_str());
+      return true;
+   }
+
    int GzOut[2];   
    if (pipe(GzOut) < 0)
       return _error->Errno("pipe",_("Couldn't open pipe for %s"),Prog);

+ 113 - 0
po/ChangeLog

@@ -1,3 +1,116 @@
+2006-11-04  Artem Bondarenko  <artem.brz@gmail.com>
+
+	* uk.po: New Ukrainian translation: 483t28f3u
+
+2006-11-02  Emmanuel Galatoulas  <galas@tee.gr>
+
+	* el.po: Update to 503t9f2u
+
+2006-10-24  Michael Piefel  <piefel@debian.org>
+
+	* de.po: Updates and corrections.
+
+2006-10-22  Jordi Mallach  <jordi@debian.org>
+
+	* ca.po: Updated to 514t
+
+2006-10-22  Bart Cornelis  <cobaco@linux.be>
+
+	* be.po: Updated to 514t
+
+2006-10-21  Samuele Giovanni Tonon  <samu@debian.org>
+
+	* it.po: Updated to 514t
+
+2006-10-21  SZERVÁC Attila  <sas@321.hu>
+
+	* hu.po: Updated to 514t
+
+2006-10-21  Asho Yeh  <asho@debian.org.tw>
+
+	* zh_TW.po: Updated to 514t
+
+2006-10-21  Ossama M. Khayat  <okhayat@yahoo.com>
+
+	* ar.po: Updated to 293t221u.
+
+2006-10-16  Yuri Kozlov  <kozlov.y@gmail.com>
+
+	* ru.po: Updated to 514t. Closes: #392466
+
+2006-10-16  Hans Fredrik Nordhaug  <hans@nordhaug.priv.no>
+
+	* nb.po: Updated to 514t. Closes: #392466
+
+2006-10-15  Rui Az.  <astronomy@mail.pt>
+
+	* pt.po: Updated to 514t. Closes: #393199
+
+2006-10-14  Christian Perrier  <bubulle@debian.org>
+
+	* fr.po: One spelling error corrected: s/accèder/accéder
+
+2006-10-13  Khoem Sokhem  <khoemsokhem@khmeros.info>
+
+	* km.po: Updated to 514t.
+
+2006-10-13  Sunjae Park  <darehanl@gmail.com>
+
+	* ko.po: Updated to 514t.
+
+2006-10-12  Yavor Doganov  <yavor@doganov.org>
+
+	* bg.po: Updated to 514t.
+
+2006-10-12  Michael Piefel  <piefel@debian.org>
+
+	* de.po: Updated to 514t.
+
+2006-10-12  Neil Williams  <linux@codehelp.co.uk>
+
+	* en_GB.po: Updated to 514t.
+
+2006-10-08  Javier Fernández-Sanguino Peña  <jfs@computer.org>
+
+	* es.po: Updated to 514t. Closes: #391661
+
+2006-10-06  Claus Hindsgaul  <claus.hindsgaul@gmail.com>
+
+	* da.po: Updated to 514t. Closes: #391424
+
+2006-10-04  Miroslav Kure  <kurem@upcase.inf.upol.cz>
+
+	* cs.po: Updated. Closes: #391064
+
+2006-09-29  Tapio Lehtonen  <tale@debian.org>
+
+	* fi.po: Updated to 514t. Closes: #390149
+
+2006-09-27  Piarres Beobide  <pi@beobide.net>
+
+	* eu.po: Updated to 514t. Closes: #389725
+
+2006-09-21  Clytie Siddall  <clytie@riverland.net.au>
+
+	* vi.po: Updated to 514t. Closes: #388555
+
+2006-09-20  Sorin Batariuc  <sorin@bonbon.net>
+
+	* ro.po: Updated to 514t. Closes: #388402
+
+2006-09-18  Kinley Tshering  <gasepkuenden2k3@hotmail.com>
+
+	* dz.po: Updated to 514t. Closes: #388184
+
+2006-09-17  Davide Viti  <zinosat@tiscali.it> 
+
+	* it.po: Fixed typos. Closes: #387812
+
+2006-09-17  Erdal Ronahi  <erdal.ronahi@gmail.com>
+
+	* ku.po: New kurdish translation. Closes: #387766
+	         71t40f403u
+
 2006-09-10  Peter Mann  <Peter.Mann@tuke.sk>
 
 	* sk.po: Updated to 514t. Closes: #386851