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

📄 unzip.c

📁 完整的解压zip文件的源码。包含密码功能
💻 C
📖 第 1 页 / 共 4 页
字号:
    if ((argc-- == 0) || error)#endif    {        *pargc = argc;        *pargv = argv;#ifndef SFX        if (uO.vflag >= 2 && argc == -1) {              /* "unzip -v" */            show_version_info(__G);            return PK_OK;        }        if (!G.noargs && !error)            error = PK_PARAM;   /* had options (not -h or -v) but no zipfile */#endif /* !SFX */        return USAGE(error);    }#ifdef SFX    /* print our banner unless we're being fairly quiet */    if (uO.qflag < 2)        Info(slide, error? 1 : 0, ((char *)slide, LoadFarString(UnzipSFXBanner),          UZ_MAJORVER, UZ_MINORVER, PATCHLEVEL, BETALEVEL,          LoadFarStringSmall(VersionDate)));#ifdef BETA    /* always print the beta warning:  no unauthorized distribution!! */    Info(slide, error? 1 : 0, ((char *)slide, LoadFarString(BetaVersion), "\n",      "SFX"));#endif#endif /* SFX */    if (uO.cflag || uO.tflag || uO.vflag || uO.zflag#ifdef TIMESTAMP                                                     || uO.T_flag#endif                                                                 )        G.extract_flag = FALSE;    else        G.extract_flag = TRUE;    *pargc = argc;    *pargv = argv;    return PK_OK;} /* end function uz_opts() *//********************//* Function usage() *//********************/#ifdef SFX#  ifdef VMS#    define LOCAL "X.  Quote uppercase options"#  endif#  ifdef UNIX#    define LOCAL "X"#  endif#  ifdef DOS_OS2_W32#    define LOCAL "s$"#  endif#  ifdef FLEXOS#    define LOCAL "s"#  endif#  ifdef AMIGA#    define LOCAL "N"#  endif   /* Default for all other systems: */#  ifndef LOCAL#    define LOCAL ""#  endif#  ifdef MORE#    define SFXOPT1 "M"#  else#    define SFXOPT1 ""#  endifint usage(__G__ error)   /* return PK-type error code */    __GDEF    int error;{    Info(slide, error? 1 : 0, ((char *)slide, LoadFarString(UnzipSFXBanner),      UZ_MAJORVER, UZ_MINORVER, PATCHLEVEL, BETALEVEL,      LoadFarStringSmall(VersionDate)));    Info(slide, error? 1 : 0, ((char *)slide, LoadFarString(UnzipSFXOpts),      SFXOPT1, LOCAL));#ifdef BETA    Info(slide, error? 1 : 0, ((char *)slide, LoadFarString(BetaVersion), "\n",      "SFX"));#endif    if (error)        return PK_PARAM;    else        return PK_COOL;     /* just wanted usage screen: no error */} /* end function usage() */#else /* !SFX */#  ifdef VMS#    define QUOT '\"'#    define QUOTS "\""#  else#    define QUOT ' '#    define QUOTS ""#  endifint usage(__G__ error)   /* return PK-type error code */    __GDEF    int error;{    int flag = (error? 1 : 0);/*---------------------------------------------------------------------------    Print either ZipInfo usage or UnZip usage, depending on incantation.    (Strings must be no longer than 512 bytes for Turbo C, apparently.)  ---------------------------------------------------------------------------*/    if (uO.zipinfo_mode) {#ifndef NO_ZIPINFO        Info(slide, flag, ((char *)slide, LoadFarString(ZipInfoUsageLine1),          ZI_MAJORVER, ZI_MINORVER, PATCHLEVEL, BETALEVEL,          LoadFarStringSmall(VersionDate),          LoadFarStringSmall2(ZipInfoExample), QUOTS,QUOTS));        Info(slide, flag, ((char *)slide, LoadFarString(ZipInfoUsageLine2)));        Info(slide, flag, ((char *)slide, LoadFarString(ZipInfoUsageLine3),          QUOT,QUOT, QUOT,QUOT, LoadFarStringSmall(ZipInfoUsageLine4)));#ifdef VMS        Info(slide, flag, ((char *)slide, "\nRemember that non-lowercase\ filespecs must be quoted in VMS (e.g., \"Makefile\").\n"));#endif#endif /* !NO_ZIPINFO */    } else {   /* UnZip mode */        Info(slide, flag, ((char *)slide, LoadFarString(UnzipUsageLine1),          UZ_MAJORVER, UZ_MINORVER, PATCHLEVEL, BETALEVEL,          LoadFarStringSmall(VersionDate)));#ifdef BETA        Info(slide, flag, ((char *)slide, LoadFarString(BetaVersion), "", ""));#endif        Info(slide, flag, ((char *)slide, LoadFarString(UnzipUsageLine2),          ZIPINFO_MODE_OPTION, LoadFarStringSmall(ZipInfoMode)));#ifdef VMS        if (!error)  /* maybe no command-line tail found; show extra help */            Info(slide, flag, ((char *)slide, LoadFarString(VMSusageLine2b)));#endif        Info(slide, flag, ((char *)slide, LoadFarString(UnzipUsageLine3),          LoadFarStringSmall(local1)));        Info(slide, flag, ((char *)slide, LoadFarString(UnzipUsageLine4),          QUOT,QUOT, QUOT,QUOT, LoadFarStringSmall(local2), QUOT,QUOT,          LoadFarStringSmall2(local3)));        /* This is extra work for SMALL_MEM, but it will work since         * LoadFarStringSmall2 uses the same buffer.  Remember, this         * is a hack. */        Info(slide, flag, ((char *)slide, LoadFarString(UnzipUsageLine5),          LoadFarStringSmall(Example2), LoadFarStringSmall2(Example3),          LoadFarStringSmall2(Example3)));    } /* end if (uO.zipinfo_mode) */    if (error)        return PK_PARAM;    else        return PK_COOL;     /* just wanted usage screen: no error */} /* end function usage() */#endif /* ?SFX */#ifndef SFX/********************************//* Function show_version_info() *//********************************/static void show_version_info(__G)    __GDEF{    if (uO.qflag > 3)                           /* "unzip -vqqqq" */        Info(slide, 0, ((char *)slide, "%d\n",          (UZ_MAJORVER*100 + UZ_MINORVER*10 + PATCHLEVEL)));    else {        char *envptr, *getenv();        int numopts = 0;        Info(slide, 0, ((char *)slide, LoadFarString(UnzipUsageLine1v),          UZ_MAJORVER, UZ_MINORVER, PATCHLEVEL, BETALEVEL,          LoadFarStringSmall(VersionDate)));        Info(slide, 0, ((char *)slide,          LoadFarString(UnzipUsageLine2v)));        version(__G);        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptions)));#ifdef ACORN_FTYPE_NFS        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(AcornFtypeNFS)));        ++numopts;#endif#ifdef ASM_CRC        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(AsmCRC)));        ++numopts;#endif#ifdef ASM_INFLATECODES        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(AsmInflateCodes)));        ++numopts;#endif#ifdef CHECK_VERSIONS        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(Check_Versions)));        ++numopts;#endif#ifdef COPYRIGHT_CLEAN        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(Copyright_Clean)));        ++numopts;#endif#ifdef DEBUG        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(UDebug)));        ++numopts;#endif#ifdef DEBUG_TIME        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(DebugTime)));        ++numopts;#endif#ifdef DLL        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(Dll)));        ++numopts;#endif#ifdef DOSWILD        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(DosWild)));        ++numopts;#endif#ifdef LZW_CLEAN        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(LZW_Clean)));        ++numopts;#endif#ifndef MORE        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(No_More)));        ++numopts;#endif#ifdef NO_ZIPINFO        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(No_ZipInfo)));        ++numopts;#endif#ifdef NTSD_EAS        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(NTSDExtAttrib)));        ++numopts;#endif#ifdef OS2_EAS        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(OS2ExtAttrib)));        ++numopts;#endif#ifdef QLZIP        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(SMSExFldOnUnix)));        ++numopts;#endif#ifdef REENTRANT        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(Reentrant)));        ++numopts;#endif#ifdef REGARGS        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(RegArgs)));        ++numopts;#endif#ifdef RETURN_CODES        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(Return_Codes)));        ++numopts;#endif#ifdef SET_DIR_ATTRIB        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(SetDirAttrib)));        ++numopts;#endif#ifdef TIMESTAMP        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(TimeStamp)));        ++numopts;#endif#ifdef UNIXBACKUP        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(UnixBackup)));        ++numopts;#endif#ifdef USE_EF_UT_TIME        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(Use_EF_UT_time)));        ++numopts;#endif#ifndef COPYRIGHT_CLEAN        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(Use_Smith_Code)));        ++numopts;#endif#ifndef LZW_CLEAN        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(Use_Unshrink)));        ++numopts;#endif#ifdef USE_VFAT        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(Use_VFAT_support)));        ++numopts;#endif#ifdef USE_ZLIB        sprintf((char *)(slide+256), LoadFarStringSmall(UseZlib),          ZLIB_VERSION, zlib_version);        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          (char *)(slide+256)));        ++numopts;#endif#ifdef VMS_TEXT_CONV        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(VmsTextConv)));        ++numopts;#endif#ifdef VMSCLI        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(VmsCLI)));        ++numopts;#endif#ifdef VMSWILD        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(VmsWild)));        ++numopts;#endif#if CRYPT# ifdef PASSWD_FROM_STDIN        Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat),          LoadFarStringSmall(PasswdStdin)));# endif        Info(slide, 0, ((char *)slide, LoadFarString(Decryption),          CR_MAJORVER, CR_MINORVER, CR_BETA_VER,          LoadFarStringSmall(CryptDate)));        ++numopts;#endif /* CRYPT */        if (numopts == 0)            Info(slide, 0, ((char *)slide,              LoadFarString(CompileOptFormat),              LoadFarStringSmall(None)));        Info(slide, 0, ((char *)slide, LoadFarString(EnvOptions)));        envptr = getenv(LoadFarStringSmall(EnvUnZip));        Info(slide, 0, ((char *)slide, LoadFarString(EnvOptFormat),          LoadFarStringSmall(EnvUnZip),          (envptr == (char *)NULL || *envptr == 0)?          LoadFarStringSmall2(None) : envptr));        envptr = getenv(LoadFarStringSmall(EnvUnZip2));        Info(slide, 0, ((char *)slide, LoadFarString(EnvOptFormat),          LoadFarStringSmall(EnvUnZip2),          (envptr == (char *)NULL || *envptr == 0)?          LoadFarStringSmall2(None) : envptr));        envptr = getenv(LoadFarStringSmall(EnvZipInfo));        Info(slide, 0, ((char *)slide, LoadFarString(EnvOptFormat),          LoadFarStringSmall(EnvZipInfo),          (envptr == (char *)NULL || *envptr == 0)?          LoadFarStringSmall2(None) : envptr));        envptr = getenv(LoadFarStringSmall(EnvZipInfo2));        Info(slide, 0, ((char *)slide, LoadFarString(EnvOptFormat),          LoadFarStringSmall(EnvZipInfo2),          (envptr == (char *)NULL || *envptr == 0)?          LoadFarStringSmall2(None) : envptr));#ifndef __RSXNT__#ifdef __EMX__        envptr = getenv(LoadFarStringSmall(EnvEMX));        Info(slide, 0, ((char *)slide, LoadFarString(EnvOptFormat),          LoadFarStringSmall(EnvEMX),          (envptr == (char *)NULL || *envptr == 0)?          LoadFarStringSmall2(None) : envptr));        envptr = getenv(LoadFarStringSmall(EnvEMXOPT));        Info(slide, 0, ((char *)slide, LoadFarString(EnvOptFormat),          LoadFarStringSmall(EnvEMXOPT),          (envptr == (char *)NULL || *envptr == 0)?          LoadFarStringSmall2(None) : envptr));#endif /* __EMX__ */#if (defined(__GO32__) && (!defined(__DJGPP__) || (__DJGPP__ < 2)))        envptr = getenv(LoadFarStringSmall(EnvGO32));        Info(slide, 0, ((char *)slide, LoadFarString(EnvOptFormat),          LoadFarStringSmall(EnvGO32),          (envptr == (char *)NULL || *envptr == 0)?          LoadFarStringSmall2(None) : envptr));        envptr = getenv(LoadFarStringSmall(EnvGO32TMP));        Info(slide, 0, ((char *)slide, LoadFarString(EnvOptFormat),          LoadFarStringSmall(EnvGO32TMP),          (envptr == (char *)NULL || *envptr == 0)?          LoadFarStringSmall2(None) : envptr));#endif /* __GO32__ && !(__DJGPP__ >= 2) */#endif /* !__RSXNT__ */#ifdef RISCOS        envptr = getenv(LoadFarStringSmall(EnvUnZipExts));        Info(slide, 0, ((char *)slide, LoadFarString(EnvOptFormat),          LoadFarStringSmall(EnvUnZipExts),          (envptr == (char *)NULL || *envptr == 0)?          LoadFarStringSmall2(None) : envptr));#endif /* RISCOS */    }} /* end function show_version() */#endif /* !SFX */#endif /* !WINDLL */

⌨️ 快捷键说明

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