]> git.saurik.com Git - apt.git/blobdiff - apt-inst/contrib/extracttar.cc
Tweak SGML around TempDir so that '>' doesn't end up in...
[apt.git] / apt-inst / contrib / extracttar.cc
index 57e083b5a39bfa5bc78f3e7a0d04a755f6a2742f..5d939bd80be0965537042173a71a1bce5d694890 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: extracttar.cc,v 1.2 2001/02/20 07:03:17 jgg Exp $
+// $Id: extracttar.cc,v 1.8 2003/07/18 15:35:23 mdz Exp $
 /* ######################################################################
 
    Extract a Tar - Tar Extractor
@@ -19,6 +19,7 @@
 #ifdef __GNUG__
 #pragma implementation "apt-pkg/extracttar.h"
 #endif
+#include <apti18n.h>
 #include <apt-pkg/extracttar.h>
 
 #include <apt-pkg/error.h>
 #include <unistd.h>
 #include <signal.h>
 #include <fcntl.h>
+#include <iostream>
                                                                        /*}}}*/
-
+using namespace std;
+    
 // The on disk header for a tar file.
 struct ExtractTar::TarHeader
 {
@@ -68,7 +71,8 @@ ExtractTar::ExtractTar(FileFd &Fd,unsigned long Max) : File(Fd),
 /* */
 ExtractTar::~ExtractTar()
 {
-   Done(false);
+   // Error close
+   Done(true);
 }
                                                                        /*}}}*/
 // ExtractTar::Done - Reap the gzip sub process                                /*{{{*/
@@ -108,7 +112,7 @@ bool ExtractTar::StartGzip()
 {
    int Pipes[2];
    if (pipe(Pipes) != 0)
-      return _error->Errno("pipe","Failed to create pipes");
+      return _error->Errno("pipe",_("Failed to create pipes"));
    
    // Fork off the process
    GZPid = ExecFork();
@@ -133,7 +137,7 @@ bool ExtractTar::StartGzip()
       Args[1] = "-d";
       Args[2] = 0;
       execv(Args[0],(char **)Args);
-      cerr << "Failed to exec gzip " << Args[0] << endl;
+      cerr << _("Failed to exec gzip ") << Args[0] << endl;
       _exit(100);
    }
 
@@ -170,7 +174,7 @@ bool ExtractTar::Go(pkgDirStream &Stream)
       TarHeader *Tar = (TarHeader *)Block;
       unsigned long CheckSum;
       if (StrToNum(Tar->Checksum,CheckSum,sizeof(Tar->Checksum),8) == false)
-        return _error->Error("Corrupted archive");
+        return _error->Error(_("Corrupted archive"));
       
       /* Compute the checksum field. The actual checksum is blanked out
          with spaces so it is not included in the computation */
@@ -185,20 +189,18 @@ bool ExtractTar::Go(pkgDirStream &Stream)
         return Done(true);
       
       if (NewSum != CheckSum)
-        return _error->Error("Tar Checksum failed, archive corrupted");
+        return _error->Error(_("Tar Checksum failed, archive corrupted"));
    
       // Decode all of the fields
       pkgDirStream::Item Itm;
-      unsigned long UID;
-      unsigned long GID;
       if (StrToNum(Tar->Mode,Itm.Mode,sizeof(Tar->Mode),8) == false ||
-         StrToNum(Tar->UserID,UID,sizeof(Tar->UserID),8) == false ||
-         StrToNum(Tar->GroupID,GID,sizeof(Tar->GroupID),8) == false ||
+         StrToNum(Tar->UserID,Itm.UID,sizeof(Tar->UserID),8) == false ||
+         StrToNum(Tar->GroupID,Itm.GID,sizeof(Tar->GroupID),8) == false ||
          StrToNum(Tar->Size,Itm.Size,sizeof(Tar->Size),8) == false ||
          StrToNum(Tar->MTime,Itm.MTime,sizeof(Tar->MTime),8) == false ||
          StrToNum(Tar->Major,Itm.Major,sizeof(Tar->Major),8) == false ||
          StrToNum(Tar->Minor,Itm.Minor,sizeof(Tar->Minor),8) == false)
-        return _error->Error("Corrupted archive");
+        return _error->Error(_("Corrupted archive"));
       
       // Grab the filename
       if (LastLongName.empty() == false)
@@ -290,7 +292,7 @@ bool ExtractTar::Go(pkgDirStream &Stream)
         
         default:
         BadRecord = true;
-        _error->Warning("Unkown TAR header type %u, member %s",(unsigned)Tar->LinkFlag,Tar->Name);
+        _error->Warning(_("Unknown TAR header type %u, member %s"),(unsigned)Tar->LinkFlag,Tar->Name);
         break;
       }