Class X7875_NewUnix

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, ZipExtraField

    public class X7875_NewUnix
    extends java.lang.Object
    implements ZipExtraField, java.lang.Cloneable, java.io.Serializable
    An extra field that stores UNIX UID/GID data (owner & group ownership) for a given zip entry. We're using the field definition given in Info-Zip's source archive: zip-3.0.tar.gz/proginfo/extrafld.txt
     Local-header version:
    
     Value         Size        Description
     -----         ----        -----------
     0x7875        Short       tag for this extra block type ("ux")
     TSize         Short       total data size for this block
     Version       1 byte      version of this extra field, currently 1
     UIDSize       1 byte      Size of UID field
     UID           Variable    UID for this entry (little endian)
     GIDSize       1 byte      Size of GID field
     GID           Variable    GID for this entry (little endian)
    
     Central-header version:
    
     Value         Size        Description
     -----         ----        -----------
     0x7855        Short       tag for this extra block type ("Ux")
     TSize         Short       total data size for this block (0)
     
    Since:
    1.5
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      X7875_NewUnix()
      Constructor for X7875_NewUnix.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.Object clone()  
      boolean equals​(java.lang.Object o)  
      byte[] getCentralDirectoryData()
      The actual data to put into central directory data - without Header-ID or length specifier.
      ZipShort getCentralDirectoryLength()
      Length of the extra field in the central directory data - without Header-ID or length specifier.
      long getGID()
      Gets the GID as a long.
      ZipShort getHeaderId()
      The Header-ID.
      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.
      long getUID()
      Gets the UID as a long.
      int hashCode()  
      void parseFromCentralDirectoryData​(byte[] buffer, int offset, int length)
      Doesn't do anything since this class doesn't store anything inside the central directory.
      void parseFromLocalFileData​(byte[] data, int offset, int length)
      Populate data from this array as if it was in local file data.
      void setGID​(long l)
      Sets the GID.
      void setUID​(long l)
      Sets the UID.
      java.lang.String toString()
      Returns a String representation of this class useful for debugging purposes.
      • Methods inherited from class java.lang.Object

        getClass, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • X7875_NewUnix

        public X7875_NewUnix()
        Constructor for X7875_NewUnix.
    • Method Detail

      • getHeaderId

        public ZipShort getHeaderId()
        The Header-ID.
        Specified by:
        getHeaderId in interface ZipExtraField
        Returns:
        the value for the header id for this extrafield
      • getUID

        public long getUID()
        Gets the UID as a long. UID is typically a 32 bit unsigned value on most UNIX systems, so we return a long to avoid integer overflow into the negatives in case values above and including 2^31 are being used.
        Returns:
        the UID value.
      • getGID

        public long getGID()
        Gets the GID as a long. GID is typically a 32 bit unsigned value on most UNIX systems, so we return a long to avoid integer overflow into the negatives in case values above and including 2^31 are being used.
        Returns:
        the GID value.
      • setUID

        public void setUID​(long l)
        Sets the UID.
        Parameters:
        l - UID value to set on this extra field.
      • setGID

        public void setGID​(long l)
        Sets the GID.
        Parameters:
        l - GID value to set on this extra field.
      • 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
        Returns:
        a ZipShort for the length of the data of this extra field
      • getCentralDirectoryLength

        public ZipShort getCentralDirectoryLength()
        Length of the extra field in the central directory data - without Header-ID or length specifier.
        Specified by:
        getCentralDirectoryLength in interface ZipExtraField
        Returns:
        a ZipShort for the length of the data of this extra field
      • 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
        Returns:
        get the data
      • getCentralDirectoryData

        public byte[] getCentralDirectoryData()
        The actual data to put into central directory data - without Header-ID or length specifier.
        Specified by:
        getCentralDirectoryData in interface ZipExtraField
        Returns:
        get the data
      • 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
        Parameters:
        data - an array of bytes
        offset - the start offset
        length - the number of bytes in the array from offset
        Throws:
        java.util.zip.ZipException - on error
      • parseFromCentralDirectoryData

        public void parseFromCentralDirectoryData​(byte[] buffer,
                                                  int offset,
                                                  int length)
                                           throws java.util.zip.ZipException
        Doesn't do anything since this class doesn't store anything inside the central directory.
        Specified by:
        parseFromCentralDirectoryData in interface ZipExtraField
        Parameters:
        buffer - the buffer to read data from
        offset - offset into buffer to read data
        length - the length of data
        Throws:
        java.util.zip.ZipException - on error
      • toString

        public java.lang.String toString()
        Returns a String representation of this class useful for debugging purposes.
        Overrides:
        toString in class java.lang.Object
        Returns:
        A String representation of this class useful for debugging purposes.
      • clone

        public java.lang.Object clone()
                               throws java.lang.CloneNotSupportedException
        Throws:
        java.lang.CloneNotSupportedException
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object