com.ice.tar
Class TarHeader

java.lang.Object
  |
  +--com.ice.tar.TarHeader
All Implemented Interfaces:
Cloneable

public class TarHeader
extends Object
implements Cloneable

This class encapsulates the Tar Entry Header used in Tar Archives. The class also holds a number of tar constants, used mostly in headers.

Author:
Timothy Gerard Endres,

Field Summary
 int checkSum
          The entry's checksum.
static int CHKSUMLEN
          The length of the checksum field in a header buffer.
static int DEVLEN
          The length of the devices field in a header buffer.
 int devMajor
          The entry's major device number.
 int devMinor
          The entry's minor device number.
static int GIDLEN
          The length of the group id field in a header buffer.
static int GNAMELEN
          The length of the group name field in a header buffer.
static String GNU_TMAGIC
          The magic tag representing a GNU tar archive.
 int groupId
          The entry's group id.
 StringBuffer groupName
          The entry's group name.
static byte LF_BLK
          Block device file type.
static byte LF_CHR
          Character device file type.
static byte LF_CONTIG
          Contiguous file type.
static byte LF_DIR
          Directory file type.
static byte LF_FIFO
          FIFO (pipe) file type.
static byte LF_LINK
          Link file type.
static byte LF_NORMAL
          Normal file type.
static byte LF_OLDNORM
          LF_ constants represent the "link flag" of an entry, or more commonly, the "entry type".
static byte LF_SYMLINK
          Symbolic link file type.
 byte linkFlag
          The entry's link flag.
 StringBuffer linkName
          The entry's link name.
 StringBuffer magic
          The entry's magic tag.
static int MAGICLEN
          The length of the magic field in a header buffer.
 int mode
          The entry's permission mode.
static int MODELEN
          The length of the mode field in a header buffer.
 long modTime
          The entry's modification time.
static int MODTIMELEN
          The length of the modification time field in a header buffer.
 StringBuffer name
          The entry's name.
static int NAMELEN
          The length of the name field in a header buffer.
static int NAMEOFFSET
          The offset of the name field in a header buffer.
static int PREFIXLEN
          The length of the name prefix field in a header buffer.
static int PREFIXOFFSET
          The offset of the name prefix field in a header buffer.
 long size
          The entry's size.
static int SIZELEN
          The length of the size field in a header buffer.
static String TMAGIC
          The magic tag representing a POSIX tar archive.
static int UIDLEN
          The length of the user id field in a header buffer.
static int UNAMELEN
          The length of the user name field in a header buffer.
 int userId
          The entry's user id.
 StringBuffer userName
          The entry's user name.
 
Constructor Summary
TarHeader()
           
 
Method Summary
 Object clone()
          TarHeaders can be cloned.
static int getCheckSumOctalBytes(long value, byte[] buf, int offset, int length)
          Parse the checksum octal integer from a header buffer.
static int getFileNameBytes(String newName, byte[] outbuf)
          This method, like getNameBytes(), is intended to place a name into a TarHeader's buffer.
static int getLongOctalBytes(long value, byte[] buf, int offset, int length)
          Parse an octal long integer from a header buffer.
 String getName()
          Get the name of this entry.
static int getNameBytes(StringBuffer name, byte[] buf, int offset, int length)
          Move the bytes from the name StringBuffer into the header's buffer.
static int getOctalBytes(long value, byte[] buf, int offset, int length)
          Parse an octal integer from a header buffer.
static StringBuffer parseFileName(byte[] header)
          Parse a file name from a header buffer.
static StringBuffer parseName(byte[] header, int offset, int length)
          Parse an entry name from a header buffer.
static long parseOctal(byte[] header, int offset, int length)
          Parse an octal string from a header buffer.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NAMELEN

public static final int NAMELEN
The length of the name field in a header buffer.

NAMEOFFSET

public static final int NAMEOFFSET
The offset of the name field in a header buffer.

PREFIXLEN

public static final int PREFIXLEN
The length of the name prefix field in a header buffer.

PREFIXOFFSET

public static final int PREFIXOFFSET
The offset of the name prefix field in a header buffer.

MODELEN

public static final int MODELEN
The length of the mode field in a header buffer.

UIDLEN

public static final int UIDLEN
The length of the user id field in a header buffer.

GIDLEN

public static final int GIDLEN
The length of the group id field in a header buffer.

CHKSUMLEN

public static final int CHKSUMLEN
The length of the checksum field in a header buffer.

SIZELEN

public static final int SIZELEN
The length of the size field in a header buffer.

MAGICLEN

public static final int MAGICLEN
The length of the magic field in a header buffer.

MODTIMELEN

public static final int MODTIMELEN
The length of the modification time field in a header buffer.

UNAMELEN

public static final int UNAMELEN
The length of the user name field in a header buffer.

GNAMELEN

public static final int GNAMELEN
The length of the group name field in a header buffer.

DEVLEN

public static final int DEVLEN
The length of the devices field in a header buffer.

LF_OLDNORM

public static final byte LF_OLDNORM
LF_ constants represent the "link flag" of an entry, or more commonly, the "entry type". This is the "old way" of indicating a normal file.

