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

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

?? infback9.c

?? 一個本地database引擎,支持中文T_Sql查詢,兼容DELPHI標準數據庫控件
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* infback9.c -- inflate deflate64 data using a call-back interface
 * Copyright (C) 1995-2003 Mark Adler
 * For conditions of distribution and use, see copyright notice in zlib.h
 */

#include "zutil.h"
#include "infback9.h"
#include "inftree9.h"
#include "inflate9.h"

#define WSIZE 65536UL

/*
   strm provides memory allocation functions in zalloc and zfree, or
   Z_NULL to use the library memory allocation functions.

   window is a user-supplied window and output buffer that is 64K bytes.
 */
int ZEXPORT inflateBack9Init_(strm, window, version, stream_size)
z_stream FAR *strm;
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)
        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->window = window;
    return Z_OK;
}

/*
   Build and output length and distance decoding tables for fixed code
   decoding.
 */
#ifdef MAKEFIXED
#include <stdio.h>

void makefixed9(void)
{
    unsigned sym, bits, low, size;
    code *next, *lenfix, *distfix;
    struct inflate_state state;
    code fixed[544];

    /* 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_table9(LENS, state.lens, 288, &(next), &(bits), state.work);

    /* distance table */
    sym = 0;
    while (sym < 32) state.lens[sym++] = 5;
    distfix = next;
    bits = 5;
    inflate_table9(DISTS, state.lens, 32, &(next), &(bits), state.work);

    /* write tables */
    puts("    /* inffix9.h -- table for decoding deflate64 fixed codes");
    puts("     * Generated automatically by makefixed9().");
    puts("     */");
    puts("");
    puts("    /* WARNING: this file should *not* be used by applications.");
    puts("       It is part of the implementation of this library and is");
    puts("       subject to change. Applications should only use zlib.h.");
    puts("     */");
    puts("");
    size = 1U << 9;
    printf("    static const code lenfix[%u] = {", size);
    low = 0;
    for (;;) {
        if ((low % 6) == 0) printf("\n        ");
        printf("{%u,%u,%d}", lenfix[low].op, lenfix[low].bits,
               lenfix[low].val);
        if (++low == size) break;
        putchar(',');
    }
    puts("\n    };");
    size = 1U << 5;
    printf("\n    static const code distfix[%u] = {", size);
    low = 0;
    for (;;) {
        if ((low % 5) == 0) printf("\n        ");
        printf("{%u,%u,%d}", distfix[low].op, distfix[low].bits,
               distfix[low].val);
        if (++low == size) break;
        putchar(',');
    }
    puts("\n    };");
}
#endif /* MAKEFIXED */

/* Macros for inflateBack(): */

/* 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 = window; \
            left = WSIZE; \
            wrap = 1; \
            if (out(out_desc, put, (unsigned)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 inflateBack9(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;              /* available input */
    unsigned long left;         /* available output */
    inflate_mode mode;          /* current inflate mode */
    int lastblock;              /* true if processing last block */
    int wrap;                   /* true if the window has wrapped */
    unsigned long write;        /* window write index */
    unsigned char FAR *window;  /* allocated sliding window, if needed */
    unsigned long hold;         /* bit buffer */
    unsigned bits;              /* bits in bit buffer */
    unsigned extra;             /* extra bits needed */
    unsigned long length;       /* literal or length of data to copy */
    unsigned long offset;       /* distance back to copy string from */
    unsigned long copy;         /* number of stored or match bytes to copy */
    unsigned char FAR *from;    /* where to copy match bytes from */
    code const FAR *lencode;    /* starting table for length/literal codes */
    code const FAR *distcode;   /* starting table for distance codes */
    unsigned lenbits;           /* index bits for lencode */
    unsigned distbits;          /* index bits for distcode */
    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};
