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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? inflate.c

?? 這是一個(gè)三層的進(jìn)銷(xiāo)存系統(tǒng)
?? C
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
                strm->msg = (char *)"invalid distance code";
                state->mode = BAD;
                break;
            }
            state->offset = (unsigned)this.val;
            state->extra = (unsigned)(this.op) & 15;
            state->mode = DISTEXT;
        case DISTEXT:
            if (state->extra) {
                NEEDBITS(state->extra);
                state->offset += BITS(state->extra);
                DROPBITS(state->extra);
            }
            if (state->offset > state->whave + out - left) {
                strm->msg = (char *)"invalid distance too far back";
                state->mode = BAD;
                break;
            }
            Tracevv((stderr, "inflate:         distance %u\n", state->offset));
            state->mode = MATCH;
        case MATCH:
            if (left == 0) goto inf_leave;
            copy = out - left;
            if (state->offset > copy) {         /* copy from window */
                copy = state->offset - copy;
                if (copy > state->write) {
                    copy -= state->write;
                    from = state->window + (state->wsize - copy);
                }
                else
                    from = state->window + (state->write - copy);
                if (copy > state->length) copy = state->length;
            }
            else {                              /* copy from output */
                from = put - state->offset;
                copy = state->length;
            }
            if (copy > left) copy = left;
            left -= copy;
            state->length -= copy;
            do {
                *put++ = *from++;
            } while (--copy);
            if (state->length == 0) state->mode = LEN;
            break;
        case LIT:
            if (left == 0) goto inf_leave;
            *put++ = (unsigned char)(state->length);
            left--;
            state->mode = LEN;
            break;
        case CHECK:
            if (state->wrap) {
                NEEDBITS(32);
                out -= left;
                strm->total_out += out;
                state->total += out;
                if (out)
                    strm->adler = state->check =
                        UPDATE(state->check, put - out, out);
                out = left;
                if ((
#ifdef GUNZIP
                     state->flags ? hold :
#endif
                     REVERSE(hold)) != state->check) {
                    strm->msg = (char *)"incorrect data check";
                    state->mode = BAD;
                    break;
                }
                INITBITS();
                Tracev((stderr, "inflate:   check matches trailer\n"));
            }
#ifdef GUNZIP
            state->mode = LENGTH;
        case LENGTH:
            if (state->wrap && state->flags) {
                NEEDBITS(32);
                if (hold != (state->total & 0xffffffffUL)) {
                    strm->msg = (char *)"incorrect length check";
                    state->mode = BAD;
                    break;
                }
                INITBITS();
                Tracev((stderr, "inflate:   length matches trailer\n"));
            }
#endif
            state->mode = DONE;
        case DONE:
            ret = Z_STREAM_END;
            goto inf_leave;
        case BAD:
            ret = Z_DATA_ERROR;
            goto inf_leave;
        case MEM:
            return Z_MEM_ERROR;
        case SYNC:
        default:
            return Z_STREAM_ERROR;
        }

    /*
       Return from inflate(), updating the total counts and the check value.
       If there was no progress during the inflate() call, return a buffer
       error.  Call updatewindow() to create and/or update the window state.
       Note: a memory error from inflate() is non-recoverable.
     */
  inf_leave:
    RESTORE();
    if (state->wsize || (state->mode < CHECK && out != strm->avail_out))
        if (updatewindow(strm, out)) {
            state->mode = MEM;
            return Z_MEM_ERROR;
        }
    in -= strm->avail_in;
    out -= strm->avail_out;
    strm->total_in += in;
    strm->total_out += out;
    state->total += out;
    if (state->wrap && out)
        strm->adler = state->check =
            UPDATE(state->check, strm->next_out - out, out);
    strm->data_type = state->bits + (state->last ? 64 : 0) +
                      (state->mode == TYPE ? 128 : 0);
    if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK)
        ret = Z_BUF_ERROR;
    return ret;
}

int ZEXPORT inflateEnd(strm)
z_streamp strm;
{
    struct inflate_state FAR *state;
    if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0)
        return Z_STREAM_ERROR;
    state = (struct inflate_state FAR *)strm->state;
    if (state->window != Z_NULL) ZFREE(strm, state->window);
    ZFREE(strm, strm->state);
    strm->state = Z_NULL;
    Tracev((stderr, "inflate: end\n"));
    return Z_OK;
}