LF_NORMAL

public static final byte LF_NORMAL
Normal file type.

LF_LINK

public static final byte LF_LINK
Link file type.

LF_SYMLINK

public static final byte LF_SYMLINK
Symbolic link file type.

LF_CHR

public static final byte LF_CHR
Character device file type.

LF_BLK

public static final byte LF_BLK
Block device file type.

LF_DIR

public static final byte LF_DIR
Directory file type.

LF_FIFO

public static final byte LF_FIFO
FIFO (pipe) file type.

LF_CONTIG

public static final byte LF_CONTIG
Contiguous file type.

TMAGIC

public static final String TMAGIC
The magic tag representing a POSIX tar archive.

GNU_TMAGIC

public static final String GNU_TMAGIC
The magic tag representing a GNU tar archive.

name

public StringBuffer name
The entry's name.

mode

public int mode
The entry's permission mode.

userId

public int userId
The entry's user id.

groupId

public int groupId
The entry's group id.

size

public long size
The entry's size.

modTime

public long modTime
The entry's modification time.

checkSum

public int checkSum
The entry's checksum.

linkFlag

public byte linkFlag
The entry's link flag.

linkName

public StringBuffer linkName
The entry's link name.

magic

public StringBuffer magic
The entry's magic tag.

userName

public StringBuffer userName
The entry's user name.

groupName

public StringBuffer groupName
The entry's group name.

devMajor

public int devMajor
The entry's major device number.

devMinor

public int devMinor
The entry's minor device number.
Constructor Detail

TarHeader

public TarHeader()
Method Detail

clone

public Object clone()
TarHeaders can be cloned.
Overrides:
clone in class Object

getName

public String getName()
Get the name of this entry.
Returns:
Teh entry's name.

parseOctal

public static long parseOctal(byte[] header,
                              int offset,
                              int length)
                       throws InvalidHeaderException
Parse an octal string from a header buffer. This is used for the file permission mode value.
Parameters:
header - The header buffer from which to parse.
offset - The offset into the buffer from which to parse.
length - The number of header bytes to parse.
Returns:
The long value of the octal string.

parseFileName

public static StringBuffer parseFileName(byte[] header)
Parse a file name from a header buffer. This is different from parseName() in that is recognizes 'ustar' names and will handle adding on the "prefix" field to the name. Contributed by Dmitri Tikhonov
Parameters:
header - The header buffer from which to parse.
offset - The offset into the buffer from which to parse.
length - The number of header bytes to parse.
Returns:
The header's entry name.

parseName

public static StringBuffer parseName(byte[] header,
                                     int offset,
                                     int length)
                              throws InvalidHeaderException
Parse an entry name from a header buffer.
Parameters:
header - The header buffer from which to parse.
offset - The offset into the buffer from which to parse.
length - The number of header bytes to parse.
Returns:
The header's entry name.

getFileNameBytes

public static int getFileNameBytes(String newName,
                                   byte[] outbuf)
                            throws InvalidHeaderException
This method, like getNameBytes(), is intended to place a name into a TarHeader's buffer. However, this method is sophisticated enough to recognize long names (name.length() > NAMELEN). In these cases, the method will break the name into a prefix and suffix and place the name in the header in 'ustar' format. It is up to the TarEntry to manage the "entry header format". This method assumes the name is valid for the type of archive being generated.
Parameters:
outbuf - The buffer containing the entry header to modify.
newName - The new name to place into the header buffer.
Returns:
The current offset in the tar header (always TarHeader.NAMELEN).
Throws:
InvalidHeaderException - If the name will not fit in the header.

getNameBytes

public static int getNameBytes(StringBuffer name,
                               byte[] buf,
                               int offset,
                               int length)
Move the bytes from the name StringBuffer into the header's buffer.
Parameters:
header - The header buffer into which to copy the name.
offset - The offset into the buffer at which to store.
length - The number of header bytes to store.
Returns:
The new offset (offset + length).

getOctalBytes

public static int getOctalBytes(long value,
                                byte[] buf,
                                int offset,
                                int length)
Parse an octal integer from a header buffer.
Parameters:
header - The header buffer from which to parse.
offset - The offset into the buffer from which to parse.
length - The number of header bytes to parse.
Returns:
The integer value of the octal bytes.

getLongOctalBytes

public static int getLongOctalBytes(long value,
                                    byte[] buf,
                                    int offset,
                                    int length)
Parse an octal long integer from a header buffer.
Parameters:
header - The header buffer from which to parse.
offset - The offset into the buffer from which to parse.
length - The number of header bytes to parse.
Returns:
The long value of the octal bytes.

getCheckSumOctalBytes

public static int getCheckSumOctalBytes(long value,
                                        byte[] buf,
                                        int offset,
                                        int length)
Parse the checksum octal integer from a header buffer.
Parameters:
header - The header buffer from which to parse.
offset - The offset into the buffer from which to parse.
length - The number of header bytes to parse.
Returns:
The integer value of the entry's checksum.


This software has been placed into the public domain.