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

📄 zipinfo.c

📁 完整的解压zip文件的源码。包含密码功能
💻 C
📖 第 1 页 / 共 5 页
字号:
    Info(slide, 0, ((char *)slide, LoadFarString(MinOSCompReq), varmsg_str));    Info(slide, 0, ((char *)slide, LoadFarString(MinSWVerReq), extver/10,      extver%10));    if (methnum >= NUM_METHODS) {        sprintf(unkn, LoadFarString(UnknownNo), G.crec.compression_method);        varmsg_str = unkn;    } else {        varmsg_str = LoadFarStringSmall(method[methnum]);    }    Info(slide, 0, ((char *)slide, LoadFarString(CompressMethod), varmsg_str));    if (methnum == IMPLODED) {        Info(slide, 0, ((char *)slide, LoadFarString(SlideWindowSizeImplode),          (G.crec.general_purpose_bit_flag & 2)? '8' : '4'));        Info(slide, 0, ((char *)slide, LoadFarString(ShannonFanoTrees),          (G.crec.general_purpose_bit_flag & 4)? '3' : '2'));    } else if (methnum == DEFLATED) {        ush  dnum=(ush)((G.crec.general_purpose_bit_flag>>1) & 3);        Info(slide, 0, ((char *)slide, LoadFarString(CompressSubtype),          LoadFarStringSmall(dtypelng[dnum])));    }    Info(slide, 0, ((char *)slide, LoadFarString(FileSecurity),      (G.crec.general_purpose_bit_flag & 1) ? nullStr : "not "));    Info(slide, 0, ((char *)slide, LoadFarString(ExtendedLocalHdr),      (G.crec.general_purpose_bit_flag & 8) ? "yes" : "no"));    /* print upper 3 bits for amusement? */    /* For printing of date & time, a "char d_t_buf[21]" is required.     * To save stack space, we reuse the "char attribs[22]" buffer which     * is not used yet.     */#   define d_t_buf attribs    zi_time(__G__ &G.crec.last_mod_dos_datetime, NULL, d_t_buf);    Info(slide, 0, ((char *)slide, LoadFarString(FileModDate), d_t_buf));#ifdef USE_EF_UT_TIME    if (G.extra_field &&#ifdef IZ_CHECK_TZ        G.tz_is_valid &&#endif        (ef_scan_for_izux(G.extra_field, G.crec.extra_field_length, 1,                          G.crec.last_mod_dos_datetime, &z_utime, NULL)         & EB_UT_FL_MTIME))    {        TIMET_TO_NATIVE(z_utime.mtime)   /* NOP unless MSC 7.0 or Macintosh */        d_t_buf[0] = (char)0;               /* signal "show local time" */        zi_time(__G__ &G.crec.last_mod_dos_datetime, &(z_utime.mtime), d_t_buf);        Info(slide, 0, ((char *)slide, LoadFarString(UT_FileModDate),          d_t_buf, LoadFarStringSmall(LocalTime)));#ifndef NO_GMTIME        d_t_buf[0] = (char)1;           /* signal "show UTC (GMT) time" */        zi_time(__G__ &G.crec.last_mod_dos_datetime, &(z_utime.mtime), d_t_buf);        Info(slide, 0, ((char *)slide, LoadFarString(UT_FileModDate),          d_t_buf, LoadFarStringSmall(GMTime)));#endif /* !NO_GMTIME */    }#endif /* USE_EF_UT_TIME */    Info(slide, 0, ((char *)slide, LoadFarString(CRC32Value), G.crec.crc32));    Info(slide, 0, ((char *)slide, LoadFarString(CompressedFileSize),      G.crec.csize));    Info(slide, 0, ((char *)slide, LoadFarString(UncompressedFileSize),      G.crec.ucsize));    Info(slide, 0, ((char *)slide, LoadFarString(FilenameLength),      G.crec.filename_length));    Info(slide, 0, ((char *)slide, LoadFarString(ExtraFieldLength),      G.crec.extra_field_length));    Info(slide, 0, ((char *)slide, LoadFarString(FileCommentLength),      G.crec.file_comment_length));    Info(slide, 0, ((char *)slide, LoadFarString(FileDiskNum),      G.crec.disk_number_start + 1));    Info(slide, 0, ((char *)slide, LoadFarString(ApparentFileType),      (G.crec.internal_file_attributes & 1)? "text"         : (G.crec.internal_file_attributes & 2)? "ebcdic"              : "binary"));             /* changed to accept EBCDIC */#ifdef ATARI    printf("  external file attributes (hex):                   %.8lx\n",      G.crec.external_file_attributes);#endif    xattr = (ush)((G.crec.external_file_attributes >> 16) & 0xFFFF);    if (hostnum == VMS_) {        char   *p=attribs, *q=attribs+1;        int    i, j, k;        for (k = 0;  k < 12;  ++k)            workspace[k] = 0;        if (xattr & VMS_IRUSR)            workspace[0] = 'R';        if (xattr & VMS_IWUSR) {            workspace[1] = 'W';            workspace[3] = 'D';        }        if (xattr & VMS_IXUSR)            workspace[2] = 'E';        if (xattr & VMS_IRGRP)            workspace[4] = 'R';        if (xattr & VMS_IWGRP) {            workspace[5] = 'W';            workspace[7] = 'D';        }        if (xattr & VMS_IXGRP)            workspace[6] = 'E';        if (xattr & VMS_IROTH)            workspace[8] = 'R';        if (xattr & VMS_IWOTH) {            workspace[9] = 'W';            workspace[11] = 'D';        }        if (xattr & VMS_IXOTH)            workspace[10] = 'E';        *p++ = '(';        for (k = j = 0;  j < 3;  ++j) {    /* loop over groups of permissions */            for (i = 0;  i < 4;  ++i, ++k)  /* loop over perms within a group */                if (workspace[k])                    *p++ = workspace[k];            *p++ = ',';                       /* group separator */            if (j == 0)                while ((*p++ = *q++) != ',')                    ;                         /* system, owner perms are same */        }        *p-- = 0;        *p = ')';   /* overwrite last comma */        Info(slide, 0, ((char *)slide, LoadFarString(VMSFileAttributes), xattr,          attribs));    } else if (hostnum == AMIGA_) {        switch (xattr & AMI_IFMT) {            case AMI_IFDIR:  attribs[0] = 'd';  break;            case AMI_IFREG:  attribs[0] = '-';  break;            default:         attribs[0] = '?';  break;        }        attribs[1] = (xattr & AMI_IHIDDEN)?   'h' : '-';        attribs[2] = (xattr & AMI_ISCRIPT)?   's' : '-';        attribs[3] = (xattr & AMI_IPURE)?     'p' : '-';        attribs[4] = (xattr & AMI_IARCHIVE)?  'a' : '-';        attribs[5] = (xattr & AMI_IREAD)?     'r' : '-';        attribs[6] = (xattr & AMI_IWRITE)?    'w' : '-';        attribs[7] = (xattr & AMI_IEXECUTE)?  'e' : '-';        attribs[8] = (xattr & AMI_IDELETE)?   'd' : '-';        attribs[9] = 0;   /* better dlm the string */        Info(slide, 0, ((char *)slide, LoadFarString(AmigaFileAttributes),          xattr, attribs));    } else if ((hostnum != FS_FAT_) && (hostnum != FS_HPFS_) &&               (hostnum != FS_NTFS_) && (hostnum != FS_VFAT_) &&               (hostnum != ACORN_) &&               (hostnum != VM_CMS_) && (hostnum != MVS_))    {                                 /* assume Unix-like */        switch ((unsigned)(xattr & UNX_IFMT)) {            case (unsigned)UNX_IFDIR:   attribs[0] = 'd';  break;            case (unsigned)UNX_IFREG:   attribs[0] = '-';  break;            case (unsigned)UNX_IFLNK:   attribs[0] = 'l';  break;            case (unsigned)UNX_IFBLK:   attribs[0] = 'b';  break;            case (unsigned)UNX_IFCHR:   attribs[0] = 'c';  break;            case (unsigned)UNX_IFIFO:   attribs[0] = 'p';  break;            case (unsigned)UNX_IFSOCK:  attribs[0] = 's';  break;            default:          attribs[0] = '?';  break;        }        attribs[1] = (xattr & UNX_IRUSR)? 'r' : '-';        attribs[4] = (xattr & UNX_IRGRP)? 'r' : '-';        attribs[7] = (xattr & UNX_IROTH)? 'r' : '-';        attribs[2] = (xattr & UNX_IWUSR)? 'w' : '-';        attribs[5] = (xattr & UNX_IWGRP)? 'w' : '-';        attribs[8] = (xattr & UNX_IWOTH)? 'w' : '-';        if (xattr & UNX_IXUSR)            attribs[3] = (xattr & UNX_ISUID)? 's' : 'x';        else            attribs[3] = (xattr & UNX_ISUID)? 'S' : '-';   /* S = undefined */        if (xattr & UNX_IXGRP)            attribs[6] = (xattr & UNX_ISGID)? 's' : 'x';   /* == UNX_ENFMT */        else            attribs[6] = (xattr & UNX_ISGID)? 'l' : '-';        if (xattr & UNX_IXOTH)            attribs[9] = (xattr & UNX_ISVTX)? 't' : 'x';   /* "sticky bit" */        else            attribs[9] = (xattr & UNX_ISVTX)? 'T' : '-';   /* T = undefined */        attribs[10] = 0;        Info(slide, 0, ((char *)slide, LoadFarString(UnixFileAttributes), xattr,          attribs));    } else {        Info(slide, 0, ((char *)slide, LoadFarString(NonMSDOSFileAttributes),            G.crec.external_file_attributes >> 8));    } /* endif (hostnum: external attributes format) */    if ((xattr=(ush)(G.crec.external_file_attributes & 0xFF)) == 0)        Info(slide, 0, ((char *)slide, LoadFarString(MSDOSFileAttributes),          xattr));    else if (xattr == 1)        Info(slide, 0, ((char *)slide, LoadFarString(MSDOSFileAttributesRO),          xattr));    else        Info(slide, 0, ((char *)slide, LoadFarString(MSDOSFileAttributesAlpha),          xattr, (xattr&1)? "rdo " : nullStr,          (xattr&2)? "hid " : nullStr,          (xattr&4)? "sys " : nullStr,          (xattr&8)? "lab " : nullStr,          (xattr&16)? "dir " : nullStr,          (xattr&32)? "arc" : nullStr));/*---------------------------------------------------------------------------    Analyze the extra field, if any, and print the file comment, if any (the    filename has already been printed, above).  That finishes up this file    entry...  ---------------------------------------------------------------------------*/    if (G.crec.extra_field_length > 0) {        uch *ef_ptr = G.extra_field;        ush ef_len = G.crec.extra_field_length;        ush eb_id, eb_datalen;        ZCONST char Far *ef_fieldname;        if (error_in_archive > PK_WARN)   /* fatal:  can't continue */            /* delayed "fatal error" return from extra field reading */            return error;        if (G.extra_field == (uch *)NULL)            return PK_ERR;   /* not consistent with crec length */        Info(slide, 0, ((char *)slide, LoadFarString(ExtraFields)));        while (ef_len >= EB_HEADSIZE) {            eb_id = makeword(&ef_ptr[EB_ID]);            eb_datalen = makeword(&ef_ptr[EB_LEN]);            ef_ptr += EB_HEADSIZE;            ef_len -= EB_HEADSIZE;            if (eb_datalen > (ush)ef_len) {                Info(slide, 0x421, ((char *)slide,                  LoadFarString(ExtraFieldTrunc), eb_id, eb_datalen, ef_len));                eb_datalen = ef_len;            }            switch (eb_id) {                case EF_AV:                    ef_fieldname = efAV;                    break;                case EF_OS2:                    ef_fieldname = efOS2;                    break;                case EF_ACL:                    ef_fieldname = efACL;                    break;                case EF_NTSD:                    ef_fieldname = efNTSD;                    break;                case EF_PKVMS:                    ef_fieldname = efPKVMS;                    break;                case EF_IZVMS:                    ef_fieldname = efIZVMS;                    break;                case EF_PKW32:                    ef_fieldname = efPKWin32;                    break;                case EF_PKUNIX:                    ef_fieldname = efPKUnix;                    break;                case EF_IZUNIX:                    ef_fieldname = efIZUnix;                    if (G.crec.version_made_by[1] == UNIX_ && *pEndprev > 0L)                        *pEndprev += 4L;  /* also have UID/GID in local copy */                    break;                case EF_IZUNIX2:                    ef_fieldname = efIZUnix2;                    if (*pEndprev > 0L)                        *pEndprev += 4L;  /* 4 byte UID/GID in local copy */                    break;                case EF_TIME:                    ef_fieldname = efTime;                    break;                case EF_MAC3:                    ef_fieldname = efMac3;                    break;                case EF_JLMAC:                    ef_fieldname = efJLMac;                    break;                case EF_ZIPIT:                    ef_fieldname = efZipIt;                    break;                case EF_ZIPIT2:                    ef_fieldname = efZipIt2;                    break;                case EF_VMCMS:                    ef_fieldname = efVMCMS;                    break;                case EF_MVS:                    ef_fieldname = efMVS;                    break;                case EF_BEOS:                    ef_fieldname = efBeOS;                    break;                case EF_QDOS:                    ef_fieldname = efQDOS;                    break;                case EF_AOSVS:                    ef_fieldname = efAOSVS;                    break;                case EF_SPARK:   /* from RISC OS */                    ef_fieldname = efSpark;                    break;                case EF_MD5:                    ef_fieldname = efMD5;                    break;                case EF_ASIUNIX:                    ef_fieldname = efASiUnix;                    break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -