## org.apache.tools.zip
Class AsiExtraField

    java.lang.Object
      |
      +--org.apache.tools.zip.AsiExtraField

All Implemented Interfaces:
  java.lang.Cloneable, UnixStat, ZipExtraField

public class AsiExtraField
extends java.lang.Object
implements ZipExtraField, UnixStat, java.lang.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: 1.6 $
Author:
  Stefan Bodewig

Field Summary

Fields inherited from interface org.apache.tools.zip.UnixStat
`DEFAULT_DIR_PERM, DEFAULT_FILE_PERM, DEFAULT_LINK_PERM, DIR_FLAG, FILE_FLAG, LINK_FLAG, PERM_MASK`

Constructor Summary
`AsiExtraField()`

Method Summary
`byte[]` `getCentralDirectoryData()` Delegate to local file data.
`ZipShort` `getCentralDirectoryLength()` Delegate to local file data.
`int` `getGroupId()` Get the group id.
`ZipShort` `getHeaderId()` The Header-ID.
`java.lang.String` `getLinkedFile()` Name of linked file
`byte[]` `getLocalFileDataData()` The actual data to put into local file data - without Header-ID or length specifier.
`ZipShort` `getLocalFileDataLength()` Length of the extra field in the local file data - without Header-ID or length specifier.
`int` `getMode()` File mode of this file.
`protected int` `getMode(int mode)` Get the file mode for given permissions with the correct file type.
`int` `getUserId()` Get the user id.
`boolean` `isDirectory()` Is this entry a directory?
`boolean` `isLink()` Is this entry a symbolic link?
`void` `parseFromLocalFileData(byte[] data, int offset, int length)` Populate data from this array as if it was in local file data.
`void` `setDirectory(boolean dirFlag)` Indicate whether this entry is a directory.
`void` `setGroupId(int gid)` Set the group id.
`void` `setLinkedFile(java.lang.String name)` Indicate that this entry is a symbolic link to the given filename.
`void` `setMode(int mode)` File mode of this file.
`void` `setUserId(int uid)` Set the user id.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### AsiExtraField

    public AsiExtraField()

Method Detail

### getHeaderId

    public ZipShort getHeaderId()

  The Header-ID.

  Specified by:
    `getHeaderId` in interface `ZipExtraField`
  Since:
    1.1

### getLocalFileDataLength

    public ZipShort getLocalFileDataLength()

  Length of the extra field in the local file data - without Header-ID or length specifier.

  Specified by:
    `getLocalFileDataLength` in interface `ZipExtraField`
  Since:
    1.1

### getCentralDirectoryLength

    public ZipShort getCentralDirectoryLength()

  Delegate to local file data.

  Specified by:
    `getCentralDirectoryLength` in interface `ZipExtraField`
  Since:
    1.1

### getLocalFileDataData

    public byte[] getLocalFileDataData()

  The actual data to put into local file data - without Header-ID or length specifier.

  Specified by:
    `getLocalFileDataData` in interface `ZipExtraField`
  Since:
    1.1

### getCentralDirectoryData

    public byte[] getCentralDirectoryData()

  Delegate to local file data.

  Specified by:
    `getCentralDirectoryData` in interface `ZipExtraField`
  Since:
    1.1

### setUserId

    public void setUserId(int uid)

  Set the user id.

  Since:
    1.1

### getUserId

    public int getUserId()

  Get the user id.

  Since:
    1.1

### setGroupId

    public void setGroupId(int gid)

  Set the group id.

  Since:
    1.1

### getGroupId

    public int getGroupId()

  Get the group id.

  Since:
    1.1

### setLinkedFile

    public void setLinkedFile(java.lang.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

### getLinkedFile

    public java.lang.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

### isLink

    public boolean isLink()

  Is this entry a symbolic link?

  Since:
    1.1

### setMode

    public void setMode(int mode)

  File mode of this file.

  Since:
    1.1

### getMode

    public int getMode()

  File mode of this file.

  Since:
    1.1

### setDirectory

    public void setDirectory(boolean dirFlag)

  Indicate whether this entry is a directory.

  Since:
    1.1

### isDirectory

    public boolean isDirectory()

  Is this entry a directory?

  Since:
    1.1

### parseFromLocalFileData

    public void parseFromLocalFileData(byte[] data,
                                       int offset,
                                       int length)
                                throws java.util.zip.ZipException

  Populate data from this array as if it was in local file data.

  Specified by:
    `parseFromLocalFileData` in interface `ZipExtraField`
    `java.util.zip.ZipException`
  Since:
    1.1

### getMode

    protected int getMode(int mode)

  Get the file mode for given permissions with the correct file type.

  Since:
    1.1

Copyright © 2000-2003 Apache Software Foundation. All Rights Reserved.