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

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

?? gzio.c

?? 一款最完整的工業組態軟源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
*/
int ZEXPORT gzputc(file, c)
    gzFile file;
    int c;
{
    unsigned char cc = (unsigned char) c; /* required for big endian systems */

    return gzwrite(file, &cc, 1) == 1 ? (int)cc : -1;
}


/* ===========================================================================
      Writes the given null-terminated string to the compressed file, excluding
   the terminating null character.
      gzputs returns the number of characters written, or -1 in case of error.
*/
int ZEXPORT gzputs(file, s)
    gzFile file;
    const char *s;
{
    return gzwrite(file, (char*)s, (unsigned)strlen(s));
}


/* ===========================================================================
     Flushes all pending output into the compressed file. The parameter
   flush is as in the deflate() function.
*/
local int do_flush (file, flush)
    gzFile file;
    int flush;
{
    uInt len;
    int done = 0;
    gz_stream *s = (gz_stream*)file;

    if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR;

    s->stream.avail_in = 0; /* should be zero already anyway */

    for (;;) {
        len = Z_BUFSIZE - s->stream.avail_out;

        if (len != 0) {
            if ((uInt)fwrite(s->outbuf, 1, len, s->file) != len) {
                s->z_err = Z_ERRNO;
                return Z_ERRNO;
            }
            s->stream.next_out = s->outbuf;
            s->stream.avail_out = Z_BUFSIZE;
        }
        if (done) break;
        s->out += s->stream.avail_out;
        s->z_err = deflate(&(s->stream), flush);
        s->out -= s->stream.avail_out;

        /* Ignore the second of two consecutive flushes: */
        if (len == 0 && s->z_err == Z_BUF_ERROR) s->z_err = Z_OK;

        /* deflate has finished flushing only when it hasn't used up
         * all the available space in the output buffer:
         */
        done = (s->stream.avail_out != 0 || s->z_err == Z_STREAM_END);

        if (s->z_err != Z_OK && s->z_err != Z_STREAM_END) break;
    }
    return  s->z_err == Z_STREAM_END ? Z_OK : s->z_err;
}

int ZEXPORT gzflush (file, flush)
     gzFile file;
     int flush;
{
    gz_stream *s = (gz_stream*)file;
    int err = do_flush (file, flush);

    if (err) return err;
    fflush(s->file);
    return  s->z_err == Z_STREAM_END ? Z_OK : s->z_err;
}
#endif /* NO_GZCOMPRESS */

/* ===========================================================================
      Sets the starting position for the next gzread or gzwrite on the given
   compressed file. The offset represents a number of bytes in the
      gzseek returns the resulting offset location as measured in bytes from
   the beginning of the uncompressed stream, or -1 in case of error.
      SEEK_END is not implemented, returns error.
      In this version of the library, gzseek can be extremely slow.
*/
z_off_t ZEXPORT gzseek (file, offset, whence)
    gzFile file;
    z_off_t offset;
    int whence;
{
    gz_stream *s = (gz_stream*)file;

    if (s == NULL || whence == SEEK_END ||
        s->z_err == Z_ERRNO || s->z_err == Z_DATA_ERROR) {
        return -1L;
    }

    if (s->mode == 'w') {
#ifdef NO_GZCOMPRESS
        return -1L;
#else
        if (whence == SEEK_SET) {
            offset -= s->in;
        }
        if (offset < 0) return -1L;

        /* At this point, offset is the number of zero bytes to write. */
        if (s->inbuf == Z_NULL) {
            s->inbuf = (Byte*)ALLOC(Z_BUFSIZE); /* for seeking */
            if (s->inbuf == Z_NULL) return -1L;
            zmemzero(s->inbuf, Z_BUFSIZE);
        }
        while (offset > 0)  {
            uInt size = Z_BUFSIZE;
            if (offset < Z_BUFSIZE) size = (uInt)offset;

            size = gzwrite(file, s->inbuf, size);
            if (size == 0) return -1L;

            offset -= size;
        }
        return s->in;
#endif
    }
    /* Rest of function is for reading only */

    /* compute absolute position */
    if (whence == SEEK_CUR) {
        offset += s->out;
    }
    if (offset < 0) return -1L;

    if (s->transparent) {
        /* map to fseek */
        s->back = EOF;
        s->stream.avail_in = 0;
        s->stream.next_in = s->inbuf;
        if (fseek(s->file, offset, SEEK_SET) < 0) return -1L;

        s->in = s->out = offset;
        return offset;
    }

    /* For a negative seek, rewind and use positive seek */
    if (offset >= s->out) {
        offset -= s->out;
    } else if (gzrewind(file) < 0) {
        return -1L;
    }
    /* offset is now the number of bytes to skip. */

    if (offset != 0 && s->outbuf == Z_NULL) {
        s->outbuf = (Byte*)ALLOC(Z_BUFSIZE);
        if (s->outbuf == Z_NULL) return -1L;
    }
    if (offset && s->back != EOF) {
        s->back = EOF;
        s->out++;
        offset--;
        if (s->last) s->z_err = Z_STREAM_END;
    }
    while (offset > 0)  {
        int size = Z_BUFSIZE;
        if (offset < Z_BUFSIZE) size = (int)offset;

        size = gzread(file, s->outbuf, (uInt)size);
        if (size <= 0) return -1L;
        offset -= size;
    }
    return s->out;
}

