]> git.saurik.com Git - apt.git/blobdiff - apt-inst/contrib/arfile.cc
don't change owner/perms/times through file:// symlinks
[apt.git] / apt-inst / contrib / arfile.cc
index d7ee528ba9624f94a97e12e313da3e10547def5e..905110781a9afdecd43e5583326ab1a75e762871 100644 (file)
@@ -6,7 +6,7 @@
    AR File - Handle an 'AR' archive
    
    AR Archives have plain text headers at the start of each file
    AR File - Handle an 'AR' archive
    
    AR Archives have plain text headers at the start of each file
-   section. The headers are aligned on a 2 byte boundry.
+   section. The headers are aligned on a 2 byte boundary.
    
    Information about the structure of AR files can be found in ar(5)
    on a BSD system, or in the binutils source.
    
    Information about the structure of AR files can be found in ar(5)
    on a BSD system, or in the binutils source.
@@ -21,7 +21,9 @@
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/error.h>
 
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/error.h>
 
-#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <string>
 
 #include <apti18n.h>
                                                                        /*}}}*/
 
 #include <apti18n.h>
                                                                        /*}}}*/
@@ -64,7 +66,7 @@ ARArchive::~ARArchive()
    byte plain text header then the file data, another header, data, etc */
 bool ARArchive::LoadHeaders()
 {
    byte plain text header then the file data, another header, data, etc */
 bool ARArchive::LoadHeaders()
 {
-   signed long Left = File.Size();
+   off_t Left = File.Size();
    
    // Check the magic byte
    char Magic[8];
    
    // Check the magic byte
    char Magic[8];
@@ -123,7 +125,7 @@ bool ARArchive::LoadHeaders()
       }
 
       // Account for the AR header alignment 
       }
 
       // Account for the AR header alignment 
-      unsigned Skip = Memb->Size % 2;
+      off_t Skip = Memb->Size % 2;
       
       // Add it to the list
       Memb->Next = List;
       
       // Add it to the list
       Memb->Next = List;
@@ -131,7 +133,7 @@ bool ARArchive::LoadHeaders()
       Memb->Start = File.Tell();
       if (File.Skip(Memb->Size + Skip) == false)
         return false;
       Memb->Start = File.Tell();
       if (File.Skip(Memb->Size + Skip) == false)
         return false;
-      if (Left < (signed)(Memb->Size + Skip))
+      if (Left < (off_t)(Memb->Size + Skip))
         return _error->Error(_("Archive is too short"));
       Left -= Memb->Size + Skip;
    }   
         return _error->Error(_("Archive is too short"));
       Left -= Memb->Size + Skip;
    }