📄 zipinfo.c
字号:
default: ef_fieldname = efUnknown; break; } Info(slide, 0, ((char *)slide, LoadFarString(ExtraFieldType), eb_id, LoadFarStringSmall(ef_fieldname), eb_datalen)); /* additional, field-specific information: */ switch (eb_id) { case EF_OS2: case EF_ACL: if (eb_datalen >= EB_OS2_HLEN) { if (eb_id == EF_OS2) ef_fieldname = OS2EAs; else ef_fieldname = ACLdata; Info(slide, 0, ((char *)slide, LoadFarString(ef_fieldname), makelong(ef_ptr))); *pEndprev = 0L; /* no clue about csize of local */ } break; case EF_NTSD: if (eb_datalen >= EB_NTSD_C_LEN) { Info(slide, 0, ((char *)slide, LoadFarString(NTSDData), makelong(ef_ptr))); *pEndprev = 0L; /* no clue about csize of local */ } break; case EF_IZVMS: if (eb_datalen >= 8) { char *p, q[8]; int compr = makeword(ef_ptr+4) & 7; *q = '\0'; if (compr > 3) compr = 3; if (strncmp((char *)ef_ptr, "VFAB", 4) == 0) p = "FAB"; else if (strncmp((char *)ef_ptr, "VALL", 4) == 0) p = "XABALL"; else if (strncmp((char *)ef_ptr, "VFHC", 4) == 0) p = "XABFHC"; else if (strncmp((char *)ef_ptr, "VDAT", 4) == 0) p = "XABDAT"; else if (strncmp((char *)ef_ptr, "VRDT", 4) == 0) p = "XABRDT"; else if (strncmp((char *)ef_ptr, "VPRO", 4) == 0) p = "XABPRO"; else if (strncmp((char *)ef_ptr, "VKEY", 4) == 0) p = "XABKEY"; else if (strncmp((char *)ef_ptr, "VMSV", 4) == 0) { p = "version"; if (eb_datalen >= 16) { q[0] = ' '; q[1] = '('; strncpy(q+2, (char *)ef_ptr+12, 4); q[6] = ')'; q[7] = '\0'; } } else p = "version"; Info(slide, 0, ((char *)slide, LoadFarString(izVMSdata), LoadFarStringSmall(izVMScomp[compr]), makeword(ef_ptr+6), p, q)); } break; case EF_TIME: if (eb_datalen >= 1) { char types[80]; int num = 0, len; *types = '\0'; if (*ef_ptr & 1) { strcpy(types, LoadFarString(UTmodification)); ++num; } if (*ef_ptr & 2) { len = strlen(types); if (num) types[len++] = '/'; strcpy(types+len, LoadFarString(UTaccess)); ++num; if (*pEndprev > 0L) *pEndprev += 4L; } if (*ef_ptr & 4) { len = strlen(types); if (num) types[len++] = '/'; strcpy(types+len, LoadFarString(UTcreation)); ++num; if (*pEndprev > 0L) *pEndprev += 4L; } if (num > 0) Info(slide, 0, ((char *)slide, LoadFarString(UTdata), types, num == 1? nullStr : "s")); } break; case EF_MAC3: if (eb_datalen >= EB_MAC3_HLEN) { ulg eb_uc = makelong(ef_ptr); unsigned mac3_flgs = makeword(ef_ptr+EB_FLGS_OFFS); unsigned eb_is_uc = mac3_flgs & EB_M3_FL_UNCMPR; Info(slide, 0, ((char *)slide, LoadFarString(Mac3data), eb_uc, eb_is_uc ? "un" : nullStr)); if (eb_is_uc) { if (*pEndprev > 0L) *pEndprev += makelong(ef_ptr); } else { *pEndprev = 0L; /* no clue about csize of local */ } Info(slide, 0, ((char *)slide, LoadFarString(MacOSMAC3flags), LoadFarStringSmall(mac3_flgs & EB_M3_FL_DATFRK ? MacOS_DF : MacOS_RF), (mac3_flgs & EB_M3_FL_TIME64 ? 64 : 32))); zi_showMacTypeCreator(__G__ &ef_ptr[6]); } break; case EF_ZIPIT2: if (eb_datalen >= 5 && strncmp((char *)ef_ptr, "ZPIT", 4) == 0) { if (eb_datalen >= 12) { zi_showMacTypeCreator(__G__ &ef_ptr[4]); } } case EF_ZIPIT: if (eb_datalen >= 5 && strncmp((char *)ef_ptr, "ZPIT", 4) == 0) { unsigned fnlen = ef_ptr[4]; if (eb_datalen >= fnlen + (5 + 8)) { uch nullchar = ef_ptr[fnlen+5]; ef_ptr[fnlen+5] = '\0'; /* terminate filename */ Info(slide, 0, ((char *)slide, LoadFarString(ZipItFname), (char *)ef_ptr+5)); ef_ptr[fnlen+5] = nullchar; zi_showMacTypeCreator(__G__ &ef_ptr[fnlen+5]); } } break; case EF_JLMAC: if (eb_datalen >= 40 && strncmp((char *)ef_ptr, "JLEE", 4) == 0) { zi_showMacTypeCreator(__G__ &ef_ptr[4]); Info(slide, 0, ((char *)slide, LoadFarString(MacOSJLEEflags), LoadFarStringSmall(ef_ptr[31] & 1 ? MacOS_DF : MacOS_RF))); } break;#ifdef CMS_MVS case EF_VMCMS: case EF_MVS: { char type[100]; Info(slide, 0, ((char *)slide, LoadFarString(VmMvsExtraField), (getVMMVSexfield(type, ef_ptr-EB_HEADSIZE, (unsigned)eb_datalen) > 0)? type : LoadFarStringSmall(VmMvsInvalid))); } break;#endif /* CMS_MVS */ case EF_BEOS: if (eb_datalen >= EB_BEOS_HLEN) { ulg eb_uc = makelong(ef_ptr); unsigned eb_is_uc = *(ef_ptr+EB_FLGS_OFFS) & EB_BE_FL_UNCMPR; Info(slide, 0, ((char *)slide, LoadFarString(BeOSdata), eb_uc, eb_is_uc ? "un" : nullStr)); if (eb_is_uc) { if (*pEndprev > 0L) *pEndprev += makelong(ef_ptr); } else { *pEndprev = 0L; /* no clue about csize of local */ } } break; case EF_QDOS: if (eb_datalen >= 4) { Info(slide, 0, ((char *)slide, LoadFarString(QDOSdata), ef_ptr[0], ef_ptr[1], ef_ptr[2], ef_ptr[3])); } break; case EF_AOSVS: if (eb_datalen >= 5) { Info(slide, 0, ((char *)slide, LoadFarString(AOSVSdata), ((int)(uch)ef_ptr[4])/10, ((int)(uch)ef_ptr[4])%10)); } break; case EF_MD5: if (eb_datalen >= 19) { char md5[33]; int i; for (i = 0; i < 16; ++i) sprintf(&md5[i<<1], "%02x", ef_ptr[15-i]); md5[32] = '\0'; Info(slide, 0, ((char *)slide, LoadFarString(MD5data), md5)); break; } /* else: fall through !! */ default: if (eb_datalen > 0) { ush i, n; if (eb_datalen <= 24) { Info(slide, 0, ((char *)slide, LoadFarString(ColonIndent))); n = eb_datalen; } else { Info(slide, 0, ((char *)slide, LoadFarString(First20))); n = 20; } for (i = 0; i < n; ++i) Info(slide, 0, ((char *)slide, LoadFarString(efFormat), ef_ptr[i])); } break; } (*G.message)((zvoid *)&G, (uch *)".", 1L, 0); ef_ptr += eb_datalen; ef_len -= eb_datalen; } (*G.message)((zvoid *)&G, (uch *)"\n", 1L, 0); } /* high bit == Unix/OS2/NT GMT times (mtime, atime); next bit == UID/GID */ if ((xattr = (ush)((G.crec.external_file_attributes & 0xC000) >> 12)) & 8) { if (hostnum == UNIX_ || hostnum == FS_HPFS_ || hostnum == FS_NTFS_) { Info(slide, 0, ((char *)slide, LoadFarString(lExtraFieldType), "is", EF_IZUNIX, LoadFarStringSmall(efIZUnix), (unsigned)(xattr&12), (xattr&4)? efIZuid : efIZnouid)); if (*pEndprev > 0L) *pEndprev += (ulg)(xattr&12); } else if (hostnum == FS_FAT_ && !(xattr&4)) Info(slide, 0, ((char *)slide, LoadFarString(lExtraFieldType), "may be", EF_IZUNIX, LoadFarStringSmall(efIZUnix), 8, efIZnouid)); } if (!G.crec.file_comment_length) Info(slide, 0, ((char *)slide, LoadFarString(NoFileComment))); else { Info(slide, 0, ((char *)slide, LoadFarString(FileCommBegin))); if ((error = do_string(__G__ G.crec.file_comment_length, DISPL_8)) != PK_COOL) { error_in_archive = error; /* might be warning */ if (error > PK_WARN) /* fatal */ return error; } Info(slide, 0, ((char *)slide, LoadFarString(FileCommEnd))); } return error_in_archive;} /* end function zi_long() *//*************************//* Function zi_short() *//*************************/static int zi_short(__G) /* return PK-type error code */ __GDEF{#ifdef USE_EF_UT_TIME iztimes z_utime; time_t *z_modtim;#endif int k, error, error_in_archive=PK_COOL; ush methnum, hostnum, hostver, xattr; char *p, workspace[12], attribs[16]; char methbuf[5]; static ZCONST char dtype[5]="NXFS"; /* normal, maximum, fast, superfast */ static ZCONST char Far os[NUM_HOSTS+1][4] = { "fat", "ami", "vms", "unx", "cms", "atr", "hpf", "mac", "zzz", "cpm", "t20", "ntf", "qds", "aco", "vft", "mvs", "be ", "nsk", "???" }; static ZCONST char Far method[NUM_METHODS+1][5] = { "stor", "shrk", "re:1", "re:2", "re:3", "re:4", "i#:#", "tokn", "def#", "edef", "dcli", "u###" };/*--------------------------------------------------------------------------- Print out various interesting things about the compressed file. ----------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -