⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zipinfo.c

📁 完整的解压zip文件的源码。包含密码功能
💻 C
📖 第 1 页 / 共 5 页
字号:
                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 + -