int ZEXPORT inflateSetDictionary(strm, dictionary, dictLength)
z_streamp strm;
const Bytef *dictionary;
uInt dictLength;
{
    struct inflate_state FAR *state;
    unsigned long id;

    /* check state */
    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
    state = (struct inflate_state FAR *)strm->state;
    if (state->mode != DICT) return Z_STREAM_ERROR;

    /* check for correct dictionary id */
    id = adler32(0L, Z_NULL, 0);
    id = adler32(id, dictionary, dictLength);
    if (id != state->check) return Z_DATA_ERROR;

    /* copy dictionary to window */
    if (updatewindow(strm, strm->avail_out)) {
        state->mode = MEM;
        return Z_MEM_ERROR;
    }
    if (dictLength > state->wsize) {
        zmemcpy(state->window, dictionary + dictLength - state->wsize,
                state->wsize);
        state->whave = state->wsize;
    }
    else {
        zmemcpy(state->window + state->wsize - dictLength, dictionary,
                dictLength);
        state->whave = dictLength;
    }
    state->havedict = 1;
    Tracev((stderr, "inflate:   dictionary set\n"));
    return Z_OK;
}

/*
   Search buf[0..len-1] for the pattern: 0, 0, 0xff, 0xff.  Return when found
   or when out of input.  When called, *have is the number of pattern bytes
   found in order so far, in 0..3.  On return *have is updated to the new
   state.  If on return *have equals four, then the pattern was found and the
   return value is how many bytes were read including the last byte of the
   pattern.  If *have is less than four, then the pattern has not been found
   yet and the return value is len.  In the latter case, syncsearch() can be
   called again with more data and the *have state.  *have is initialized to
   zero for the first call.
 */
local unsigned syncsearch(have, buf, len)
unsigned FAR *have;
unsigned char FAR *buf;
unsigned len;
{
    unsigned got;
    unsigned next;

    got = *have;
    next = 0;
    while (next < len && got < 4) {
        if ((int)(buf[next]) == (got < 2 ? 0 : 0xff))
            got++;
        else if (buf[next])
            got = 0;
        else
            got = 4 - got;
        next++;
    }
    *have = got;
    return next;
}

int ZEXPORT inflateSync(strm)
z_streamp strm;
{
    unsigned len;               /* number of bytes to look at or looked at */
    unsigned long in, out;      /* temporary to save total_in and total_out */
    unsigned char buf[4];       /* to restore bit buffer to byte string */
    struct inflate_state FAR *state;

    /* check parameters */
    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
    state = (struct inflate_state FAR *)strm->state;
    if (strm->avail_in == 0 && state->bits < 8) return Z_BUF_ERROR;

    /* if first time, start search in bit buffer */
    if (state->mode != SYNC) {
        state->mode = SYNC;
        state->hold <<= state->bits & 7;
        state->bits -= state->bits & 7;
        len = 0;
        while (state->bits >= 8) {
            buf[len++] = (unsigned char)(state->hold);
            state->hold >>= 8;
            state->bits -= 8;
        }
        state->have = 0;
        syncsearch(&(state->have), buf, len);
    }

    /* search available input */
    len = syncsearch(&(state->have), strm->next_in, strm->avail_in);
    strm->avail_in -= len;
    strm->next_in += len;
    strm->total_in += len;

    /* return no joy or set up to restart inflate() on a new block */
    if (state->have != 4) return Z_DATA_ERROR;
    in = strm->total_in;  out = strm->total_out;
    inflateReset(strm);
    strm->total_in = in;  strm->total_out = out;
    state->mode = TYPE;
    return Z_OK;
}

/*
   Returns true if inflate is currently at the end of a block generated by
   Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP
   implementation to provide an additional safety check. PPP uses
   Z_SYNC_FLUSH but removes the length bytes of the resulting empty stored
   block. When decompressing, PPP checks that at the end of input packet,
   inflate is waiting for these length bytes.
 */
int ZEXPORT inflateSyncPoint(strm)
z_streamp strm;
{
    struct inflate_state FAR *state;

    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
    state = (struct inflate_state FAR *)strm->state;
    return state->mode == STORED && state->bits == 0;
}

