org.apache.commons.compress.archivers.zip

Class AsiExtraField

public class AsiExtraField extends Object implements ZipExtraField, UnixStat, Cloneable

Adds Unix file permission and UID/GID fields as well as symbolic link handling.

This class uses the ASi extra field in the format:

         Value         Size            Description
         -----         ----            -----------
 (Unix3) 0x756e        Short           tag for this extra block type
         TSize         Short           total data size for this block
         CRC           Long            CRC-32 of the remaining data
         Mode          Short           file permissions
         SizDev        Long            symlink'd size OR major/minor dev num
         UID           Short           user ID
         GID           Short           group ID
         (var.)        variable        symbolic link filename
 
taken from appnote.iz (Info-ZIP note, 981119) found at ftp://ftp.uu.net/pub/archiving/zip/doc/

Short is two bytes and Long is four bytes in big endian byte and word order, device numbers are currently not supported.

Version: $Revision: 155439 $

Author: Stefan Bodewig

Field Summary
static ZipShortHEADER_ID
CRC32m_crc
Instance used to calculate checksums.
booleanm_dirFlag
Is this an entry for a directory?
intm_gid
Group ID.
Stringm_link
File this entry points to, if it is a symbolic link.
intm_mode
Standard Unix stat(2) file mode.
intm_uid
User ID.
Method Summary
byte[]getCentralDirectoryData()
Delegate to local file data.
ZipShortgetCentralDirectoryLength()
Delegate to local file data.
intgetGroupId()
Get the group id.
intgetGroupID()
Get the group id.
ZipShortgetHeaderID()
The Header-ID.
StringgetLinkedFile()
Name of linked file
byte[]getLocalFileDataData()
The actual data to put into local file data - without Header-ID or length specifier.
ZipShortgetLocalFileDataLength()
Length of the extra field in the local file data - without Header-ID or length specifier.
intgetMode()
File mode of this file.
protected intgetMode(int mode)
Get the file mode for given permissions with the correct file type.
intgetUserId()
Get the user id.
intgetUserID()
Get the user id.
booleanisDirectory()
Is this entry a directory?
booleanisLink()
Is this entry a symbolic link?
voidparseFromLocalFileData(byte[] buffer, int offset, int length)
Populate data from this array as if it was in local file data.
voidsetDirectory(boolean dirFlag)
Indicate whether this entry is a directory.
voidsetGroupId(int gid)
Set the group id.
voidsetLinkedFile(String name)
Indicate that this entry is a symbolic link to the given filename.
voidsetMode(int mode)
File mode of this file.
voidsetUserId(int uid)
Set the user id.
voidsetUserID(int uid)
Set the user id.

Field Detail

HEADER_ID

private static final ZipShort HEADER_ID

m_crc

private CRC32 m_crc
Instance used to calculate checksums.

Since: 1.1

m_dirFlag

private boolean m_dirFlag
Is this an entry for a directory?

Since: 1.1

m_gid

private int m_gid
Group ID.

Since: 1.1

m_link

private String m_link
File this entry points to, if it is a symbolic link.

empty string - if entry is not a symbolic link.

Since: 1.1

m_mode

private int m_mode
Standard Unix stat(2) file mode.

Since: 1.1

m_uid

private int m_uid
User ID.

Since: 1.1

Method Detail

getCentralDirectoryData

public byte[] getCentralDirectoryData()
Delegate to local file data.

Returns: The CentralDirectoryData value

Since: 1.1

getCentralDirectoryLength

public ZipShort getCentralDirectoryLength()
Delegate to local file data.

Returns: The CentralDirectoryLength value

Since: 1.1

getGroupId

public int getGroupId()

Deprecated: Use getGroupID() instead

Get the group id.

Returns: The GroupId value

Since: 1.1

See Also: getGroupID

getGroupID

public int getGroupID()
Get the group id.

Returns: The GroupId value

Since: 1.1

getHeaderID

public ZipShort getHeaderID()
The Header-ID.

Returns: The HeaderId value

Since: 1.1

getLinkedFile

public String getLinkedFile()
Name of linked file

Returns: name of the file this entry links to if it is a symbolic link, the empty string otherwise.

Since: 1.1

getLocalFileDataData

public byte[] getLocalFileDataData()
The actual data to put into local file data - without Header-ID or length specifier.

Returns: The LocalFileDataData value

Since: 1.1

getLocalFileDataLength

public ZipShort getLocalFileDataLength()
Length of the extra field in the local file data - without Header-ID or length specifier.

Returns: The LocalFileDataLength value

Since: 1.1

getMode

public int getMode()
File mode of this file.

Returns: The Mode value

Since: 1.1

getMode

protected int getMode(int mode)
Get the file mode for given permissions with the correct file type.

Parameters: mode Description of Parameter

Returns: The Mode value

Since: 1.1

getUserId

public int getUserId()

Deprecated: Use getUserID()

Get the user id.

Returns: The UserId value

Since: 1.1

See Also: getUserID

getUserID

public int getUserID()
Get the user id.

Returns: The UserID value

isDirectory

public boolean isDirectory()
Is this entry a directory?

Returns: The Directory value

Since: 1.1

isLink

public boolean isLink()
Is this entry a symbolic link?

Returns: The Link value

Since: 1.1

parseFromLocalFileData

public void parseFromLocalFileData(byte[] buffer, int offset, int length)
Populate data from this array as if it was in local file data.

Parameters: buffer the buffer offset the offset into buffer length the length of data in buffer

Throws: ZipException on error

Since: 1.1

setDirectory

public void setDirectory(boolean dirFlag)
Indicate whether this entry is a directory.

Parameters: dirFlag The new Directory value

Since: 1.1

setGroupId

public void setGroupId(int gid)
Set the group id.

Parameters: gid The new GroupId value

Since: 1.1

setLinkedFile

public void setLinkedFile(String name)
Indicate that this entry is a symbolic link to the given filename.

Parameters: name Name of the file this entry links to, empty String if it is not a symbolic link.

Since: 1.1

setMode

public void setMode(int mode)
File mode of this file.

Parameters: mode The new Mode value

Since: 1.1

setUserId

public void setUserId(int uid)

Deprecated: Use setUserID(int)

Set the user id.

Parameters: uid The new UserId value

Since: 1.1

See Also: AsiExtraField

setUserID

public void setUserID(int uid)
Set the user id.

Parameters: uid The new UserId value