#include "inffix9.h"

    /* 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;
    mode = TYPE;
    lastblock = 0;
    write = 0;
    wrap = 0;
    window = state->window;
    next = strm->next_in;
    have = next != Z_NULL ? strm->avail_in : 0;
    hold = 0;
    bits = 0;
    put = window;
    left = WSIZE;
    lencode = Z_NULL;
    distcode = Z_NULL;

    /* Inflate until end of block marked as last */
    for (;;)
        switch (mode) {
        case TYPE:
            /* determine and dispatch block type */
            if (lastblock) {
                BYTEBITS();
                mode = DONE;
                break;
            }
            NEEDBITS(3);
            lastblock = BITS(1);
            DROPBITS(1);
            switch (BITS(2)) {
            case 0:                             /* stored block */
                Tracev((stderr, "inflate:     stored block%s\n",
                        lastblock ? " (last)" : ""));
                mode = STORED;
                break;
            case 1:                             /* fixed block */
                lencode = lenfix;
                lenbits = 9;
                distcode = distfix;
                distbits = 5;
                Tracev((stderr, "inflate:     fixed codes block%s\n",
                        lastblock ? " (last)" : ""));
                mode = LEN;                     /* decode codes */
                break;
            case 2:                             /* dynamic block */
                Tracev((stderr, "inflate:     dynamic codes block%s\n",
                        lastblock ? " (last)" : ""));
                mode = TABLE;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美草草影院在线视频| 日韩和欧美的一区| 91精品国产综合久久精品图片| 欧美日韩激情在线| 成人免费视频在线观看| 欧美日本一区二区| 日韩福利电影在线| 欧美亚洲综合另类| 亚洲欧美日韩电影| 国产麻豆91精品| 精品国精品国产| 老司机免费视频一区二区三区| 国产日韩欧美电影| 国产亚洲欧美色| 国产精品丝袜一区| 欧美一区二区免费视频| 91视视频在线观看入口直接观看www | 国产精品18久久久久久久久久久久| 亚洲精品大片www| 青青草97国产精品免费观看无弹窗版| 欧美撒尿777hd撒尿| 久久99久久99| 中文字幕亚洲电影| 欧美美女一区二区在线观看| 热久久久久久久| 精品国产成人在线影院| 91在线精品一区二区三区| 一区二区三区成人| 欧美日韩精品二区第二页| hitomi一区二区三区精品| 精品久久人人做人人爽| 91福利国产成人精品照片| 国产盗摄一区二区| 精一区二区三区| 天堂蜜桃一区二区三区| 一区二区三区中文免费| 欧美日韩一区不卡| 丁香一区二区三区| 性做久久久久久免费观看| 久久婷婷色综合| 在线免费观看日本欧美| 九九热在线视频观看这里只有精品| 日韩欧美中文字幕一区| 成人国产精品免费观看视频| 日韩国产一二三区| 国产精品全国免费观看高清| 日韩视频免费观看高清完整版 | 精品一区二区av| 久久久综合视频| 欧美日韩午夜在线| 国产三级久久久| 蜜臀a∨国产成人精品| 日韩一区二区三区观看| 欧美三级午夜理伦三级中视频| 在线精品视频一区二区三四| 在线观看视频欧美| 欧美乱妇15p| 日韩免费视频一区二区| 精品久久久久久久久久久久久久久久久 | 激情综合五月天| 麻豆91精品91久久久的内涵| 一区二区三区不卡视频 | 韩国av一区二区三区在线观看| 岛国av在线一区| 在线精品视频一区二区三四| 日本韩国欧美一区二区三区| 欧美私人免费视频| 欧美在线看片a免费观看| 欧美亚洲国产一区二区三区| 久久久久久久久久久电影| 久久综合国产精品| 欧美三日本三级三级在线播放| 在线看不卡av| 精品三级av在线| 久久综合久久综合九色| 国产精品久线观看视频| 亚洲一区视频在线观看视频| 日日夜夜精品视频天天综合网| 久久99精品久久久久久动态图| 国产精品456露脸| 91免费视频网| 日韩精品中文字幕在线不卡尤物| 国产日本欧美一区二区| 一区二区三区不卡在线观看| 久久国产免费看| 91啪九色porn原创视频在线观看| 欧美人xxxx| 国产精品三级av在线播放| 亚洲第一激情av| 国产一区二区日韩精品| 91国偷自产一区二区开放时间| 欧美一级欧美一级在线播放| 国产欧美精品一区| 日韩久久久久久| 亚洲精品水蜜桃| 国产精品自拍网站| 欧美美女一区二区| 亚洲天堂2014| 国产剧情一区二区三区| 欧美三片在线视频观看| 亚洲国产成人自拍| 久久精品国产亚洲高清剧情介绍 | 婷婷成人激情在线网| 91麻豆精品国产91久久久| 亚洲日韩欧美一区二区在线| 国产一区二区h| 91精品免费在线观看| 91麻豆精品国产综合久久久久久| 午夜久久福利影院| www国产精品av| 精品亚洲欧美一区| 7777女厕盗摄久久久| 午夜免费久久看| 一区二区三区色| 国产成人亚洲综合色影视| 欧美精品乱码久久久久久| 中文字幕一区视频| 国产乱国产乱300精品| 欧美一级国产精品| 亚洲成人免费在线观看| eeuss鲁片一区二区三区| 精品久久久久久久一区二区蜜臀| 午夜电影一区二区三区| 在线影院国内精品| 国产精品电影院| 懂色av中文一区二区三区| 香蕉av福利精品导航| 欧美一区二区福利视频| 亚洲国产日日夜夜| 久久久一区二区三区捆绑**| 91色综合久久久久婷婷| 最新高清无码专区| 欧美系列一区二区| 亚洲综合在线五月| 久久久久久电影| 91精品国产入口在线| 国产福利一区二区三区视频在线 | 国产福利一区二区三区视频| 亚洲高清免费观看| 亚洲第一激情av| 天堂午夜影视日韩欧美一区二区| 一区二区在线观看免费| 中文字幕亚洲综合久久菠萝蜜| 日韩三级免费观看| 欧美一区二区福利在线| 欧美mv日韩mv亚洲| 欧美白人最猛性xxxxx69交| 欧美一区二区三区不卡| 精品成人一区二区三区四区| 91美女片黄在线| 国产米奇在线777精品观看| 国产一区二区美女诱惑| 国产精品一区二区91| jizz一区二区| 69堂成人精品免费视频| 日韩精品在线网站| 久久精品视频免费观看| 国产精品黄色在线观看| 一区二区三区在线观看动漫| 亚洲国产精品一区二区久久| 偷拍亚洲欧洲综合| 成人永久看片免费视频天堂| 青娱乐精品视频| 日本欧美一区二区| av在线播放不卡| 欧美zozozo| 亚洲成人激情自拍| 国产综合一区二区| 欧美日韩日日夜夜| 国产日韩精品一区二区浪潮av | 欧美国产乱子伦| 精品国产乱码久久久久久1区2区| 久久欧美中文字幕| 亚洲高清免费在线| 日本韩国一区二区| 中文av字幕一区| 久久不见久久见免费视频1| 成人黄色大片在线观看| 欧美日韩精品免费| 一区二区三区久久| 成人性视频网站| 精品国产乱码久久久久久免费| 一区二区在线看| 天天色综合天天| 国产麻豆一精品一av一免费| 国产激情视频一区二区三区欧美| www.66久久| 色又黄又爽网站www久久| 7777精品伊人久久久大香线蕉超级流畅 | 精品国产精品一区二区夜夜嗨| 国产精品免费人成网站| 国产另类ts人妖一区二区| 国产欧美一二三区| 91国在线观看| 精品一区二区av| 一区二区三区在线高清| 91精品国产综合久久久久久漫画 | 韩国av一区二区三区在线观看| 精品国产99国产精品| 久久国产三级精品|