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

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

?? gzappend.c

?? StormLib是對MPQ文件進行處理的庫 MPQ是暴雪公司的私有的一種壓縮格式
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* decompress gzip file "name", return strm with a deflate stream ready to   continue compression of the data in the gzip file, and return a file   descriptor pointing to where to write the compressed data -- the deflate   stream is initialized to compress using level "level" */local int gzscan(char *name, z_stream *strm, int level){    int ret, lastbit, left, full;    unsigned have;    unsigned long crc, tot;    unsigned char *window;    off_t lastoff, end;    file gz;    /* open gzip file */    gz.name = name;    gz.fd = open(name, O_RDWR, 0);    if (gz.fd == -1) bye("cannot open ", name);    gz.buf = malloc(CHUNK);    if (gz.buf == NULL) bye("out of memory", "");    gz.size = LGCHUNK;    gz.left = 0;    /* skip gzip header */    gzheader(&gz);    /* prepare to decompress */    window = malloc(DSIZE);    if (window == NULL) bye("out of memory", "");    strm->zalloc = Z_NULL;    strm->zfree = Z_NULL;    strm->opaque = Z_NULL;    ret = inflateInit2(strm, -15);    if (ret != Z_OK) bye("out of memory", " or library mismatch");    /* decompress the deflate stream, saving append information */    lastbit = 0;    lastoff = lseek(gz.fd, 0L, SEEK_CUR) - gz.left;    left = 0;    strm->avail_in = gz.left;    strm->next_in = gz.next;    crc = crc32(0L, Z_NULL, 0);    have = full = 0;    do {        /* if needed, get more input */        if (strm->avail_in == 0) {            readmore(&gz);            strm->avail_in = gz.left;            strm->next_in = gz.next;        }        /* set up output to next available section of sliding window */        strm->avail_out = DSIZE - have;        strm->next_out = window + have;        /* inflate and check for errors */        ret = inflate(strm, Z_BLOCK);        if (ret == Z_STREAM_ERROR) bye("internal stream error!", "");        if (ret == Z_MEM_ERROR) bye("out of memory", "");        if (ret == Z_DATA_ERROR)            bye("invalid compressed data--format violated in", name);        /* update crc and sliding window pointer */        crc = crc32(crc, window + have, DSIZE - have - strm->avail_out);        if (strm->avail_out)            have = DSIZE - strm->avail_out;        else {            have = 0;            full = 1;        }        /* process end of block */        if (strm->data_type & 128) {            if (strm->data_type & 64)                left = strm->data_type & 0x1f;            else {                lastbit = strm->data_type & 0x1f;                lastoff = lseek(gz.fd, 0L, SEEK_CUR) - strm->avail_in;            }        }    } while (ret != Z_STREAM_END);    inflateEnd(strm);    gz.left = strm->avail_in;    gz.next = strm->next_in;    /* save the location of the end of the compressed data */    end = lseek(gz.fd, 0L, SEEK_CUR) - gz.left;    /* check gzip trailer and save total for deflate */    if (crc != read4(&gz))        bye("invalid compressed data--crc mismatch in ", name);    tot = strm->total_out;    if ((tot & 0xffffffffUL) != read4(&gz))        bye("invalid compressed data--length mismatch in", name);    /* if not at end of file, warn */    if (gz.left || readin(&gz))        fprintf(stderr,            "gzappend warning: junk at end of gzip file overwritten\n");    /* clear last block bit */    lseek(gz.fd, lastoff - (lastbit != 0), SEEK_SET);    if (read(gz.fd, gz.buf, 1) != 1) bye("reading after seek on ", name);    *gz.buf = (unsigned char)(*gz.buf ^ (1 << ((8 - lastbit) & 7)));    lseek(gz.fd, -1L, SEEK_CUR);    if (write(gz.fd, gz.buf, 1) != 1) bye("writing after seek to ", name);    /* if window wrapped, build dictionary from window by rotating */    if (full) {        rotate(window, DSIZE, have);        have = DSIZE;    }    /* set up deflate stream with window, crc, total_in, and leftover bits */    ret = deflateInit2(strm, level, Z_DEFLATED, -15, 8, Z_DEFAULT_STRATEGY);    if (ret != Z_OK) bye("out of memory", "");    deflateSetDictionary(strm, window, have);    strm->adler = crc;    strm->total_in = tot;    if (left) {        lseek(gz.fd, --end, SEEK_SET);        if (read(gz.fd, gz.buf, 1) != 1) bye("reading after seek on ", name);        deflatePrime(strm, 8 - left, *gz.buf);    }    lseek(gz.fd, end, SEEK_SET);    /* clean up and return */    free(window);    free(gz.buf);    return gz.fd;}/* append file "name" to gzip file gd using deflate stream strm -- if last   is true, then finish off the deflate stream at the end */local void gztack(char *name, int gd, z_stream *strm, int last){    int fd, len, ret;    unsigned left;    unsigned char *in, *out;    /* open file to compress and append */    fd = 0;    if (name != NULL) {        fd = open(name, O_RDONLY, 0);        if (fd == -1)            fprintf(stderr, "gzappend warning: %s not found, skipping ...\n",                    name);    }    /* allocate buffers */    in = fd == -1 ? NULL : malloc(CHUNK);    out = malloc(CHUNK);    if (out == NULL) bye("out of memory", "");    /* compress input file and append to gzip file */    do {        /* get more input */        len = fd == -1 ? 0 : read(fd, in, CHUNK);        if (len == -1) {            fprintf(stderr,                    "gzappend warning: error reading %s, skipping rest ...\n",                    name);            len = 0;        }        strm->avail_in = (unsigned)len;        strm->next_in = in;        if (len) strm->adler = crc32(strm->adler, in, (unsigned)len);        /* compress and write all available output */        do {            strm->avail_out = CHUNK;            strm->next_out = out;            ret = deflate(strm, last && len == 0 ? Z_FINISH : Z_NO_FLUSH);            left = CHUNK - strm->avail_out;            while (left) {                len = write(gd, out + CHUNK - strm->avail_out - left, left);                if (len == -1) bye("writing gzip file", "");                left -= (unsigned)len;            }        } while (strm->avail_out == 0 && ret != Z_STREAM_END);    } while (len != 0);    /* write trailer after last entry */    if (last) {        deflateEnd(strm);        out[0] = (unsigned char)(strm->adler);        out[1] = (unsigned char)(strm->adler >> 8);        out[2] = (unsigned char)(strm->adler >> 16);        out[3] = (unsigned char)(strm->adler >> 24);        out[4] = (unsigned char)(strm->total_in);        out[5] = (unsigned char)(strm->total_in >> 8);        out[6] = (unsigned char)(strm->total_in >> 16);        out[7] = (unsigned char)(strm->total_in >> 24);        len = 8;        do {            ret = write(gd, out + 8 - len, len);            if (ret == -1) bye("writing gzip file", "");            len -= ret;        } while (len);        close(gd);    }    /* clean up and return */    free(out);    if (in != NULL) free(in);    if (fd > 0) close(fd);}/* process the compression level option if present, scan the gzip file, and   append the specified files, or append the data from stdin if no other file   names are provided on the command line -- the gzip file must be writable   and seekable */int main(int argc, char **argv){    int gd, level;    z_stream strm;    /* ignore command name */    argv++;    /* provide usage if no arguments */    if (*argv == NULL) {        printf("gzappend 1.1 (4 Nov 2003) Copyright (C) 2003 Mark Adler\n");        printf(            "usage: gzappend [-level] file.gz [ addthis [ andthis ... ]]\n");        return 0;    }    /* set compression level */    level = Z_DEFAULT_COMPRESSION;    if (argv[0][0] == '-') {        if (argv[0][1] < '0' || argv[0][1] > '9' || argv[0][2] != 0)            bye("invalid compression level", "");        level = argv[0][1] - '0';        if (*++argv == NULL) bye("no gzip file name after options", "");    }    /* prepare to append to gzip file */    gd = gzscan(*argv++, &strm, level);    /* append files on command line, or from stdin if none */    if (*argv == NULL)        gztack(NULL, gd, &strm, 1);    else        do {            gztack(*argv, gd, &strm, argv[1] == NULL);        } while (*++argv != NULL);    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩在线a电影| 亚洲h在线观看| 337p粉嫩大胆噜噜噜噜噜91av | 国产精品久久久久久亚洲伦| 日韩三级av在线播放| 欧美视频在线播放| 精品粉嫩aⅴ一区二区三区四区| 欧美性生活大片视频| 欧美亚洲一区三区| 欧美撒尿777hd撒尿| 欧美色老头old∨ideo| 欧美色视频在线| 91精品麻豆日日躁夜夜躁| 欧美一区三区四区| 精品福利一区二区三区 | 国产欧美一区视频| 国产欧美日韩在线看| 国产精品国产三级国产普通话99| 国产精品传媒视频| 一区二区免费看| 日本不卡的三区四区五区| 美女视频一区二区三区| 国产美女精品人人做人人爽| 99精品欧美一区| 欧美精品第1页| 久久久午夜精品| 亚洲精品免费在线| 久久精品免费看| 成人性色生活片| 欧美二区乱c少妇| 国产欧美一区二区精品仙草咪 | 4438x成人网最大色成网站| 日韩一区二区三区观看| 国产日韩欧美激情| 亚洲综合成人在线视频| 国产在线视频一区二区| 色婷婷av一区二区三区gif| 91精品国产色综合久久久蜜香臀| 亚洲精品在线免费播放| 一区二区三区免费网站| 国产真实乱偷精品视频免| 在线亚洲一区二区| 精品国产乱码久久久久久免费| 中文字幕av一区二区三区| 亚洲第一在线综合网站| 国产成人午夜片在线观看高清观看 | 亚洲一区免费视频| 国产精品自产自拍| 欧美欧美欧美欧美首页| 欧美国产日韩亚洲一区| 丝袜诱惑亚洲看片| 欧美在线你懂的| 国产精品国产三级国产普通话99| 精品一区二区三区在线观看| 欧美日韩一区二区在线观看视频| 亚洲欧洲在线观看av| 韩国三级在线一区| 欧美久久久久久蜜桃| 亚洲精品va在线观看| 99久久久久免费精品国产 | 国产精品一区二区在线观看网站| 91电影在线观看| 国产精品色婷婷| 国模大尺度一区二区三区| 欧美一级午夜免费电影| 亚洲国产毛片aaaaa无费看| 99天天综合性| 中文字幕亚洲区| 国产成人精品午夜视频免费| 欧美一区二区三区男人的天堂| 亚洲成av人在线观看| 9i看片成人免费高清| 91精品国产综合久久久久久久 | 亚洲综合另类小说| 成人黄色一级视频| 精品国产不卡一区二区三区| 亚洲一区视频在线观看视频| 大美女一区二区三区| 久久综合色婷婷| 麻豆精品在线视频| 欧美精品色一区二区三区| 国产精品私人影院| 偷拍与自拍一区| 91成人免费电影| 亚洲欧洲制服丝袜| 91美女视频网站| 亚洲天天做日日做天天谢日日欢| 国产精品亚洲一区二区三区妖精| 日韩午夜电影在线观看| 亚洲一二三四在线| 日韩午夜电影av| 精品在线一区二区三区| 日韩欧美第一区| 精品中文字幕一区二区小辣椒| 欧美老肥妇做.爰bbww| 亚洲一区二区三区影院| 56国语精品自产拍在线观看| 亚洲成人手机在线| 欧美日韩mp4| 国内精品在线播放| 国产精品视频一二三区| av亚洲精华国产精华| 亚洲精品日韩一| 欧美日韩电影在线播放| 日日骚欧美日韩| 亚洲国产精品传媒在线观看| 成人综合日日夜夜| 亚洲欧美电影一区二区| 欧美在线观看视频在线| 日本成人在线不卡视频| 26uuu国产在线精品一区二区| 国产剧情一区二区| 亚洲欧美日韩精品久久久久| 欧美午夜影院一区| 麻豆精品视频在线观看视频| 精品噜噜噜噜久久久久久久久试看| 久久国产剧场电影| 中文字幕在线视频一区| 欧美天堂一区二区三区| 久久精品国产在热久久| 日韩毛片高清在线播放| 欧美剧情片在线观看| 国产永久精品大片wwwapp| 国产精品女同一区二区三区| 在线免费视频一区二区| 美女视频一区在线观看| 亚洲欧洲韩国日本视频| 在线免费观看不卡av| 岛国精品在线观看| 婷婷国产v国产偷v亚洲高清| 精品国产伦一区二区三区免费| 成人av片在线观看| 秋霞成人午夜伦在线观看| 欧美激情一区二区三区蜜桃视频| 色婷婷综合激情| 国产成人综合在线观看| 日韩中文字幕1| 亚洲激情网站免费观看| 欧美国产1区2区| 制服丝袜成人动漫| a在线播放不卡| 久久精品久久99精品久久| 日韩精品欧美成人高清一区二区| 国产精品你懂的在线欣赏| 日韩一区二区影院| 日本电影欧美片| 福利一区二区在线| 日韩av在线发布| 一区二区成人在线| 中文av一区二区| 欧美www视频| 欧美老年两性高潮| 色av成人天堂桃色av| 色综合久久六月婷婷中文字幕| 精品午夜一区二区三区在线观看| 亚洲午夜视频在线观看| 亚洲老妇xxxxxx| 中文字幕乱码亚洲精品一区| 精品av久久707| 日韩视频免费观看高清完整版在线观看| 99久久综合国产精品| 成人黄色大片在线观看| 国产精品自在在线| 国产自产高清不卡| 国产伦精品一区二区三区视频青涩 | 99国产精品国产精品久久| 国产成人综合网站| 国产一级精品在线| 精品在线亚洲视频| 午夜天堂影视香蕉久久| 奇米影视一区二区三区小说| 亚洲成a人v欧美综合天堂| 偷窥少妇高潮呻吟av久久免费| 亚洲国产精品久久久男人的天堂 | 国产精品99久久久久| 国v精品久久久网| 成人精品国产福利| 成年人午夜久久久| 成人av在线资源| 99精品热视频| 在线观看视频一区| 欧美精品一区二区高清在线观看 | 国产一区二区三区免费| 国产一区二区91| 国产成人综合在线播放| eeuss鲁片一区二区三区在线观看| 成人精品视频.| 欧美裸体bbwbbwbbw| 日韩欧美亚洲国产另类| 亚洲精品一区二区三区在线观看| 欧美成人精品二区三区99精品| 亚洲精品一区二区三区福利| 日本一区二区三级电影在线观看| 久久影院电视剧免费观看| 亚洲精品国产a久久久久久 | 国产精品美女久久久久久2018| 精品少妇一区二区三区免费观看| 综合久久国产九一剧情麻豆| 亚洲成年人网站在线观看| 国产一区二区三区香蕉|