Author: ebourg
Date: Sat Jun 21 10:55:46 2008
New Revision: 670243

URL: http://svn.apache.org/viewvc?rev=670243&view=rev
Log:
Fixed TarOutputStream for files bigger than 2GB

Modified:
    
commons/sandbox/compress/trunk/src/java/org/apache/commons/compress/archivers/tar/TarOutputStream.java
    
commons/sandbox/compress/trunk/src/test/org/apache/commons/compress/archivers/tar/TarTestCase.java

Modified: 
commons/sandbox/compress/trunk/src/java/org/apache/commons/compress/archivers/tar/TarOutputStream.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/compress/trunk/src/java/org/apache/commons/compress/archivers/tar/TarOutputStream.java?rev=670243&r1=670242&r2=670243&view=diff
==============================================================================
--- 
commons/sandbox/compress/trunk/src/java/org/apache/commons/compress/archivers/tar/TarOutputStream.java
 (original)
+++ 
commons/sandbox/compress/trunk/src/java/org/apache/commons/compress/archivers/tar/TarOutputStream.java
 Sat Jun 21 10:55:46 2008
@@ -62,8 +62,8 @@
     private byte[] m_assemBuf;
     private int m_assemLen;
     private TarBuffer m_buffer;
-    private int m_currBytes;
-    private int m_currSize;
+    private long m_currBytes;
+    private long m_currSize;
 
     private byte[] m_oneBuf;
     private byte[] m_recordBuf;
@@ -262,7 +262,7 @@
         }
         else
         {
-            m_currSize = (int)entry.getSize();
+            m_currSize = entry.getSize();
         }
     }
 

Modified: 
commons/sandbox/compress/trunk/src/test/org/apache/commons/compress/archivers/tar/TarTestCase.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/compress/trunk/src/test/org/apache/commons/compress/archivers/tar/TarTestCase.java?rev=670243&r1=670242&r2=670243&view=diff
==============================================================================
--- 
commons/sandbox/compress/trunk/src/test/org/apache/commons/compress/archivers/tar/TarTestCase.java
 (original)
+++ 
commons/sandbox/compress/trunk/src/test/org/apache/commons/compress/archivers/tar/TarTestCase.java
 Sat Jun 21 10:55:46 2008
@@ -27,6 +27,8 @@
 import java.io.InputStream;
 
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.io.input.NullInputStream;
+import org.apache.commons.io.output.NullOutputStream;
 
 import junit.framework.TestCase;
 
@@ -126,6 +128,19 @@
         temp.delete();
     }
 
+    public void testArchive8GbFile() throws Exception
+    {
+        long size = (long) 8 * 1024 * 1024 * 1024;
+
+        TarOutputStream out = new TarOutputStream(new NullOutputStream());
+        TarEntry entry = new TarEntry("bigfile.data");
+        entry.setSize(size);
+
+        out.putNextEntry(entry);
+        out.copyEntryContents( new NullInputStream(size) );
+        out.closeEntry();
+    }
+
     private void setupEntry( final TarEntry entry )
     {
         entry.setModTime( MOD_TIME );


Reply via email to