亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? globals.h

?? zip壓縮
?? H
?? 第 1 頁 / 共 2 頁
字號:
/*  Copyright (c) 1990-2002 Info-ZIP.  All rights reserved.  See the accompanying file LICENSE, version 2000-Apr-09 or later  (the contents of which are also included in unzip.h) for terms of use.  If, for some reason, all these files are missing, the Info-ZIP license  also may be found at:  ftp://ftp.info-zip.org/pub/infozip/license.html*//*---------------------------------------------------------------------------  globals.h  There is usually no need to include this file since unzip.h includes it.  This header file is used by all of the UnZip source files.  It contains  a struct definition that is used to "house" all of the global variables.  This is done to allow for multithreaded environments (OS/2, NT, Win95,  Unix) to call UnZip through an API without a semaphore.  REENTRANT should  be defined for all platforms that require this.  GLOBAL CONSTRUCTOR AND DESTRUCTOR (API WRITERS READ THIS!!!)  ------------------------------------------------------------  No, it's not C++, but it's as close as we can get with K&R.  The main() of each process that uses these globals must include the  CONSTRUCTGLOBALS; statement.  This will malloc enough memory for the  structure and initialize any variables that require it.  This must  also be done by any API function that jumps into the middle of the  code.  The DESTROYGLOBALS(); statement should be inserted before EVERY "EXIT(n)".  Naturally, it also needs to be put before any API returns as well.  In fact, it's much more important in API functions since the process  will NOT end, and therefore the memory WON'T automatically be freed  by the operating system.  USING VARIABLES FROM THE STRUCTURE  ----------------------------------  All global variables must now be prefixed with `G.' which is either a  global struct (in which case it should be the only global variable) or  a macro for the value of a local pointer variable that is passed from  function to function.  Yes, this is a pain.  But it's the only way to  allow full reentrancy.  ADDING VARIABLES TO THE STRUCTURE  ---------------------------------  If you make the inclusion of any variables conditional, be sure to only  check macros that are GUARANTEED to be included in every module.  For instance, newzip and pwdarg are needed only if CRYPT is TRUE,  but this is defined after unzip.h has been read.  If you are not careful,  some modules will expect your variable to be part of this struct while  others won't.  This will cause BIG problems. (Inexplicable crashes at  strange times, car fires, etc.)  When in doubt, always include it!  Note also that UnZipSFX needs a few variables that UnZip doesn't.  However,  it also includes some object files from UnZip.  If we were to conditionally  include the extra variables that UnZipSFX needs, the object files from  UnZip would not mesh with the UnZipSFX object files.  Result: we just  include the UnZipSFX variables every time.  (It's only an extra 4 bytes  so who cares!)  ADDING FUNCTIONS  ----------------  To support this new global struct, all functions must now conditionally  pass the globals pointer (pG) to each other.  This is supported by 5 macros:  __GPRO, __GPRO__, __G, __G__ and __GDEF.  A function that needs no other  parameters would look like this:    int extract_or_test_files(__G)      __GDEF    {       ... stuff ...    }  A function with other parameters would look like:    int memextract(__G__ tgt, tgtsize, src, srcsize)        __GDEF        uch *tgt, *src;        ulg tgtsize, srcsize;    {      ... stuff ...    }  In the Function Prototypes section of unzpriv.h, you should use __GPRO and  __GPRO__ instead:    int  uz_opts                   OF((__GPRO__ int *pargc, char ***pargv));    int  process_zipfiles          OF((__GPRO));  Note that there is NO comma after __G__ or __GPRO__ and no semi-colon after  __GDEF.  I wish there was another way but I don't think there is.  TESTING THE CODE  -----------------  Whether your platform requires reentrancy or not, you should always try  building with REENTRANT defined if any functions have been added.  It is  pretty easy to forget a __G__ or a __GDEF and this mistake will only show  up if REENTRANT is defined.  All platforms should run with REENTRANT  defined.  Platforms that can't take advantage of it will just be paying  a performance penalty needlessly.  SIGNAL MADNESS  --------------  This whole pointer passing scheme falls apart when it comes to SIGNALs.  I handle this situation 2 ways right now.  If you define USETHREADID,  UnZip will include a 64-entry table.  Each entry can hold a global  pointer and thread ID for one thread.  This should allow up to 64  threads to access UnZip simultaneously.  Calling DESTROYGLOBALS()  will free the global struct and zero the table entry.  If somebody  forgets to call DESTROYGLOBALS(), this table will eventually fill up  and UnZip will exit with an error message.  A good way to test your  code to make sure you didn't forget a DESTROYGLOBALS() is to change  THREADID_ENTRIES to 3 or 4 in globals.c, making the table real small.  Then make a small test program that calls your API a dozen times.  Those platforms that don't have threads still need to be able to compile  with REENTRANT defined to test and see if new code is correctly written  to work either way.  For these platforms, I simply keep a global pointer  called GG that points to the Globals structure.  Good enough for testing.  I believe that NT has thread level storage.  This could probably be used  to store a global pointer for the sake of the signal handler more cleanly  than my table approach.  ---------------------------------------------------------------------------*/#ifndef __globals_h#define __globals_h#ifdef USE_ZLIB#  include "zlib.h"#endif/*************//*  Globals  *//*************/typedef struct Globals {#ifdef DLL    zvoid *callerglobs; /* pointer to structure of pass-through global vars */#endif    /* command options of general use */    UzpOpts UzO;        /* command options of general use */#ifndef FUNZIP    /* command options specific to the high level command line interface */#ifdef MORE    int M_flag;         /* -M: built-in "more" function */#endif    /* internal flags and general globals */#ifdef MORE    int height;           /* check for SIGWINCH, etc., eventually... */    int lines;            /* count of lines displayed on current screen */# if (defined(SCREENWIDTH) && defined(SCREENLWRAP))    int width;    int chars;            /* count of screen characters in current line */# endif#endif /* MORE */#if (defined(IZ_CHECK_TZ) && defined(USE_EF_UT_TIME))    int tz_is_valid;      /* indicates that timezone info can be used */#endif    int noargs;           /* did true command line have *any* arguments? */    unsigned filespecs;   /* number of real file specifications to be matched */    unsigned xfilespecs;  /* number of excluded filespecs to be matched */    int process_all_files;    int overwrite_mode;   /* 0 - query, 1 - always, 2 - never */    int create_dirs;      /* used by main(), mapname(), checkdir() */    int extract_flag;    int newzip;           /* reset in extract.c; used in crypt.c */    LONGINT   real_ecrec_offset;    LONGINT   expect_ecrec_offset;    long csize;           /* used by decompr. (NEXTBYTE): must be signed */    long used_csize;      /* used by extract_or_test_member(), explode() */#ifdef DLL     int fValidate;       /* true if only validating an archive */     int filenotfound;     int redirect_data;   /* redirect data to memory buffer */     int redirect_text;   /* redirect text output to buffer */# ifndef NO_SLIDE_REDIR     int redirect_slide;  /* redirect decompression area to mem buffer */#  if (defined(USE_DEFLATE64) && defined(INT_16BIT))     ulg _wsize;          /* size of sliding window exceeds "unsigned" range */#  else     unsigned _wsize;     /* sliding window size can be hold in unsigned */#  endif# endif     ulg redirect_size;            /* size of redirected output buffer */     uch *redirect_buffer;         /* pointer to head of allocated buffer */     uch *redirect_pointer;        /* pointer past end of written data */# ifndef NO_SLIDE_REDIR     uch *redirect_sldptr;         /* head of decompression slide buffer */# endif# ifdef OS2DLL     cbList(processExternally);    /* call-back list */# endif#endif /* DLL */    char **pfnames;    char **pxnames;    char sig[4];    char answerbuf[10];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美视频一区二区| 国产精品福利一区二区三区| 成人a区在线观看| 全部av―极品视觉盛宴亚洲| 久久久噜噜噜久噜久久综合| 欧美日韩在线电影| 成人午夜视频在线观看| 日本aⅴ亚洲精品中文乱码| 亚洲欧美日韩综合aⅴ视频| www成人在线观看| 91精品国产麻豆| 欧美午夜一区二区三区免费大片| 国产激情视频一区二区在线观看| 日韩精品一二三区| 伊人开心综合网| 国产精品嫩草影院com| 精品国产精品网麻豆系列| 欧美视频一区二区三区在线观看| av在线不卡免费看| 国产成人在线影院| 国产麻豆精品95视频| 青青草国产成人av片免费| 亚洲成av人片在线| 亚洲激情综合网| 亚洲欧美综合在线精品| 欧美国产一区在线| 国产视频亚洲色图| 久久午夜老司机| 久久综合九色综合久久久精品综合| 91精品中文字幕一区二区三区| 在线观看91精品国产入口| 91精品婷婷国产综合久久性色| 91麻豆成人久久精品二区三区| 国产mv日韩mv欧美| 成人av手机在线观看| 国产福利精品导航| 成人激情黄色小说| 99国产精品久久久久久久久久久| 99久久久精品| 一本大道av伊人久久综合| 91视频国产资源| 色屁屁一区二区| 欧美在线一区二区| 欧美日韩国产综合草草| 91精品国产全国免费观看| 日韩欧美亚洲国产精品字幕久久久| 日韩欧美123| 国产无遮挡一区二区三区毛片日本| 久久久国际精品| 国产精品精品国产色婷婷| 中文字幕一区二区三中文字幕| 国产精品大尺度| 一区二区三区精品| 日韩精品福利网| 久久激情五月激情| 高清shemale亚洲人妖| 成人av午夜电影| 欧美色图一区二区三区| 91精品国产手机| 久久精品在这里| 欧美一级高清大全免费观看| 26uuu亚洲综合色| 国产精品久久久久影院老司| 亚洲综合另类小说| 免费成人在线网站| 成人激情小说乱人伦| 欧美亚洲一区二区三区四区| 日韩视频在线你懂得| 欧美国产国产综合| 亚洲福利视频一区| 国内精品久久久久影院色| 99久久99久久精品免费看蜜桃| 欧美伦理影视网| 国产欧美一区二区在线| 一区二区三区国产精华| 久久精品99国产国产精| aaa亚洲精品一二三区| 制服丝袜国产精品| 国产精品美女www爽爽爽| 一区二区三区久久| 国产一区二区三区精品欧美日韩一区二区三区 | 91丨九色丨黑人外教| 欧美精品久久99久久在免费线 | 91精品久久久久久久99蜜桃| 久久精品一区八戒影视| 亚洲成av人片在www色猫咪| 国产主播一区二区三区| 欧美日韩在线免费视频| 欧美激情一区二区三区不卡| 亚洲一二三区视频在线观看| 国产一区二区三区黄视频| 欧美伊人久久大香线蕉综合69| 精品免费日韩av| 亚洲综合一区二区精品导航| 精品一区精品二区高清| 在线精品视频一区二区三四| 国产午夜精品在线观看| 亚洲成人av在线电影| 成人av网址在线| 久久婷婷色综合| 日韩va欧美va亚洲va久久| 99久久99久久精品国产片果冻| 精品三级在线观看| 亚洲国产精品久久不卡毛片| 国产91精品在线观看| 日韩你懂的在线播放| 亚洲一级二级在线| 99久精品国产| 中文幕一区二区三区久久蜜桃| 美女一区二区在线观看| 欧美色精品天天在线观看视频| 国产精品久久久久毛片软件| 韩国成人福利片在线播放| 欧美精品电影在线播放| 亚洲精品免费在线播放| 成人高清免费观看| 久久久欧美精品sm网站| 国内精品伊人久久久久影院对白| 91麻豆精品国产| 午夜精品在线视频一区| 欧美视频一区二区三区在线观看| 亚洲视频中文字幕| 99精品国产91久久久久久 | 国产精品三级av在线播放| 韩国精品主播一区二区在线观看 | 国产成人av一区二区| 精品国免费一区二区三区| 日本成人中文字幕| 日韩一区二区三区电影| 美女精品一区二区| 欧美xfplay| 国产毛片精品一区| 国产欧美日韩不卡免费| 国产成人自拍高清视频在线免费播放| 久久久久久免费网| 高清不卡一区二区在线| 国产精品五月天| 91蜜桃婷婷狠狠久久综合9色| 中文字幕不卡一区| 92精品国产成人观看免费| 成人免费在线观看入口| 91丝袜美腿高跟国产极品老师| 亚洲视频狠狠干| 欧美午夜一区二区| 日本欧美加勒比视频| 精品国产乱码久久久久久夜甘婷婷| 激情文学综合丁香| 亚洲国产精品传媒在线观看| 成人av网站免费| 亚洲一级二级三级在线免费观看| 欧美二区三区的天堂| 精品一区二区国语对白| 国产日韩精品一区二区浪潮av| 成av人片一区二区| 亚洲综合无码一区二区| 欧美一级免费大片| 国产盗摄视频一区二区三区| 国产精品久久网站| 欧美喷水一区二区| 国产综合久久久久久久久久久久| 亚洲国产激情av| 欧洲一区二区三区免费视频| 免费久久精品视频| 中文字幕第一区| 欧美日韩高清在线| 国产精品2024| 一区二区三区不卡在线观看 | 国产精品久久久久影院亚瑟| 在线免费观看日韩欧美| 日韩一区精品视频| 国产日韩欧美精品电影三级在线| 欧美在线啊v一区| 精品一区二区三区欧美| 亚洲男同性恋视频| 精品国产91亚洲一区二区三区婷婷| 99久久精品久久久久久清纯| 偷窥少妇高潮呻吟av久久免费| 日本一区二区三区电影| 欧美老肥妇做.爰bbww视频| 国产激情一区二区三区四区| 亚洲一区二区成人在线观看| 久久亚洲欧美国产精品乐播| 欧美综合亚洲图片综合区| 久久99久久99| 亚洲电影在线播放| 国产午夜精品一区二区三区嫩草| 欧美三级在线播放| 成人av网在线| 韩国午夜理伦三级不卡影院| 亚洲视频一区在线观看| 亚洲精品一区二区三区福利| 欧美性猛交xxxx黑人交| 成人在线一区二区三区| 免费三级欧美电影| 亚洲精品国产高清久久伦理二区| 久久蜜桃一区二区| 337p亚洲精品色噜噜| 在线观看亚洲专区| av在线免费不卡| 国产成人精品免费一区二区|