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

📄 osdep.h

📁 给出了 zip 压缩算法的完整实现过程。
💻 H
字号:
/*  Copyright (c) 1990-2005 Info-ZIP.  All rights reserved.  See the accompanying file LICENSE, version 2004-May-22 or later  (the contents of which are also included in zip.h) for terms of use.  If, for some reason, both of these files are missing, the Info-ZIP license  also may be found at:  ftp://ftp.info-zip.org/pub/infozip/license.htmlhtml*//* The symbol DOS is used throughout the Zip source to identify code portions * specific to the MSDOS port. * Just to make sure, we check that it is set. * (Currently, this should should not be neccessary, since currently it has * to be set on the compiler command line to get this file read in.) */#ifndef DOS#  define DOS#endif/* The symbol MSDOS is consistently used in the generic source files * to identify code to support for MSDOS (and MSDOS related) stuff. * e.g: FAT or (FAT like) file systems, *      '\\' as directory separator in paths, *      "\r\n" as record (line) terminator in text files, ... * * IMPORTANT Note: *  This symbol is not unique for the MSDOS port !!!!!! *  It is also defined by ports to some other OS which are (to some extend) *  considered DOS compatible. *  Examples are: OS/2 (OS2), Windows NT and Windows 95 (WIN32). * */#ifndef MSDOS#  define MSDOS#endif/* Power C is similar to Turbo C */#ifdef __POWERC#  define __TURBOC__#endif /* __POWERC *//* Automatic setting of the common Microsoft C idenfifier MSC. * NOTE: Watcom also defines M_I*86 ! */#if defined(_MSC_VER) || (defined(M_I86) && !defined(__WATCOMC__))#  ifndef MSC#    define MSC                 /* This should work for older MSC, too!  */#  endif#endif#if !defined(__GO32__) && !defined(__EMX__)#  define NO_UNISTD_H#endif#if defined(__WATCOMC__) && defined(__386__)#  define WATCOMC_386#endif#ifdef WINDLL#  define MSWIN#  define MEMORY16#endif#if !defined(__EMX__) && !defined(__GO32__) && !defined(WATCOMC_386)#if !defined(WINDLL)#  define MSDOS16 /* 16 bit MSDOS only */#  define MEMORY16#endif#endif#if !defined(NO_ASM) && !defined(ASMV)#  define ASMV#endif/* enable creation of UTC time fields unless explicitely suppressed */#if !defined(NO_EF_UT_TIME) && !defined(USE_EF_UT_TIME)#  define USE_EF_UT_TIME#endif/* check that TZ environment variable is defined before using UTC times */#if (!defined(NO_IZ_CHECK_TZ) && !defined(IZ_CHECK_TZ))#  define IZ_CHECK_TZ#endif#ifdef MEMORY16#  ifndef NO_ASM#    define ASM_CRC 1#  endif /* ?NO_ASM */#  ifdef __TURBOC__#    include <alloc.h>#    if defined(__COMPACT__) || defined(__LARGE__) || defined(__HUGE__)#      if defined(DYNAMIC_CRC_TABLE) && defined(DYNALLOC_CRCTAB)        error: No dynamic CRC table allocation with Borland C far data models.#      endif /* DYNAMIC_CRC_TABLE */#    endif /* Turbo/Borland C far data memory models */#    define nearmalloc malloc#    define nearfree   free#    define DYN_ALLOC#  else /* !__TURBOC__ */#    include <malloc.h>#    define nearmalloc _nmalloc#    define nearfree   _nfree#    define farmalloc  _fmalloc#    define farfree    _ffree#  endif /* ?__TURBOC__ */#  define MY_ZCALLOC 1#  ifdef SMALL_MEM#    define CBSZ 2048#    define ZBSZ 2048#  endif#  ifdef MEDIUM_MEM#    define CBSZ 4096#    define ZBSZ 4096#  endif#  ifndef CBSZ#    define CBSZ 8192#    define ZBSZ 8192#  endif#endif /* MEMORY16 */#ifdef MATCH#  undef MATCH#endif#define MATCH dosmatch          /* use DOS style wildcard matching */#define USE_CASE_MAP#define ROUNDED_TIME(time)  (((time) + 1) & (~1))#define PROCNAME(n) (action == ADD || action == UPDATE ? wild(n) : \                     procname(n, 1))#define FOPR "rb"#define FOPM "r+b"#define FOPW "wb"#include <sys/types.h>#include <sys/stat.h>#include <io.h>#ifdef ZCRYPT_INTERNAL#  ifdef WINDLL#    define ZCR_SEED2     (unsigned)3141592654L /* use PI as seed pattern */#  else#    ifndef __GO32__#      include <process.h>      /* getpid() declaration for srand seed */#    endif#  endif#endif/* * djgpp 1.x did not declare these */#if defined(__GO32__) && !defined(__DJGPP__)char *strlwr(char *);int setmode(int, int);#endif#ifdef __WATCOMC__#  define NO_MKTEMP#  define HAS_OPENDIR#  define SSTAT stat_bandaid   int stat_bandaid(const char *path, struct stat *buf);/* Get asm routines to link properly without using "__cdecl": */#  ifdef __386__#    ifdef ASMV#      pragma aux match_init    "_*" parm caller [] modify []#      pragma aux longest_match "_*" parm caller [] value [eax] \                                      modify [eax ecx edx]#    endif#    ifndef USE_ZLIB#      pragma aux crc32         "_*" parm caller [] value [eax] modify [eax]#      pragma aux get_crc_table "_*" parm caller [] value [eax] \                                      modify [eax ecx edx]#    endif /* !USE_ZLIB */#  else /* !__386__ */#    ifdef ASMV#      pragma aux match_init    "_*" parm caller [] loadds modify [ax bx]#      pragma aux longest_match "_*" parm caller [] loadds value [ax] \                                      modify [ax bx cx dx es]#    endif /* ASMV */#    ifndef USE_ZLIB#      pragma aux crc32         "_*" parm caller [] value [ax dx] \                                      modify [ax bx cx dx es]#      pragma aux get_crc_table "_*" parm caller [] value [ax] \                                      modify [ax bx cx dx]#    endif /* !USE_ZLIB */#  endif /* ?__386__ */#endif /* __WATCOMC__ *//* * Wrapper function to get around the MSC7 00:00:00 31 Dec 1899 time base, * see msdos.c for more info */#if defined(_MSC_VER) && _MSC_VER == 700#  define localtime(t) msc7_localtime(t)#endif#if (defined(__TURBOC__) && !defined(__BORLANDC__) && __TURBOC__ <= 0x0201)#  ifndef NO_MKTIME#    define NO_MKTIME           /* TC 2.01 and earlier do not supply mktime() */#  endif#endifvoid check_for_windows(const char *app);

⌨️ 快捷键说明

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