jdk/src/share/native/java/util/zip/zip_util.h
changeset 2438 21c111b51aa8
parent 2163 1586577d5107
child 2592 ef26f663a2ba
equal deleted inserted replaced
2436:ae4667371301 2438:21c111b51aa8
    36 #define LOCSIG 0x04034b50L          /* "PK\003\004" */
    36 #define LOCSIG 0x04034b50L          /* "PK\003\004" */
    37 #define EXTSIG 0x08074b50L          /* "PK\007\008" */
    37 #define EXTSIG 0x08074b50L          /* "PK\007\008" */
    38 #define CENSIG 0x02014b50L          /* "PK\001\002" */
    38 #define CENSIG 0x02014b50L          /* "PK\001\002" */
    39 #define ENDSIG 0x06054b50L          /* "PK\005\006" */
    39 #define ENDSIG 0x06054b50L          /* "PK\005\006" */
    40 
    40 
       
    41 #define ZIP64_ENDSIG 0x06064b50L    /* "PK\006\006" */
       
    42 #define ZIP64_LOCSIG 0x07064b50L    /* "PK\006\007" */
       
    43 
    41 /*
    44 /*
    42  * Header sizes including signatures
    45  * Header sizes including signatures
    43  */
    46  */
       
    47 
    44 #ifdef USE_MMAP
    48 #ifdef USE_MMAP
    45 #define SIGSIZ  4
    49 #define SIGSIZ  4
    46 #endif
    50 #endif
    47 #define LOCHDR 30
    51 #define LOCHDR 30
    48 #define EXTHDR 16
    52 #define EXTHDR 16
    49 #define CENHDR 46
    53 #define CENHDR 46
    50 #define ENDHDR 22
    54 #define ENDHDR 22
    51 
    55 
       
    56 #define ZIP64_ENDHDR 56       // ZIP64 end header size
       
    57 #define ZIP64_LOCHDR 20       // ZIP64 end loc header size
       
    58 #define ZIP64_EXTHDR 24       // EXT header size
       
    59 #define ZIP64_EXTID   1       // Extra field Zip64 header ID
       
    60 
       
    61 #define ZIP64_MAGICVAL 0xffffffffLL
       
    62 #define ZIP64_MAGICCOUNT 0xffff
       
    63 
       
    64 
    52 /*
    65 /*
    53  * Header field access macros
    66  * Header field access macros
    54  */
    67  */
    55 #define CH(b, n) (((unsigned char *)(b))[n])
    68 #define CH(b, n) (((unsigned char *)(b))[n])
    56 #define SH(b, n) (CH(b, n) | (CH(b, n+1) << 8))
    69 #define SH(b, n) (CH(b, n) | (CH(b, n+1) << 8))
    57 #define LG(b, n) (SH(b, n) | (SH(b, n+2) << 16))
    70 #define LG(b, n) ((SH(b, n) | (SH(b, n+2) << 16)) &0xffffffffUL)
       
    71 #define LL(b, n) (((jlong)LG(b, n)) | (((jlong)LG(b, n+4)) << 32))
    58 #define GETSIG(b) LG(b, 0)
    72 #define GETSIG(b) LG(b, 0)
    59 
    73 
    60 /*
    74 /*
    61  * Macros for getting local file (LOC) header fields
    75  * Macros for getting local file (LOC) header fields
    62  */
    76  */
   104 #define ENDSIZ(b) LG(b, 12)         /* central directory size */
   118 #define ENDSIZ(b) LG(b, 12)         /* central directory size */
   105 #define ENDOFF(b) LG(b, 16)         /* central directory offset */
   119 #define ENDOFF(b) LG(b, 16)         /* central directory offset */
   106 #define ENDCOM(b) SH(b, 20)         /* size of zip file comment */
   120 #define ENDCOM(b) SH(b, 20)         /* size of zip file comment */
   107 
   121 
   108 /*
   122 /*
       
   123  * Macros for getting Zip64 end of central directory header fields
       
   124  */
       
   125 #define ZIP64_ENDLEN(b) LL(b, 4)      /* size of zip64 end of central dir */
       
   126 #define ZIP64_ENDVEM(b) SH(b, 12)     /* version made by */
       
   127 #define ZIP64_ENDVER(b) SH(b, 14)     /* version needed to extract */
       
   128 #define ZIP64_ENDNMD(b) LG(b, 16)     /* number of this disk */
       
   129 #define ZIP64_ENDDSK(b) LG(b, 20)     /* disk number of start */
       
   130 #define ZIP64_ENDTOD(b) LL(b, 24)     /* total number of entries on this disk */
       
   131 #define ZIP64_ENDTOT(b) LL(b, 32)     /* total number of entries */
       
   132 #define ZIP64_ENDSIZ(b) LL(b, 40)     /* central directory size in bytes */
       
   133 #define ZIP64_ENDOFF(b) LL(b, 48)     /* offset of first CEN header */
       
   134 
       
   135 /*
       
   136  * Macros for getting Zip64 end of central directory locator fields
       
   137  */
       
   138 #define ZIP64_LOCDSK(b) LG(b, 4)      /* disk number start */
       
   139 #define ZIP64_LOCOFF(b) LL(b, 8)      /* offset of zip64 end */
       
   140 #define ZIP64_LOCTOT(b) LG(b, 16)     /* total number of disks */
       
   141 
       
   142 /*
   109  * Supported compression methods
   143  * Supported compression methods
   110  */
   144  */
   111 #define STORED      0
   145 #define STORED      0
   112 #define DEFLATED    8
   146 #define DEFLATED    8
   113 
   147 
   143  * Note that in order to save space we don't keep the name in memory,
   177  * Note that in order to save space we don't keep the name in memory,
   144  * but merely remember a 32 bit hash.
   178  * but merely remember a 32 bit hash.
   145  */
   179  */
   146 typedef struct jzcell {
   180 typedef struct jzcell {
   147     unsigned int hash;    /* 32 bit hashcode on name */
   181     unsigned int hash;    /* 32 bit hashcode on name */
   148     unsigned int cenpos;  /* Offset of central directory file header */
   182     jlong cenpos;         /* Offset of central directory file header */
   149     unsigned int next;    /* hash chain: index into jzfile->entries */
   183     unsigned int next;    /* hash chain: index into jzfile->entries */
   150 } jzcell;
   184 } jzcell;
   151 
   185 
   152 typedef struct cencache {
   186 typedef struct cencache {
   153     char *data;           /* A cached page of CEN headers */
   187     char *data;           /* A cached page of CEN headers */