/* ===========================================================================
     Rewinds input file.
*/
int ZEXPORT gzrewind (file)
    gzFile file;
{
    gz_stream *s = (gz_stream*)file;

    if (s == NULL || s->mode != 'r') return -1;

    s->z_err = Z_OK;
    s->z_eof = 0;
    s->back = EOF;
    s->stream.avail_in = 0;
    s->stream.next_in = s->inbuf;
    s->crc = crc32(0L, Z_NULL, 0);
    if (!s->transparent) (void)inflateReset(&s->stream);
    s->in = 0;
    s->out = 0;
    return fseek(s->file, s->start, SEEK_SET);
}

/* ===========================================================================
     Returns the starting position for the next gzread or gzwrite on the
   given compressed file. This position represents a number of bytes in the
   uncompressed data stream.
*/
z_off_t ZEXPORT gztell (file)
    gzFile file;
{
    return gzseek(file, 0L, SEEK_CUR);
}

/* ===========================================================================
     Returns 1 when EOF has previously been detected reading the given
   input stream, otherwise zero.
*/
int ZEXPORT gzeof (file)
    gzFile file;
{
    gz_stream *s = (gz_stream*)file;

    /* With concatenated compressed files that can have embedded
     * crc trailers, z_eof is no longer the only/best indicator of EOF
     * on a gz_stream. Handle end-of-stream error explicitly here.
     */
    if (s == NULL || s->mode != 'r') return 0;
    if (s->z_eof) return 1;
    return s->z_err == Z_STREAM_END;
}

/* ===========================================================================
   Outputs a long in LSB order to the given file
*/
local void putLong (file, x)
    FILE *file;
    uLong x;
{
    int n;
    for (n = 0; n < 4; n++) {
        fputc((int)(x & 0xff), file);
        x >>= 8;
    }
}

/* ===========================================================================
   Reads a long in LSB order from the given gz_stream. Sets z_err in case
   of error.
*/
local uLong getLong (s)
    gz_stream *s;
{
    uLong x = (uLong)get_byte(s);
    int c;

    x += ((uLong)get_byte(s))<<8;
    x += ((uLong)get_byte(s))<<16;
    c = get_byte(s);
    if (c == EOF) s->z_err = Z_DATA_ERROR;
    x += ((uLong)c)<<24;
    return x;
}

/* ===========================================================================
     Flushes all pending output if necessary, closes the compressed file
   and deallocates all the (de)compression state.
*/
int ZEXPORT gzclose (file)
    gzFile file;
{
    int err;
    gz_stream *s = (gz_stream*)file;

    if (s == NULL) return Z_STREAM_ERROR;

    if (s->mode == 'w') {
#ifdef NO_GZCOMPRESS
        return Z_STREAM_ERROR;
#else
        err = do_flush (file, Z_FINISH);
        if (err != Z_OK) return destroy((gz_stream*)file);

        putLong (s->file, s->crc);
        putLong (s->file, (uLong)(s->in & 0xffffffff));
#endif
    }
    return destroy((gz_stream*)file);
}

