X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/00ec615a4b01f54dfd2588d48229c8eb3a67ba07..c34ea12ad509cb34c954ed574a301c3cbede55ec:/apt-inst/contrib/arfile.cc diff --git a/apt-inst/contrib/arfile.cc b/apt-inst/contrib/arfile.cc index 6d937df6d..8018f4d30 100644 --- a/apt-inst/contrib/arfile.cc +++ b/apt-inst/contrib/arfile.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: arfile.cc,v 1.4 2002/09/20 05:30:33 tausq Exp $ +// $Id: arfile.cc,v 1.6.2.1 2004/01/16 18:58:50 mdz Exp $ /* ###################################################################### AR File - Handle an 'AR' archive @@ -14,15 +14,13 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ -#ifdef __GNUG__ -#pragma implementation "apt-pkg/arfile.h" -#endif #include #include #include #include /*}}}*/ +#include struct ARArchive::MemberHeader { @@ -69,7 +67,7 @@ bool ARArchive::LoadHeaders() if (File.Read(Magic,sizeof(Magic)) == false) return false; if (memcmp(Magic,"!\012",sizeof(Magic)) != 0) - return _error->Error("Invalid archive signature"); + return _error->Error(_("Invalid archive signature")); Left -= sizeof(Magic); // Read the member list @@ -77,7 +75,7 @@ bool ARArchive::LoadHeaders() { MemberHeader Head; if (File.Read(&Head,sizeof(Head)) == false) - return _error->Error("Error reading archive member header"); + return _error->Error(_("Error reading archive member header")); Left -= sizeof(Head); // Convert all of the integer members @@ -89,7 +87,7 @@ bool ARArchive::LoadHeaders() StrToNum(Head.Size,Memb->Size,sizeof(Head.Size)) == false) { delete Memb; - return _error->Error("Invalid archive member header"); + return _error->Error(_("Invalid archive member header %s"), Head.Name); } // Check for an extra long name string @@ -98,10 +96,10 @@ bool ARArchive::LoadHeaders() char S[300]; unsigned long Len; if (StrToNum(Head.Name+3,Len,sizeof(Head.Size)-3) == false || - Len >= strlen(S)) + Len >= sizeof(S)) { delete Memb; - return _error->Error("Invalid archive member header"); + return _error->Error(_("Invalid archive member header")); } if (File.Read(S,Len) == false) return false; @@ -113,8 +111,8 @@ bool ARArchive::LoadHeaders() else { unsigned int I = sizeof(Head.Name) - 1; - for (; Head.Name[I] == ' '; I--); - Memb->Name = string(Head.Name,0,I+1); + for (; Head.Name[I] == ' ' || Head.Name[I] == '/'; I--); + Memb->Name = string(Head.Name,I+1); } // Account for the AR header alignment @@ -127,11 +125,11 @@ bool ARArchive::LoadHeaders() if (File.Skip(Memb->Size + Skip) == false) return false; if (Left < (signed)(Memb->Size + Skip)) - return _error->Error("Archive is too short"); + return _error->Error(_("Archive is too short")); Left -= Memb->Size + Skip; } if (Left != 0) - return _error->Error("Failed to read the archive headers"); + return _error->Error(_("Failed to read the archive headers")); return true; }