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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? inflate.c

?? 這是一個三層的進銷存系統(tǒng)
?? C
?? 第 1 頁 / 共 4 頁
字號:
                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;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本91福利区| 成人爱爱电影网址| 国产精品不卡一区二区三区| 欧美日韩高清在线播放| 国产精品资源在线| 免费成人av在线播放| 亚洲伦理在线精品| 亚洲国产精品二十页| 91精品国产乱| 色88888久久久久久影院野外| 韩国午夜理伦三级不卡影院| 亚洲一区二区三区不卡国产欧美 | 91精品午夜视频| av激情成人网| 国产精品伊人色| 老司机一区二区| 日韩不卡免费视频| 亚洲一卡二卡三卡四卡五卡| 中文字幕制服丝袜一区二区三区| 欧美mv和日韩mv的网站| 欧美日韩夫妻久久| 色噜噜狠狠成人网p站| av影院午夜一区| 国产麻豆91精品| 蜜臀精品一区二区三区在线观看| 亚洲午夜久久久久久久久电影院| 亚洲欧洲成人自拍| 中国av一区二区三区| 久久久青草青青国产亚洲免观| 日韩欧美国产电影| 欧美一区二区三区在| 欧美日韩二区三区| 欧美色涩在线第一页| 欧洲视频一区二区| 日本乱人伦一区| 一本久久综合亚洲鲁鲁五月天| 91看片淫黄大片一级| 99久久精品国产观看| 95精品视频在线| 91香蕉视频黄| 91丨porny丨国产入口| 91丨porny丨中文| 91成人国产精品| 欧美吻胸吃奶大尺度电影| 欧美色综合影院| 欧美日韩视频在线第一区| 欧美性猛交xxxx黑人交| 欧美私模裸体表演在线观看| 在线成人av网站| 欧美一区日本一区韩国一区| 日韩一级二级三级精品视频| 日韩免费高清视频| 国产丝袜在线精品| 中文字幕一区二区三区不卡| 亚洲色图清纯唯美| 亚洲资源在线观看| 蜜臀久久99精品久久久久久9| 国模娜娜一区二区三区| 懂色av中文一区二区三区| av一二三不卡影片| 欧美亚洲综合另类| 日韩亚洲欧美中文三级| 久久精品亚洲精品国产欧美| 国产精品久久久久久一区二区三区 | 亚洲素人一区二区| 亚洲高清视频在线| 久久99国产精品麻豆| 风间由美一区二区三区在线观看 | 色综合久久久久综合99| 欧美理论电影在线| 精品粉嫩超白一线天av| 中文字幕在线不卡一区| 午夜日韩在线观看| 国产一区二区看久久| 91在线精品一区二区| 69精品人人人人| 国产午夜亚洲精品羞羞网站| 一区二区三区欧美视频| 久久国产尿小便嘘嘘尿| 99视频国产精品| 4438x亚洲最大成人网| 国产片一区二区三区| 一区二区三区波多野结衣在线观看| 热久久免费视频| 97se亚洲国产综合自在线观| 欧美xxxxxxxxx| 亚洲九九爱视频| 国产综合色视频| 欧美老肥妇做.爰bbww视频| 国产日韩欧美一区二区三区乱码| 亚洲444eee在线观看| 成人在线视频首页| 日韩一卡二卡三卡| 依依成人精品视频| 国产乱人伦精品一区二区在线观看| 在线亚洲一区观看| 欧美高清在线一区二区| 看电视剧不卡顿的网站| 色噜噜偷拍精品综合在线| 欧美激情在线一区二区| 美日韩黄色大片| 欧美综合在线视频| 国产精品伦一区| 美女mm1313爽爽久久久蜜臀| 欧洲一区在线观看| 国产精品午夜免费| 精品一区二区在线观看| 欧美日韩国产片| 亚洲乱码中文字幕综合| 成人app在线| 久久久久久久久一| 精品制服美女丁香| 在线播放中文一区| 一区二区三区蜜桃| av成人动漫在线观看| 国产日韩精品一区| 韩国av一区二区| 欧美成人国产一区二区| 日精品一区二区三区| 精品视频色一区| 亚洲一区二区高清| 日本韩国欧美一区二区三区| 国产精品三级视频| 成人h精品动漫一区二区三区| 日本一区二区免费在线| 欧美日本免费一区二区三区| 亚洲色图丝袜美腿| 92精品国产成人观看免费| 综合在线观看色| 91亚洲国产成人精品一区二区三| 国产精品激情偷乱一区二区∴| 国产精品18久久久| 久久久久亚洲蜜桃| 国产福利精品一区二区| 久久久精品中文字幕麻豆发布| 国产在线精品一区二区 | 亚洲国产欧美在线人成| 色国产综合视频| 亚洲一区在线视频观看| 欧美少妇一区二区| 亚洲mv在线观看| 欧美一区二区三区成人| 九九九精品视频| 国产嫩草影院久久久久| 成人精品视频网站| 综合分类小说区另类春色亚洲小说欧美 | 久久精品噜噜噜成人88aⅴ| 欧美丰满嫩嫩电影| 看片的网站亚洲| 国产欧美一区二区在线观看| 成人免费精品视频| 亚洲手机成人高清视频| 欧美色老头old∨ideo| 日本网站在线观看一区二区三区| 欧美zozo另类异族| 成人不卡免费av| 亚洲香蕉伊在人在线观| 日韩一区二区三区视频| 国产精品夜夜爽| 综合亚洲深深色噜噜狠狠网站| 欧美日韩一区二区欧美激情| 免费观看日韩电影| 国产欧美一区二区精品秋霞影院| 成人精品一区二区三区中文字幕| 亚洲视频在线一区| 7799精品视频| 国产乱淫av一区二区三区| 亚洲乱码精品一二三四区日韩在线| 56国语精品自产拍在线观看| 国产一区二区三区四区五区美女| 国产精品国产三级国产aⅴ中文| 色av成人天堂桃色av| 久久疯狂做爰流白浆xx| 欧美国产97人人爽人人喊| 欧美影片第一页| 麻豆精品在线视频| 成人欧美一区二区三区黑人麻豆 | 久久精品视频在线看| 色噜噜夜夜夜综合网| 久久国产福利国产秒拍| 亚洲男帅同性gay1069| 日韩欧美国产一区在线观看| 97国产一区二区| 黄一区二区三区| 亚洲国产sm捆绑调教视频| 久久久久久久精| 欧美性生交片4| 成人一区二区三区中文字幕| 香蕉av福利精品导航| 国产精品久久久久永久免费观看 | 3d动漫精品啪啪| 91年精品国产| 国产一区二区三区在线观看精品 | 国产精品久久夜| 欧美一级二级在线观看| 91免费看片在线观看| 韩国精品在线观看| 天天做天天摸天天爽国产一区| 中文字幕一区不卡| 精品日产卡一卡二卡麻豆|