]> git.saurik.com Git - apt.git/blobdiff - methods/bzip2.cc
apt-pkg/contrib/cdromutl.{cc,h}: add FindMountPointForDevice helper; apt-pkg/cdrom...
[apt.git] / methods / bzip2.cc
index 5da214bfce36decc624ea4e3b4b8c7bc740a827c..42932ddedbcc9fc4cee3835c6f60fb13f792f211 100644 (file)
@@ -56,12 +56,8 @@ bool Bzip2Method::Fetch(FetchItem *Itm)
    // Open the source and destination files
    FileFd From(Path,FileFd::ReadOnly);
 
    // 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;
-   }
+   if(From.FileSize() == 0)
+      return _error->Error(_("Empty files can't be valid archives"));
 
    int GzOut[2];   
    if (pipe(GzOut) < 0)
 
    int GzOut[2];   
    if (pipe(GzOut) < 0)
@@ -91,7 +87,7 @@ bool Bzip2Method::Fetch(FetchItem *Itm)
    close(GzOut[1]);
    
    FileFd FromGz(GzOut[0]);  // For autoclose   
    close(GzOut[1]);
    
    FileFd FromGz(GzOut[0]);  // For autoclose   
-   FileFd To(Itm->DestFile,FileFd::WriteEmpty);   
+   FileFd To(Itm->DestFile,FileFd::WriteAtomic);   
    To.EraseOnFailure();
    if (_error->PendingError() == true)
       return false;
    To.EraseOnFailure();
    if (_error->PendingError() == true)
       return false;
@@ -102,9 +98,8 @@ bool Bzip2Method::Fetch(FetchItem *Itm)
    while (1) 
    {
       unsigned char Buffer[4*1024];
    while (1) 
    {
       unsigned char Buffer[4*1024];
-      unsigned long Count;
       
       
-      Count = read(GzOut[0],Buffer,sizeof(Buffer));
+      ssize_t Count = read(GzOut[0],Buffer,sizeof(Buffer));
       if (Count < 0 && errno == EINTR)
         continue;
       
       if (Count < 0 && errno == EINTR)
         continue;