src/share/native/java/util/zip/zip_util.h

Print this page

        

*** 36,62 **** #define LOCSIG 0x04034b50L /* "PK\003\004" */ #define EXTSIG 0x08074b50L /* "PK\007\008" */ #define CENSIG 0x02014b50L /* "PK\001\002" */ #define ENDSIG 0x06054b50L /* "PK\005\006" */ /* * Header sizes including signatures */ #ifdef USE_MMAP #define SIGSIZ 4 #endif #define LOCHDR 30 #define EXTHDR 16 #define CENHDR 46 #define ENDHDR 22 /* * Header field access macros */ #define CH(b, n) (((unsigned char *)(b))[n]) #define SH(b, n) (CH(b, n) | (CH(b, n+1) << 8)) ! #define LG(b, n) (SH(b, n) | (SH(b, n+2) << 16)) #define GETSIG(b) LG(b, 0) /* * Macros for getting local file (LOC) header fields */ --- 36,76 ---- #define LOCSIG 0x04034b50L /* "PK\003\004" */ #define EXTSIG 0x08074b50L /* "PK\007\008" */ #define CENSIG 0x02014b50L /* "PK\001\002" */ #define ENDSIG 0x06054b50L /* "PK\005\006" */ + #define ZIP64_ENDSIG 0x06064b50L /* "PK\006\006" */ + #define ZIP64_LOCSIG 0x07064b50L /* "PK\006\007" */ + /* * Header sizes including signatures */ + #ifdef USE_MMAP #define SIGSIZ 4 #endif #define LOCHDR 30 #define EXTHDR 16 #define CENHDR 46 #define ENDHDR 22 + #define ZIP64_ENDHDR 56 // ZIP64 end header size + #define ZIP64_LOCHDR 20 // ZIP64 end loc header size + #define ZIP64_EXTHDR 24 // EXT header size + #define ZIP64_EXTID 1 // Extra field Zip64 header ID + + #define ZIP64_MAGICVAL 0xffffffffLL + #define ZIP64_MAGICCOUNT 0xffff + + /* * Header field access macros */ #define CH(b, n) (((unsigned char *)(b))[n]) #define SH(b, n) (CH(b, n) | (CH(b, n+1) << 8)) ! #define LG(b, n) ((SH(b, n) | (SH(b, n+2) << 16)) &0xffffffffUL) ! #define LL(b, n) (((jlong)LG(b, n)) | (((jlong)LG(b, n+4)) << 32)) #define GETSIG(b) LG(b, 0) /* * Macros for getting local file (LOC) header fields */
*** 104,113 **** --- 118,147 ---- #define ENDSIZ(b) LG(b, 12) /* central directory size */ #define ENDOFF(b) LG(b, 16) /* central directory offset */ #define ENDCOM(b) SH(b, 20) /* size of zip file comment */ /* + * Macros for getting Zip64 end of central directory header fields + */ + #define ZIP64_ENDLEN(b) LL(b, 4) /* size of zip64 end of central dir */ + #define ZIP64_ENDVEM(b) SH(b, 12) /* version made by */ + #define ZIP64_ENDVER(b) SH(b, 14) /* version needed to extract */ + #define ZIP64_ENDNMD(b) LG(b, 16) /* number of this disk */ + #define ZIP64_ENDDSK(b) LG(b, 20) /* disk number of start */ + #define ZIP64_ENDTOD(b) LL(b, 24) /* total number of entries on this disk */ + #define ZIP64_ENDTOT(b) LL(b, 32) /* total number of entries */ + #define ZIP64_ENDSIZ(b) LL(b, 40) /* central directory size in bytes */ + #define ZIP64_ENDOFF(b) LL(b, 48) /* offset of first CEN header */ + + /* + * Macros for getting Zip64 end of central directory locator fields + */ + #define ZIP64_LOCDSK(b) LG(b, 4) /* disk number start */ + #define ZIP64_LOCOFF(b) LL(b, 8) /* offset of zip64 end */ + #define ZIP64_LOCTOT(b) LG(b, 16) /* total number of disks */ + + /* * Supported compression methods */ #define STORED 0 #define DEFLATED 8
*** 143,153 **** * Note that in order to save space we don't keep the name in memory, * but merely remember a 32 bit hash. */ typedef struct jzcell { unsigned int hash; /* 32 bit hashcode on name */ ! unsigned int cenpos; /* Offset of central directory file header */ unsigned int next; /* hash chain: index into jzfile->entries */ } jzcell; typedef struct cencache { char *data; /* A cached page of CEN headers */ --- 177,187 ---- * Note that in order to save space we don't keep the name in memory, * but merely remember a 32 bit hash. */ typedef struct jzcell { unsigned int hash; /* 32 bit hashcode on name */ ! jlong cenpos; /* Offset of central directory file header */ unsigned int next; /* hash chain: index into jzfile->entries */ } jzcell; typedef struct cencache { char *data; /* A cached page of CEN headers */