亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲欧洲国产日本综合| 五月激情六月综合| 欧美日韩一区二区三区在线看| 性久久久久久久| 国产欧美日韩在线视频| 欧美色网一区二区| 国产九色sp调教91| 午夜久久久久久| 中文字幕在线一区二区三区| 91精品国产全国免费观看| 99精品视频一区| 国产精品中文字幕日韩精品| 视频一区在线播放| 亚洲精品成a人| 国产日韩一级二级三级| 欧美一级在线观看| 欧美日免费三级在线| 色综合一个色综合| 高清不卡在线观看av| 男男视频亚洲欧美| 午夜日韩在线电影| 亚洲精品视频在线观看网站| 中文字幕精品一区二区精品绿巨人| 欧美日韩成人激情| 欧美日韩第一区日日骚| 在线一区二区视频| 色偷偷久久一区二区三区| av亚洲产国偷v产偷v自拍| 国产乱码精品一品二品| 国产精品一区二区三区四区| 久久激情综合网| 麻豆精品视频在线观看免费| 人人狠狠综合久久亚洲| 日韩高清一区二区| 日本vs亚洲vs韩国一区三区| 亚洲国产精品精华液网站| 亚洲美女少妇撒尿| 亚洲少妇屁股交4| 中文字幕在线视频一区| 日本一区二区成人在线| 国产精品丝袜一区| 国产精品福利一区二区| 国产精品丝袜久久久久久app| 久久久蜜臀国产一区二区| 久久综合久久综合久久综合| 久久精品欧美日韩| 国产精品无码永久免费888| 国产精品成人一区二区艾草| 中文字幕av一区二区三区高| 国产欧美1区2区3区| 亚洲国产精品成人综合色在线婷婷 | 精品亚洲porn| 狠狠色狠狠色综合| 激情国产一区二区| 国产精品综合一区二区| 成人美女在线观看| 99久久精品一区二区| 91麻豆国产福利精品| 欧洲激情一区二区| 欧美一区在线视频| 26uuuu精品一区二区| 国产精品热久久久久夜色精品三区| 国产欧美日韩不卡免费| 亚洲美女免费在线| 日韩av二区在线播放| 黑人巨大精品欧美黑白配亚洲| 国产传媒日韩欧美成人| 91亚洲精品久久久蜜桃| 欧美亚洲高清一区二区三区不卡| 欧美精品在线视频| 精品粉嫩aⅴ一区二区三区四区| 久久麻豆一区二区| 中文字幕视频一区| 视频一区欧美精品| 成人黄页在线观看| 欧美情侣在线播放| 久久精品免费在线观看| 亚洲妇女屁股眼交7| 国产一区二区三区综合| 91麻豆免费观看| 欧美电影免费观看高清完整版在 | 7777精品伊人久久久大香线蕉经典版下载| 91精品久久久久久久久99蜜臂| 久久久久久97三级| 亚洲二区在线视频| 国产一区二区精品在线观看| 色婷婷精品大在线视频| 欧美不卡一区二区三区| 亚洲日本在线观看| 久久成人久久爱| 色婷婷亚洲精品| 久久先锋影音av鲁色资源网| 一区二区三区91| 国产91精品一区二区| 91精品欧美久久久久久动漫| 国产精品美女久久福利网站| 偷拍一区二区三区| caoporm超碰国产精品| 欧美一区二区网站| 亚洲精品菠萝久久久久久久| 国产伦精品一区二区三区视频青涩| 在线免费亚洲电影| 国产午夜精品福利| 蜜芽一区二区三区| 91成人免费在线| 国产精品视频一二三区| 久久国内精品自在自线400部| 色噜噜狠狠成人中文综合| 国产欧美日韩精品在线| 麻豆成人久久精品二区三区红| 在线观看国产一区二区| 欧美国产成人精品| 极品瑜伽女神91| 7777精品伊人久久久大香线蕉的 | 亚洲精品在线观看网站| 亚洲大片精品永久免费| 91麻豆精品在线观看| 国产精品每日更新在线播放网址| 经典三级在线一区| 日韩一区二区三区四区| 香蕉加勒比综合久久| 欧美性受xxxx黑人xyx性爽| 中文字幕中文字幕一区| 99精品视频中文字幕| 中文字幕一区二区三中文字幕| 国产一区二区三区精品欧美日韩一区二区三区 | 伦理电影国产精品| 日韩一级大片在线| 日韩精品三区四区| 91精品国产综合久久福利 | 视频一区二区三区入口| 欧美日韩美少妇| 亚洲成人精品影院| 精品视频999| 亚洲一区二区三区四区在线观看 | 一区二区三区日本| 欧洲人成人精品| 亚洲一区二区三区四区不卡| 欧美日韩一区二区三区四区| 五月天视频一区| 日韩精品中文字幕在线不卡尤物| 美国三级日本三级久久99| 日韩欧美电影一区| 激情欧美一区二区三区在线观看| 久久一二三国产| 国产精品亚洲视频| 综合色中文字幕| 精品视频在线视频| 蜜桃av噜噜一区| 国产三级精品三级在线专区| 成人白浆超碰人人人人| 日韩理论片中文av| 精品视频一区 二区 三区| 日本欧美在线观看| 久久精品夜色噜噜亚洲aⅴ| 国产成人在线免费| 亚洲欧美另类图片小说| 欧美美女黄视频| 久久国产尿小便嘘嘘| 欧美—级在线免费片| 一本一道久久a久久精品综合蜜臀| 亚洲国产欧美在线人成| 日韩欧美美女一区二区三区| 99re这里只有精品首页| 亚洲乱码中文字幕| 91精品国产综合久久久久久久| 狠狠网亚洲精品| 亚洲人成在线播放网站岛国| 欧美精品久久久久久久多人混战| 麻豆91精品视频| 欧美国产一区视频在线观看| 在线观看三级视频欧美| 美女任你摸久久| 国产精品欧美极品| 欧美日韩高清一区| 成人黄色一级视频| 午夜精品爽啪视频| 国产欧美日韩卡一| 欧美精品在线视频| av高清久久久| 久久激情五月婷婷| 一区二区三区欧美| 欧美精品一区二| 欧美日韩一区国产| 国产成人在线视频免费播放| 午夜在线成人av| 国产精品免费丝袜| 日韩精品一区二区三区蜜臀 | 日本va欧美va欧美va精品| 国产三级精品三级在线专区| 欧美三级韩国三级日本一级| 高潮精品一区videoshd| 日韩专区欧美专区| 综合分类小说区另类春色亚洲小说欧美| 欧美日韩亚洲国产综合| 不卡欧美aaaaa| 精品一二三四区| 三级亚洲高清视频| 亚洲乱码国产乱码精品精小说| 精品88久久久久88久久久|