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

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

?? infback.c

?? psp上的reader 這個是以月光老大的cnreader為基礎 增加了zip文件瀏覽功能
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* infback.c -- inflate using a call-back interface * Copyright (C) 1995-2003 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h *//*   This code is largely copied from inflate.c.  Normally either infback.o or   inflate.o would be linked into an application--not both.  The interface   with inffast.c is retained so that optimized assembler-coded versions of   inflate_fast() can be used with either inflate.c or infback.c. */
//捛壛
#include "zlibFileMemory.h"#include "zutil.h"#include "inftrees.h"#include "inflate.h"#include "inffast.h"/* function prototypes */local void fixedtables OF((struct inflate_state FAR *state));/*   strm provides memory allocation functions in zalloc and zfree, or   Z_NULL to use the library memory allocation functions.   windowBits is in the range 8..15, and window is a user-supplied   window and output buffer that is 2**windowBits bytes. */int ZEXPORT inflateBackInit_(strm, windowBits, window, version, stream_size)z_stream FAR *strm;int windowBits;unsigned char FAR *window;const char *version;int stream_size;{    struct inflate_state FAR *state;    if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||        stream_size != (int)(sizeof(z_stream)))        return Z_VERSION_ERROR;    if (strm == Z_NULL || window == Z_NULL ||        windowBits < 8 || windowBits > 15)        return Z_STREAM_ERROR;    strm->msg = Z_NULL;                 /* in case we return an error */    if (strm->zalloc == (alloc_func)0) {        strm->zalloc = zcalloc;        strm->opaque = (voidpf)0;    }    if (strm->zfree == (free_func)0) strm->zfree = zcfree;    state = (struct inflate_state FAR *)ZALLOC(strm, 1,                                               sizeof(struct inflate_state));    if (state == Z_NULL) return Z_MEM_ERROR;    Tracev((stderr, "inflate: allocated\n"));    strm->state = (voidpf)state;    state->wbits = windowBits;    state->wsize = 1U << windowBits;    state->window = window;    state->write = 0;    state->whave = 0;    return Z_OK;}/*   Return state with length and distance decoding tables and index sizes set to   fixed code decoding.  Normally this returns fixed tables from inffixed.h.   If BUILDFIXED is defined, then instead this routine builds the tables the   first time it's called, and returns those tables the first time and   thereafter.  This reduces the size of the code by about 2K bytes, in   exchange for a little execution time.  However, BUILDFIXED should not be   used for threaded applications, since the rewriting of the tables and virgin   may not be thread-safe. */local void fixedtables(state)struct inflate_state FAR *state;{#ifdef BUILDFIXED    static int virgin = 1;    static code *lenfix, *distfix;    static code fixed[544];    /* build fixed huffman tables if first call (may not be thread safe) */    if (virgin) {        unsigned sym, bits;        static code *next;        /* literal/length table */        sym = 0;        while (sym < 144) state->lens[sym++] = 8;        while (sym < 256) state->lens[sym++] = 9;        while (sym < 280) state->lens[sym++] = 7;        while (sym < 288) state->lens[sym++] = 8;        next = fixed;        lenfix = next;        bits = 9;        inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work);        /* distance table */        sym = 0;        while (sym < 32) state->lens[sym++] = 5;        distfix = next;        bits = 5;        inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work);        /* do this just once */        virgin = 0;    }#else /* !BUILDFIXED */#   include "inffixed.h"#endif /* BUILDFIXED */    state->lencode = lenfix;    state->lenbits = 9;    state->distcode = distfix;    state->distbits = 5;}/* Macros for inflateBack(): *//* Load returned state from inflate_fast() */#define LOAD() \    do { \        put = strm->next_out; \        left = strm->avail_out; \        next = strm->next_in; \        have = strm->avail_in; \        hold = state->hold; \        bits = state->bits; \    } while (0)/* Set state from registers for inflate_fast() */#define RESTORE() \    do { \        strm->next_out = put; \        strm->avail_out = left; \        strm->next_in = next; \        strm->avail_in = have; \        state->hold = hold; \        state->bits = bits; \    } while (0)/* Clear the input bit accumulator */#define INITBITS() \    do { \        hold = 0; \        bits = 0; \    } while (0)/* Assure that some input is available.  If input is requested, but denied,   then return a Z_BUF_ERROR from inflateBack(). */#define PULL() \    do { \        if (have == 0) { \            have = in(in_desc, &next); \            if (have == 0) { \                next = Z_NULL; \                ret = Z_BUF_ERROR; \                goto inf_leave; \            } \        } \    } while (0)/* Get a byte of input into the bit accumulator, or return from inflateBack()   with an error if there is no input available. */#define PULLBYTE() \    do { \        PULL(); \        have--; \        hold += (unsigned long)(*next++) << bits; \        bits += 8; \    } while (0)/* Assure that there are at least n bits in the bit accumulator.  If there is   not enough available input to do that, then return from inflateBack() with   an error. */#define NEEDBITS(n) \    do { \        while (bits < (unsigned)(n)) \            PULLBYTE(); \    } while (0)/* Return the low n bits of the bit accumulator (n < 16) */#define BITS(n) \    ((unsigned)hold & ((1U << (n)) - 1))/* Remove n bits from the bit accumulator */#define DROPBITS(n) \    do { \        hold >>= (n); \        bits -= (unsigned)(n); \    } while (0)/* Remove zero to seven bits as needed to go to a byte boundary */#define BYTEBITS() \    do { \        hold >>= bits & 7; \        bits -= bits & 7; \    } while (0)/* Assure that some output space is available, by writing out the window   if it's full.  If the write fails, return from inflateBack() with a   Z_BUF_ERROR. */#define ROOM() \    do { \        if (left == 0) { \            put = state->window; \            left = state->wsize; \            state->whave = left; \            if (out(out_desc, put, left)) { \                ret = Z_BUF_ERROR; \                goto inf_leave; \            } \        } \    } while (0)/*   strm provides the memory allocation functions and window buffer on input,   and provides information on the unused input on return.  For Z_DATA_ERROR   returns, strm will also provide an error message.   in() and out() are the call-back input and output functions.  When   inflateBack() needs more input, it calls in().  When inflateBack() has   filled the window with output, or when it completes with data in the   window, it calls out() to write out the data.  The application must not   change the provided input until in() is called again or inflateBack()   returns.  The application must not change the window/output buffer until   inflateBack() returns.   in() and out() are called with a descriptor parameter provided in the   inflateBack() call.  This parameter can be a structure that provides the   information required to do the read or write, as well as accumulated   information on the input and output such as totals and check values.   in() should return zero on failure.  out() should return non-zero on   failure.  If either in() or out() fails, than inflateBack() returns a   Z_BUF_ERROR.  strm->next_in can be checked for Z_NULL to see whether it   was in() or out() that caused in the error.  Otherwise,  inflateBack()   returns Z_STREAM_END on success, Z_DATA_ERROR for an deflate format   error, or Z_MEM_ERROR if it could not allocate memory for the state.   inflateBack() can also return Z_STREAM_ERROR if the input parameters   are not correct, i.e. strm is Z_NULL or the state was not initialized. */int ZEXPORT inflateBack(strm, in, in_desc, out, out_desc)z_stream FAR *strm;in_func in;void FAR *in_desc;out_func out;void FAR *out_desc;{    struct inflate_state FAR *state;    unsigned char FAR *next;    /* next input */    unsigned char FAR *put;     /* next output */    unsigned have, left;        /* available input and output */    unsigned long hold;         /* bit buffer */    unsigned bits;              /* bits in bit buffer */    unsigned copy;              /* number of stored or match bytes to copy */    unsigned char FAR *from;    /* where to copy match bytes from */    code this;                  /* current decoding table entry */    code last;                  /* parent table entry */    unsigned len;               /* length to copy for repeats, bits to drop */    int ret;                    /* return code */    static const unsigned short order[19] = /* permutation of code lengths */        {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};    /* Check that the strm exists and that the state was initialized */    if (strm == Z_NULL || strm->state == Z_NULL)        return Z_STREAM_ERROR;    state = (struct inflate_state FAR *)strm->state;    /* Reset the state */    strm->msg = Z_NULL;    state->mode = TYPE;    state->last = 0;    state->whave = 0;    next = strm->next_in;    have = next != Z_NULL ? strm->avail_in : 0;    hold = 0;    bits = 0;    put = state->window;    left = state->wsize;    /* Inflate until end of block marked as last */    for (;;)        switch (state->mode) {        case TYPE:            /* determine and dispatch block type */            if (state->last) {                BYTEBITS();                state->mode = DONE;                break;            }            NEEDBITS(3);            state->last = BITS(1);            DROPBITS(1);            switch (BITS(2)) {            case 0:                             /* stored block */                Tracev((stderr, "inflate:     stored block%s\n",                        state->last ? " (last)" : ""));                state->mode = STORED;                break;            case 1:                             /* fixed block */                fixedtables(state);                Tracev((stderr, "inflate:     fixed codes block%s\n",                        state->last ? " (last)" : ""));                state->mode = LEN;              /* decode codes */                break;            case 2:                             /* dynamic block */                Tracev((stderr, "inflate:     dynamic codes block%s\n",                        state->last ? " (last)" : ""));                state->mode = TABLE;                break;            case 3:                strm->msg = (char *)"invalid block type";                state->mode = BAD;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人激情午夜影院| 成人美女视频在线观看| 国产高清亚洲一区| 欧美视频日韩视频在线观看| 久久只精品国产| 亚洲一二三级电影| 成人小视频免费在线观看| 欧美日韩免费电影| 中文字幕永久在线不卡| 国产一区二区三区不卡在线观看| 在线视频一区二区三区| 欧美激情一区二区| 日本91福利区| 欧美电影在哪看比较好| 亚洲欧美视频在线观看| 成人一二三区视频| 欧美精品一区二区三区高清aⅴ| 亚洲综合色噜噜狠狠| av在线一区二区| 久久女同性恋中文字幕| 麻豆精品久久久| 51久久夜色精品国产麻豆| 亚洲自拍与偷拍| 色菇凉天天综合网| 亚洲黄色性网站| 色婷婷久久99综合精品jk白丝| 中文成人av在线| 国产不卡视频在线播放| 2023国产精品| 国模少妇一区二区三区| 精品福利一区二区三区| 精品亚洲国产成人av制服丝袜| 日韩一区二区在线观看视频播放| 亚洲成人av在线电影| 欧美日韩一级大片网址| 五月激情六月综合| 91精品国产综合久久国产大片| 午夜精品爽啪视频| 3751色影院一区二区三区| 日韩精品欧美成人高清一区二区| 欧美日韩精品一区二区三区蜜桃| 亚洲成在人线在线播放| 欧美喷潮久久久xxxxx| 日韩高清在线观看| 日韩色在线观看| 国产成人综合精品三级| 国产精品久久久久久久久免费桃花| 波多野结衣精品在线| 亚洲欧美日韩小说| 欧美日韩三级一区二区| 久久精品99久久久| 国产日韩v精品一区二区| 99久久婷婷国产综合精品电影| 亚洲美女免费视频| 欧美精品一二三| 精品一区二区在线看| 国产蜜臀av在线一区二区三区| av成人免费在线| 午夜精品一区二区三区电影天堂| 欧美一三区三区四区免费在线看| 久久机这里只有精品| 岛国av在线一区| 亚洲一二三四区| 3751色影院一区二区三区| 久久国产精品一区二区| 国产精品毛片无遮挡高清| 91成人免费在线视频| 日本成人在线看| 国产精品不卡一区二区三区| 欧美日韩一二三| 国产精品18久久久久| 亚洲自拍偷拍av| 久久久精品综合| 欧美日韩免费观看一区二区三区| 国产自产v一区二区三区c| 亚洲乱码国产乱码精品精小说| 欧美一区二区三区免费大片| 成人h动漫精品一区二区| 日韩高清不卡在线| 国产精品福利一区二区三区| 日韩你懂的在线观看| 91视视频在线直接观看在线看网页在线看| 三级欧美在线一区| 中文字幕一区二区不卡| 欧美mv日韩mv国产网站| 在线观看免费一区| 成人av在线播放网址| 久久99精品国产麻豆不卡| 亚洲精品免费在线播放| 国产欧美精品一区二区色综合朱莉| 欧美丝袜第三区| 91免费版在线| 国产91丝袜在线18| 九色porny丨国产精品| 亚洲国产日日夜夜| 亚洲女人小视频在线观看| 久久综合久久鬼色中文字| 3d动漫精品啪啪1区2区免费| 99精品视频免费在线观看| 国产夫妻精品视频| 精品影视av免费| 奇米影视在线99精品| 亚洲一区二区三区小说| 亚洲丝袜制服诱惑| 欧美极品xxx| 国产网站一区二区| 国产婷婷色一区二区三区| 久久精品亚洲乱码伦伦中文| 精品久久久久一区二区国产| 欧美一级在线观看| 欧美一级片免费看| 日韩写真欧美这视频| 欧美一级搡bbbb搡bbbb| 欧美一级xxx| 日韩欧美色电影| 精品国产一区二区三区久久久蜜月 | 久久er99热精品一区二区| 亚洲二区视频在线| 三级影片在线观看欧美日韩一区二区| 亚洲资源中文字幕| 一区二区三区精品| 337p粉嫩大胆色噜噜噜噜亚洲| 在线视频国内自拍亚洲视频| 日本久久精品电影| 97久久久精品综合88久久| 国产精华液一区二区三区| 国产一区日韩二区欧美三区| 激情综合五月婷婷| 久久99日本精品| 国产传媒一区在线| 国产乱子轮精品视频| 国模娜娜一区二区三区| 狠狠色狠狠色综合日日91app| 三级精品在线观看| 久久成人18免费观看| 久久国产尿小便嘘嘘| 捆绑调教一区二区三区| 久久激情五月婷婷| 久久爱www久久做| 国产一区二区三区av电影| 国产福利视频一区二区三区| 国产盗摄精品一区二区三区在线| 国产风韵犹存在线视精品| 久久精品国产久精国产爱| 亚洲一区二区三区四区在线免费观看| 中文字幕一区二区三区视频| 国产精品丝袜91| 亚洲天堂av一区| 婷婷一区二区三区| 国产精品资源站在线| 丁香婷婷综合网| 色偷偷久久人人79超碰人人澡| 欧美亚洲愉拍一区二区| 91精选在线观看| 中文字幕+乱码+中文字幕一区| 亚洲欧美激情视频在线观看一区二区三区| 亚洲区小说区图片区qvod| 亚洲成av人影院| 五月天精品一区二区三区| 成人一二三区视频| 欧洲日韩一区二区三区| 91精品国产一区二区三区| 久久精品男人的天堂| 亚洲成a人片在线观看中文| 精品一二三四区| 不卡高清视频专区| 5566中文字幕一区二区电影| 久久久精品综合| 亚洲综合图片区| 国产在线播精品第三| 欧美日韩激情一区二区三区| 精品国产乱码久久久久久牛牛| 中文字幕欧美一| 视频一区视频二区在线观看| 韩日精品视频一区| 日本久久精品电影| 精品黑人一区二区三区久久| 亚洲三级免费观看| 午夜精品视频一区| 在线观看日韩毛片| 国产亚洲污的网站| 丝袜美腿亚洲一区二区图片| 成人黄色一级视频| 欧美成人精品1314www| 日韩不卡一二三区| 色综合色综合色综合 | 国产不卡免费视频| 欧美性大战久久久| 亚洲狼人国产精品| 东方aⅴ免费观看久久av| 91精品视频网| 中文字幕av一区二区三区免费看| 韩国欧美国产一区| 91精品国模一区二区三区| 亚洲欧美日韩国产另类专区| 国内外精品视频| 久久久久国色av免费看影院| 日韩成人dvd| 欧美日韩在线综合| 国产精品美女一区二区在线观看|