/* ===========================================================================
     Returns the error message for the last error which occured on the
   given compressed file. errnum is set to zlib error number. If an
   error occured in the file system and not in the compression library,
   errnum is set to Z_ERRNO and the application may consult errno
   to get the exact error code.
*/
const char * ZEXPORT gzerror (file, errnum)
    gzFile file;
    int *errnum;
{
    char *m;
    gz_stream *s = (gz_stream*)file;

    if (s == NULL) {
        *errnum = Z_STREAM_ERROR;
        return (const char*)ERR_MSG(Z_STREAM_ERROR);
    }
    *errnum = s->z_err;
    if (*errnum == Z_OK) return (const char*)"";

    m = (char*)(*errnum == Z_ERRNO ? zstrerror(errno) : s->stream.msg);

    if (m == NULL || *m == '\0') m = (char*)ERR_MSG(s->z_err);

    TRYFREE(s->msg);
    s->msg = (char*)ALLOC(strlen(s->path) + strlen(m) + 3);
    if (s->msg == Z_NULL) return (const char*)ERR_MSG(Z_MEM_ERROR);
    strcpy(s->msg, s->path);
    strcat(s->msg, ": ");
    strcat(s->msg, m);
    return (const char*)s->msg;
}

/* ===========================================================================
     Clear the error and end-of-file flags, and do the same for the real file.
*/
void ZEXPORT gzclearerr (file)
    gzFile file;
{
    gz_stream *s = (gz_stream*)file;

    if (s == NULL) return;
    if (s->z_err != Z_STREAM_END) s->z_err = Z_OK;
    s->z_eof = 0;
    clearerr(s->file);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久电影网电视剧免费观看| 亚洲综合在线观看视频| 狂野欧美性猛交blacked| 91精品国产综合久久精品图片| 亚洲一区二区欧美日韩| 欧美三电影在线| 麻豆精品在线视频| 久久综合中文字幕| www.在线成人| 亚洲人妖av一区二区| 欧美专区亚洲专区| 日韩av中文在线观看| 亚洲精品一区二区三区香蕉 | 亚洲久草在线视频| 欧美性大战久久久久久久| 日韩电影一区二区三区四区| 欧美v国产在线一区二区三区| 国产精品一区久久久久| 亚洲精品国产一区二区精华液| 欧美日韩一级二级三级| 国产综合久久久久久久久久久久 | 成人免费看的视频| 一个色妞综合视频在线观看| 欧美一级生活片| 国产黄色精品网站| 色妞www精品视频| www.激情成人| 国产日韩欧美激情| 欧美这里有精品| 激情综合一区二区三区| 亚洲欧美怡红院| 91麻豆精品国产自产在线| 欧美成人精品高清在线播放| 无码av免费一区二区三区试看| 欧美日韩综合色| 成人综合婷婷国产精品久久| 亚洲二区视频在线| 欧美激情一区二区三区全黄| 在线欧美日韩国产| 国产麻豆91精品| 日韩激情在线观看| 亚洲三级视频在线观看| www精品美女久久久tv| 91黄视频在线| 成人一区二区三区中文字幕| 婷婷综合五月天| 亚洲精品国产品国语在线app| 欧美一区欧美二区| 在线视频你懂得一区二区三区| 国产乱码字幕精品高清av| 日韩精品免费专区| 亚洲欧美日韩小说| 中文字幕精品—区二区四季| 日韩精品一区二区三区在线播放| 在线亚洲人成电影网站色www| 国产精品亚洲专一区二区三区 | 国产综合一区二区| 日本成人在线网站| 亚洲成人综合在线| 亚洲日本中文字幕区| 国产婷婷色一区二区三区在线| 91麻豆精品国产自产在线| 欧美影院一区二区三区| 一本大道久久a久久精二百| 成人一区二区三区| 国产激情视频一区二区在线观看| 久久精品国产精品青草| 日韩精品一二三| 日韩激情av在线| 亚洲3atv精品一区二区三区| 亚洲免费在线观看视频| 中文字幕一区二区三区四区不卡| 久久综合色鬼综合色| 欧美成人在线直播| 久久综合给合久久狠狠狠97色69| 欧美久久久影院| 91麻豆精品国产91久久久更新时间 | 欧美主播一区二区三区| 91福利视频网站| 欧美艳星brazzers| 欧美久久久久久久久久 | 日韩一区二区三区高清免费看看| 欧美日韩性生活| 91在线视频网址| 成人免费毛片app| 91色视频在线| 欧美日韩亚洲综合一区| 日韩一区二区三区观看| 欧美精品一区二区三区蜜桃| 久久亚洲综合色| 亚洲婷婷综合色高清在线| 一区二区三区日本| 天天色天天爱天天射综合| 麻豆精品视频在线观看| 韩国女主播成人在线| 国产成人av影院| 色婷婷精品大视频在线蜜桃视频| 欧美三区在线视频| 欧美成人bangbros| 国产精品视频你懂的| 一区二区三区波多野结衣在线观看| 亚洲一区二区三区免费视频| 日韩精品电影一区亚洲| 激情都市一区二区| 99精品黄色片免费大全| 欧美挠脚心视频网站| 久久久久高清精品| 亚洲一区在线观看免费观看电影高清| 日本人妖一区二区| 成人午夜精品在线| 欧美日韩黄色一区二区| 日韩色在线观看| 国产精品电影一区二区| 亚洲成人自拍网| 国产尤物一区二区| 在线欧美日韩精品| 精品粉嫩aⅴ一区二区三区四区| 久久久一区二区三区捆绑**| 9191久久久久久久久久久| 日韩一区二区精品在线观看| 久久综合色播五月| 亚洲欧美欧美一区二区三区| 亚洲伊人色欲综合网| 毛片一区二区三区| 国产91色综合久久免费分享| 97aⅴ精品视频一二三区| 欧美日本一区二区| 久久精品男人的天堂| 一区二区国产盗摄色噜噜| 免费高清在线一区| 成人动漫在线一区| 欧美日韩高清影院| 国产性做久久久久久| 一区二区欧美国产| 国产美女在线观看一区| 在线观看网站黄不卡| 久久人人超碰精品| 亚洲最色的网站| 国产在线精品一区二区| 欧美在线观看视频在线| 久久精品欧美日韩| 亚洲成人福利片| 成人免费看片app下载| 欧美精品一区二区蜜臀亚洲| 天堂成人免费av电影一区| 91在线视频官网| 中文字幕+乱码+中文字幕一区| 久久99热这里只有精品| 日韩一区和二区| 亚洲不卡在线观看| 欧美日韩在线三级| 一区二区久久久久| 在线看一区二区| 亚洲美女视频在线观看| caoporn国产一区二区| 中文字幕乱码久久午夜不卡| 国产中文一区二区三区| 日韩一区二区三区四区| 精品久久久网站| 亚洲成人av资源| 国产盗摄女厕一区二区三区| 精品久久久久av影院| 日韩avvvv在线播放| 在线综合视频播放| 五月激情综合网| 91精品中文字幕一区二区三区| 亚洲第一搞黄网站| 3atv在线一区二区三区| 日本最新不卡在线| 日韩一区二区三区av| 久草精品在线观看| 久久久精品tv| 波多野结衣的一区二区三区| 亚洲视频免费看| 欧美日韩情趣电影| 人人精品人人爱| 久久欧美中文字幕| av影院午夜一区| 亚洲精品美腿丝袜| 91麻豆精品91久久久久同性| 青娱乐精品视频| 26uuu久久综合| 成人国产精品免费网站| 亚洲九九爱视频| 欧美一区二区视频观看视频| 久久精品国产99国产| 国产欧美精品一区二区色综合朱莉 | 日韩精品一区在线观看| 国产一区二区毛片| 国产精品毛片久久久久久久| 91网站在线观看视频| 日韩高清一区在线| 久久久久久久久久美女| 91浏览器在线视频| 日韩电影免费在线| 欧美极品少妇xxxxⅹ高跟鞋| 色94色欧美sute亚洲13| 国产欧美精品国产国产专区| 成人a免费在线看| 怡红院av一区二区三区|