int ZEXPORT inflateCopy(dest, source)
z_streamp dest;
z_streamp source;
{
    struct inflate_state FAR *state;
    struct inflate_state FAR *copy;
    unsigned char FAR *window;

    /* check input */
    if (dest == Z_NULL || source == Z_NULL || source->state == Z_NULL ||
        source->zalloc == (alloc_func)0 || source->zfree == (free_func)0)
        return Z_STREAM_ERROR;
    state = (struct inflate_state FAR *)source->state;

    /* allocate space */
    copy = (struct inflate_state FAR *)
           ZALLOC(source, 1, sizeof(struct inflate_state));
    if (copy == Z_NULL) return Z_MEM_ERROR;
    window = Z_NULL;
    if (state->window != Z_NULL) {
        window = (unsigned char FAR *)
                 ZALLOC(source, 1U << state->wbits, sizeof(unsigned char));
        if (window == Z_NULL) {
            ZFREE(source, copy);
            return Z_MEM_ERROR;
        }
    }

    /* copy state */
    *dest = *source;
    *copy = *state;
    copy->lencode = copy->codes + (state->lencode - state->codes);
    copy->distcode = copy->codes + (state->distcode - state->codes);
    copy->next = copy->codes + (state->next - state->codes);
    if (window != Z_NULL)
        zmemcpy(window, state->window, 1U << state->wbits);
    copy->window = window;
    dest->state = (voidpf)copy;
    return Z_OK;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
另类小说综合欧美亚洲| 91精品国产高清一区二区三区蜜臀 | 日韩一区欧美一区| 亚洲主播在线观看| 久久国产成人午夜av影院| 久久夜色精品国产噜噜av| 99re这里只有精品首页| 在线91免费看| 国产一区二区三区四| 欧美三级蜜桃2在线观看| 国产欧美日韩综合| 国内精品伊人久久久久av一坑 | 久久一区二区视频| av毛片久久久久**hd| 欧美α欧美αv大片| 视频一区在线播放| 91免费观看在线| 国产欧美精品区一区二区三区| 色综合久久中文综合久久牛| 三级一区在线视频先锋| 中文字幕亚洲成人| 日韩三级.com| 在线视频一区二区三区| 国产九色精品成人porny| 日韩区在线观看| 日本高清免费不卡视频| 国产精品自拍一区| 日韩精品视频网| 一区二区三区四区视频精品免费 | 国产91精品一区二区| 亚洲小说欧美激情另类| 中文在线一区二区 | 亚洲精品一区二区三区四区高清| 中文字幕中文字幕一区| 精品国产免费一区二区三区四区| 99免费精品视频| 国产精品综合在线视频| 男人操女人的视频在线观看欧美| 亚洲欧美一区二区三区孕妇| 国产校园另类小说区| 国产精品综合一区二区三区| 日韩经典中文字幕一区| 亚洲综合男人的天堂| 中文字幕一区av| 国产精品污污网站在线观看| 久久无码av三级| 精品精品国产高清a毛片牛牛| 欧美日韩视频一区二区| 在线观看一区不卡| 97se亚洲国产综合自在线观| 高潮精品一区videoshd| 国产一区二区三区高清播放| 人人狠狠综合久久亚洲| 日韩av在线免费观看不卡| 国产日韩av一区二区| 久久精品亚洲麻豆av一区二区| 日韩午夜电影av| 欧美精品久久久久久久久老牛影院| 欧美综合在线视频| 在线看一区二区| 欧美撒尿777hd撒尿| 欧美精品在线视频| 7777精品伊人久久久大香线蕉经典版下载 | 精品制服美女久久| 亚洲欧美aⅴ...| 亚洲天堂成人在线观看| 日韩一区中文字幕| 亚洲欧美综合网| 亚洲精品国产高清久久伦理二区| 亚洲精品国产视频| 亚洲国产cao| 视频一区二区三区入口| 青青草精品视频| 国产一区二区三区四区在线观看| 黄一区二区三区| 懂色av一区二区夜夜嗨| 99视频国产精品| 色琪琪一区二区三区亚洲区| 欧美亚洲国产一区二区三区va| 欧美日韩国产精品成人| 欧美一区二区精品在线| 精品盗摄一区二区三区| 国产农村妇女精品| 亚洲欧美日韩中文播放 | 欧美日韩国产乱码电影| 日韩视频一区二区三区在线播放| 精品噜噜噜噜久久久久久久久试看| 日韩女优电影在线观看| 欧美激情一区二区三区| 一区二区激情视频| 日本午夜精品一区二区三区电影| 国产一区二区三区四区五区入口 | 日韩一二三四区| 欧美不卡在线视频| 国产精品久久午夜夜伦鲁鲁| 亚洲精品免费电影| 免费成人小视频| 成人视屏免费看| 欧美日韩成人激情| 国产清纯在线一区二区www| 一区二区三区在线观看欧美| 久久精品国产亚洲5555| 成a人片亚洲日本久久| 欧美日韩一区二区三区在线看| 欧美一三区三区四区免费在线看| 国产午夜精品久久久久久久| 亚洲宅男天堂在线观看无病毒| 免费欧美日韩国产三级电影| av一区二区三区| 日韩欧美中文一区二区| 专区另类欧美日韩| 黄页网站大全一区二区| 欧美性色黄大片| 中文字幕不卡的av| 日韩av在线发布| 91麻豆.com| 久久精品网站免费观看| 亚洲成a人片在线不卡一二三区| 国产成人免费在线观看不卡| 337p亚洲精品色噜噜| 1024成人网| 国产成人综合亚洲网站| 51精品秘密在线观看| ●精品国产综合乱码久久久久| 裸体在线国模精品偷拍| 欧美性xxxxxx少妇| 亚洲日本在线a| 国产精品综合久久| 欧美成人性福生活免费看| 午夜在线成人av| 91网站视频在线观看| 亚洲国产电影在线观看| 狠狠色狠狠色合久久伊人| 欧美色倩网站大全免费| 综合久久久久综合| 国产成人午夜99999| 精品少妇一区二区三区视频免付费 | 日本不卡在线视频| 欧美亚洲国产一区二区三区 | 91久久精品一区二区三| 国产日韩欧美麻豆| 精品一区二区三区免费观看| 51久久夜色精品国产麻豆| 亚洲6080在线| 欧美性色综合网| 一区二区三区四区视频精品免费| 9l国产精品久久久久麻豆| 国产亲近乱来精品视频| 国产精品69毛片高清亚洲| 精品国产不卡一区二区三区| 久久国产尿小便嘘嘘| 欧美一区二区三区视频在线| 三级欧美韩日大片在线看| 欧美系列一区二区| 午夜一区二区三区视频| 欧美男男青年gay1069videost| 亚洲成av人片在线观看无码| 精品视频一区二区不卡| 午夜精品在线看| 欧美一区二区大片| 久久精品国产久精国产爱| 欧美mv和日韩mv的网站| 激情图区综合网| 久久综合久久综合亚洲| 国产精品1区2区3区| 国产精品美女久久久久久久久久久| 大尺度一区二区| 亚洲欧洲成人自拍| 一本到不卡免费一区二区| 亚洲免费视频中文字幕| 欧美在线高清视频| 日韩影院免费视频| 精品久久久久久久一区二区蜜臀| 国产一区三区三区| 国产精品麻豆欧美日韩ww| 色婷婷av一区| 偷拍一区二区三区| 欧美精品一区视频| 成人一级片网址| 亚洲与欧洲av电影| 91精品国产91综合久久蜜臀| 精品午夜一区二区三区在线观看| 欧美国产日韩a欧美在线观看| 97aⅴ精品视频一二三区| 亚洲国产aⅴ天堂久久| 欧美日韩和欧美的一区二区| 极品少妇xxxx精品少妇偷拍| 国产精品热久久久久夜色精品三区| 色婷婷综合在线| 日本不卡视频一二三区| 中国av一区二区三区| 在线精品观看国产| 久久精品噜噜噜成人88aⅴ| 欧美激情一区二区三区四区| 欧美日韩一区二区三区免费看| 久久av资源网| 一区二区高清免费观看影视大全 | 久久久久久综合| 在线观看欧美日本| 成人性视频免费网站|