The libcommons-compress-java renamed the tar classes as follows:
TarEntry.class -> TarArchiveEntry.class
TarInputStream.class -> TarArchiveInputStream.class
TarOutputStream.class -> TarArchiveOutputStream.class
The appended patch (bootchart_renamedtar.patch) for
bootchart-0.10~svn407 and renaming the following files fixed the
reported bug for me:
mv lib/org/apache/commons/compress/tar/Tar{,Archive}Entry.java
mv lib/org/apache/commons/compress/tar/Tar{,Archive}InputStream.java
mv lib/org/apache/commons/compress/tar/Tar{,Archive}OutputStream.java
diff -rup bootchart-0.10~svn407-orig/lib/org/apache/commons/compress/tar/TarEntry.java bootchart-0.10~svn407/lib/org/apache/commons/compress/tar/TarEntry.java
--- bootchart-0.10~svn407-orig/lib/org/apache/commons/compress/tar/TarEntry.java 2007-12-23 01:08:52.000000000 +0100
+++ bootchart-0.10~svn407/lib/org/apache/commons/compress/tar/TarEntry.java 2009-09-24 11:32:49.000000000 +0200
@@ -24,18 +24,18 @@ import java.util.Locale;
* header, as well as the entry's File. Entries can be instantiated in one of
* three ways, depending on how they are to be used. <p>
*
- * TarEntries that are created from the header bytes read from an archive are
- * instantiated with the TarEntry( byte[] ) constructor. These entries will be
+ * TarArchiveEntries that are created from the header bytes read from an archive are
+ * instantiated with the TarArchiveEntry( byte[] ) constructor. These entries will be
* used when extracting from or listing the contents of an archive. These
* entries have their header filled in using the header bytes. They also set the
* File to null, since they reference an archive entry not a file. <p>
*
- * TarEntries that are created from Files that are to be written into an archive
- * are instantiated with the TarEntry( File ) constructor. These entries have
+ * TarArchiveEntries that are created from Files that are to be written into an archive
+ * are instantiated with the TarArchiveEntry( File ) constructor. These entries have
* their header filled in using the File's information. They also keep a
* reference to the File for convenience when writing entries. <p>
*
- * Finally, TarEntries can be constructed from nothing but a name. This allows
+ * Finally, TarArchiveEntries can be constructed from nothing but a name. This allows
* the programmer to construct the entry by hand, for instance when only an
* InputStream is available for writing to the archive, and the header
* information is constructed from other information. In this case the header
@@ -64,10 +64,10 @@ import java.util.Locale;
* @author <a href="mailto:[email protected]">Stefano Mazzocchi</a>
* @author <a href="mailto:[email protected]">Peter Donald</a>
* @version $Revision$ $Date$
- * @see TarInputStream
- * @see TarOutputStream
+ * @see TarArchiveInputStream
+ * @see TarArchiveOutputStream
*/
-public class TarEntry
+public class TarArchiveEntry
{
/**
* The length of the name field in a header buffer.
@@ -152,7 +152,7 @@ public class TarEntry
*
* @param name the name of the entry
*/
- public TarEntry( final String name )
+ public TarArchiveEntry( final String name )
{
this();
@@ -173,7 +173,7 @@ public class TarEntry
* @param name Description of Parameter
* @param linkFlag Description of Parameter
*/
- public TarEntry( final String name, final byte linkFlag )
+ public TarArchiveEntry( final String name, final byte linkFlag )
{
this( name );
m_linkFlag = linkFlag;
@@ -185,7 +185,7 @@ public class TarEntry
*
* @param file The file that the entry represents.
*/
- public TarEntry( final File file )
+ public TarArchiveEntry( final File file )
{
this();
@@ -261,7 +261,7 @@ public class TarEntry
*
* @param header The header bytes from a tar archive entry.
*/
- public TarEntry( final byte[] header )
+ public TarArchiveEntry( final byte[] header )
{
this();
parseTarHeader( header );
@@ -270,7 +270,7 @@ public class TarEntry
/**
* Construct an empty entry and prepares the header values.
*/
- private TarEntry()
+ private TarArchiveEntry()
{
m_magic = new StringBuffer( TarConstants.TMAGIC );
m_name = new StringBuffer();
@@ -403,23 +403,23 @@ public class TarEntry
/**
* If this entry represents a file, and the file is a directory, return an
- * array of TarEntries for this entry's children.
+ * array of TarArchiveEntries for this entry's children.
*
- * @return An array of TarEntry's for this entry's children.
+ * @return An array of TarArchiveEntry's for this entry's children.
*/
- public TarEntry[] getDirectoryEntries()
+ public TarArchiveEntry[] getDirectoryEntries()
{
if( null == m_file || !m_file.isDirectory() )
{
- return new TarEntry[ 0 ];
+ return new TarArchiveEntry[ 0 ];
}
final String[] list = m_file.list();
- final TarEntry[] result = new TarEntry[ list.length ];
+ final TarArchiveEntry[] result = new TarArchiveEntry[ list.length ];
for( int i = 0; i < list.length; ++i )
{
- result[ i ] = new TarEntry( new File( m_file, list[ i ] ) );
+ result[ i ] = new TarArchiveEntry( new File( m_file, list[ i ] ) );
}
return result;
@@ -557,7 +557,7 @@ public class TarEntry
* @param desc Entry to be checked as a descendent of
* @return True if entry is a descendant of
*/
- public boolean isDescendent( final TarEntry desc )
+ public boolean isDescendent( final TarArchiveEntry desc )
{
return desc.getName().startsWith( getName() );
}
@@ -605,7 +605,7 @@ public class TarEntry
* @param other Entry to be checked for equality.
* @return True if the entries are equal.
*/
- public boolean equals( final TarEntry other )
+ public boolean equals( final TarArchiveEntry other )
{
return getName().equals( other.getName() );
}
diff -rup bootchart-0.10~svn407-orig/lib/org/apache/commons/compress/tar/TarInputStream.java bootchart-0.10~svn407/lib/org/apache/commons/compress/tar/TarInputStream.java
--- bootchart-0.10~svn407-orig/lib/org/apache/commons/compress/tar/TarInputStream.java 2007-12-23 01:08:52.000000000 +0100
+++ bootchart-0.10~svn407/lib/org/apache/commons/compress/tar/TarInputStream.java 2009-09-24 11:33:26.000000000 +0200
@@ -21,7 +21,7 @@ import java.io.InputStream;
import java.io.OutputStream;
/**
- * The TarInputStream reads a UNIX tar archive as an InputStream. methods are
+ * The TarArchiveInputStream reads a UNIX tar archive as an InputStream. methods are
* provided to position at each successive entry in the archive, and the read
* each entry as a normal input stream using read().
*
@@ -29,14 +29,14 @@ import java.io.OutputStream;
* @author <a href="mailto:[email protected]">Stefano Mazzocchi</a>
* @author <a href="mailto:[email protected]">Peter Donald</a>
* @version $Revision$ $Date$
- * @see TarInputStream
- * @see TarEntry
+ * @see TarArchiveInputStream
+ * @see TarArchiveEntry
*/
-public class TarInputStream
+public class TarArchiveInputStream
extends FilterInputStream
{
private TarBuffer m_buffer;
- private TarEntry m_currEntry;
+ private TarArchiveEntry m_currEntry;
private boolean m_debug;
private int m_entryOffset;
private int m_entrySize;
@@ -45,41 +45,41 @@ public class TarInputStream
private byte[] m_readBuf;
/**
- * Construct a TarInputStream using specified input
+ * Construct a TarArchiveInputStream using specified input
* stream and default block and record sizes.
*
- * @param input stream to create TarInputStream from
+ * @param input stream to create TarArchiveInputStream from
* @see TarBuffer#DEFAULT_BLOCKSIZE
* @see TarBuffer#DEFAULT_RECORDSIZE
*/
- public TarInputStream( final InputStream input )
+ public TarArchiveInputStream( final InputStream input )
{
this( input, TarBuffer.DEFAULT_BLOCKSIZE, TarBuffer.DEFAULT_RECORDSIZE );
}
/**
- * Construct a TarInputStream using specified input
+ * Construct a TarArchiveInputStream using specified input
* stream, block size and default record sizes.
*
- * @param input stream to create TarInputStream from
+ * @param input stream to create TarArchiveInputStream from
* @param blockSize the block size to use
* @see TarBuffer#DEFAULT_RECORDSIZE
*/
- public TarInputStream( final InputStream input,
+ public TarArchiveInputStream( final InputStream input,
final int blockSize )
{
this( input, blockSize, TarBuffer.DEFAULT_RECORDSIZE );
}
/**
- * Construct a TarInputStream using specified input
+ * Construct a TarArchiveInputStream using specified input
* stream, block size and record sizes.
*
- * @param input stream to create TarInputStream from
+ * @param input stream to create TarArchiveInputStream from
* @param blockSize the block size to use
* @param recordSize the record size to use
*/
- public TarInputStream( final InputStream input,
+ public TarArchiveInputStream( final InputStream input,
final int blockSize,
final int recordSize )
{
@@ -104,14 +104,14 @@ public class TarInputStream
* Get the next entry in this tar archive. This will skip over any remaining
* data in the current entry, if there is one, and place the input stream at
* the header of the next entry, and read the header and instantiate a new
- * TarEntry from the header bytes and return that entry. If there are no
+ * TarArchiveEntry from the header bytes and return that entry. If there are no
* more entries in the archive, null will be returned to indicate that the
* end of the archive has been reached.
*
- * @return The next TarEntry in the archive, or null.
+ * @return The next TarArchiveEntry in the archive, or null.
* @exception IOException Description of Exception
*/
- public TarEntry getNextEntry()
+ public TarArchiveEntry getNextEntry()
throws IOException
{
if( m_hasHitEOF )
@@ -125,7 +125,7 @@ public class TarInputStream
if( m_debug )
{
- final String message = "TarInputStream: SKIP currENTRY '" +
+ final String message = "TarArchiveInputStream: SKIP currENTRY '" +
m_currEntry.getName() + "' SZ " + m_entrySize +
" OFF " + m_entryOffset + " skipping " + numToSkip + " bytes";
debug( message );
@@ -163,7 +163,7 @@ public class TarInputStream
}
else
{
- m_currEntry = new TarEntry( headerBuf );
+ m_currEntry = new TarArchiveEntry( headerBuf );
if( !( headerBuf[ 257 ] == 'u' && headerBuf[ 258 ] == 's' &&
headerBuf[ 259 ] == 't' && headerBuf[ 260 ] == 'a' &&
@@ -174,7 +174,7 @@ public class TarInputStream
if( m_debug )
{
- final String message = "TarInputStream: SET CURRENTRY '" +
+ final String message = "TarArchiveInputStream: SET CURRENTRY '" +
m_currEntry.getName() + "' size = " + m_currEntry.getSize();
debug( message );
}
diff -rup bootchart-0.10~svn407-orig/lib/org/apache/commons/compress/tar/TarOutputStream.java bootchart-0.10~svn407/lib/org/apache/commons/compress/tar/TarOutputStream.java
--- bootchart-0.10~svn407-orig/lib/org/apache/commons/compress/tar/TarOutputStream.java 2007-12-23 01:08:52.000000000 +0100
+++ bootchart-0.10~svn407/lib/org/apache/commons/compress/tar/TarOutputStream.java 2009-09-24 11:33:58.000000000 +0200
@@ -21,17 +21,17 @@ import java.io.InputStream;
import java.io.OutputStream;
/**
- * The TarOutputStream writes a UNIX tar archive as an OutputStream. Methods are
+ * The TarArchiveOutputStream writes a UNIX tar archive as an OutputStream. Methods are
* provided to put entries, and then write their contents by writing to this
* stream using write().
*
* @author Timothy Gerard Endres <a href="mailto:[email protected]">[email protected]</a>
* @author <a href="mailto:[email protected]">Peter Donald</a>
* @version $Revision$ $Date$
- * @see TarInputStream
- * @see TarEntry
+ * @see TarArchiveInputStream
+ * @see TarArchiveEntry
*/
-public class TarOutputStream
+public class TarArchiveOutputStream
extends FilterOutputStream
{
/**
@@ -68,41 +68,41 @@ public class TarOutputStream
private byte[] m_recordBuf;
/**
- * Construct a TarOutputStream using specified input
+ * Construct a TarArchiveOutputStream using specified input
* stream and default block and record sizes.
*
- * @param output stream to create TarOutputStream from
+ * @param output stream to create TarArchiveOutputStream from
* @see TarBuffer#DEFAULT_BLOCKSIZE
* @see TarBuffer#DEFAULT_RECORDSIZE
*/
- public TarOutputStream( final OutputStream output )
+ public TarArchiveOutputStream( final OutputStream output )
{
this( output, TarBuffer.DEFAULT_BLOCKSIZE, TarBuffer.DEFAULT_RECORDSIZE );
}
/**
- * Construct a TarOutputStream using specified input
+ * Construct a TarArchiveOutputStream using specified input
* stream, block size and default record sizes.
*
- * @param output stream to create TarOutputStream from
+ * @param output stream to create TarArchiveOutputStream from
* @param blockSize the block size
* @see TarBuffer#DEFAULT_RECORDSIZE
*/
- public TarOutputStream( final OutputStream output,
+ public TarArchiveOutputStream( final OutputStream output,
final int blockSize )
{
this( output, blockSize, TarBuffer.DEFAULT_RECORDSIZE );
}
/**
- * Construct a TarOutputStream using specified input
+ * Construct a TarArchiveOutputStream using specified input
* stream, block size and record sizes.
*
- * @param output stream to create TarOutputStream from
+ * @param output stream to create TarArchiveOutputStream from
* @param blockSize the block size
* @param recordSize the record size
*/
- public TarOutputStream( final OutputStream output,
+ public TarArchiveOutputStream( final OutputStream output,
final int blockSize,
final int recordSize )
{
@@ -220,20 +220,20 @@ public class TarOutputStream
* <B>MUST</B> be called to ensure that all buffered data is completely
* written to the output stream.
*
- * @param entry The TarEntry to be written to the archive.
+ * @param entry The TarArchiveEntry to be written to the archive.
* @exception IOException when an IO error causes operation to fail
*/
- public void putNextEntry( final TarEntry entry )
+ public void putNextEntry( final TarArchiveEntry entry )
throws IOException
{
- if( entry.getName().length() >= TarEntry.NAMELEN )
+ if( entry.getName().length() >= TarArchiveEntry.NAMELEN )
{
if( m_longFileMode == LONGFILE_GNU )
{
- // create a TarEntry for the LongLink, the contents
+ // create a TarArchiveEntry for the LongLink, the contents
// of which are the entry's name
- final TarEntry longLinkEntry =
- new TarEntry( TarConstants.GNU_LONGLINK,
+ final TarArchiveEntry longLinkEntry =
+ new TarArchiveEntry( TarConstants.GNU_LONGLINK,
TarConstants.LF_GNUTYPE_LONGNAME );
longLinkEntry.setSize( entry.getName().length() );
@@ -245,7 +245,7 @@ public class TarOutputStream
else if( m_longFileMode != LONGFILE_TRUNCATE )
{
final String message = "file name '" + entry.getName() +
- "' is too long ( > " + TarEntry.NAMELEN + " bytes)";
+ "' is too long ( > " + TarArchiveEntry.NAMELEN + " bytes)";
throw new IOException( message );
}
}
diff -rup bootchart-0.10~svn407-orig/src/org/bootchart/Main.java bootchart-0.10~svn407/src/org/bootchart/Main.java
--- bootchart-0.10~svn407-orig/src/org/bootchart/Main.java 2007-12-23 01:08:52.000000000 +0100
+++ bootchart-0.10~svn407/src/org/bootchart/Main.java 2009-09-24 11:36:41.000000000 +0200
@@ -41,8 +41,8 @@ import org.apache.commons.cli.HelpFormat
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
-import org.apache.commons.compress.tar.TarEntry;
-import org.apache.commons.compress.tar.TarInputStream;
+import org.apache.commons.compress.tar.TarArchiveEntry;
+import org.apache.commons.compress.tar.TarArchiveInputStream;
import org.bootchart.common.BootStats;
import org.bootchart.common.Common;
import org.bootchart.common.ProcessTree;
@@ -177,7 +177,7 @@ public class Main {
if (!logFile.exists()) {
return null;
}
- TarInputStream tis = null;
+ TarArchiveInputStream tis = null;
File[] files = null;
boolean isLogTarball; // whether it's a tarball or dir
if (logFile.isFile()) {
@@ -186,7 +186,7 @@ public class Main {
if (logFile.getName().endsWith("gz")) {
is = new GZIPInputStream(is);
}
- tis = new TarInputStream(is);
+ tis = new TarArchiveInputStream(is);
} else {
isLogTarball = false;
files = logFile.listFiles();
@@ -210,14 +210,14 @@ public class Main {
while (hasMoreFiles) {
String logName = null;
InputStream is = null;
- TarEntry tarEntry = null;
+ TarArchiveEntry tarArchiveEntry = null;
if (isLogTarball) {
- tarEntry = tis.getNextEntry();
- if (tarEntry == null) {
+ tarArchiveEntry = tis.getNextEntry();
+ if (tarArchiveEntry == null) {
hasMoreFiles = false;
break;
}
- logName = tarEntry.getName();
+ logName = tarArchiveEntry.getName();
is = tis;
} else {
logName = files[fileI].getName();
@@ -270,7 +270,7 @@ public class Main {
} else {
log.warning("Unknown log file: " + logName);
if (logName.length() > 32) {
- // We're getting garbage from TarInputStream. Break out since
+ // We're getting garbage from TarArchiveInputStream. Break out since
// a malformed tarball can cause spinning.
hasMoreFiles = false;
break;
diff -rup bootchart-0.10~svn407-orig/src/org/bootchart/parser/linux/PacctParser.java bootchart-0.10~svn407/src/org/bootchart/parser/linux/PacctParser.java
--- bootchart-0.10~svn407-orig/src/org/bootchart/parser/linux/PacctParser.java 2007-12-23 01:08:52.000000000 +0100
+++ bootchart-0.10~svn407/src/org/bootchart/parser/linux/PacctParser.java 2009-09-24 11:37:09.000000000 +0200
@@ -50,7 +50,7 @@ public class PacctParser {
public static Map parseLog(InputStream is) throws IOException {
Map forkMap = new HashMap();
while (is.available() > 0) {
- // Note: TarInputStream's skip() seems broken, so read() instead
+ // Note: TarArchiveInputStream's skip() seems broken, so read() instead
is.read(); //
byte version = (byte)is.read();
if (version < 3) {