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

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

?? gzio.c

?? 一個本地database引擎,支持中文T_Sql查詢,兼容DELPHI標準數據庫控件
?? C
?? 第 1 頁 / 共 3 頁
字號:

/* ===========================================================================
      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;
}

/* ===========================================================================
     Returns 1 if reading and doing so transparently, otherwise zero.
*/
int ZEXPORT gzdirect (file)
    gzFile file;
{
    gz_stream *s = (gz_stream*)file;

    if (s == NULL || s->mode != 'r') return 0;
    return s->transparent;
}

/* ===========================================================================
   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;
{
    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
        if (do_flush (file, Z_FINISH) != 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);
}

#ifdef STDC
#  define zstrerror(errnum) strerror(errnum)
#else
#  define zstrerror(errnum) ""
#endif

/* ===========================================================================
     Returns the error message for the last error which occurred on the
   given compressed file. errnum is set to zlib error number. If an
   error occurred 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一区二区三区免费野_久草精品视频
93久久精品日日躁夜夜躁欧美| 日本一区二区免费在线观看视频| 亚洲欧美二区三区| 91麻豆精东视频| 一区二区三区 在线观看视频 | 亚洲欧美另类小说| 日韩一区欧美小说| 国产日产欧美一区二区视频| 激情综合五月婷婷| 久久视频一区二区| 成人激情免费网站| 一区二区在线观看av| 欧美日韩精品欧美日韩精品一综合 | 青娱乐精品视频| 精品欧美久久久| 国产成人av电影| 亚洲少妇最新在线视频| 欧美三级资源在线| 久久国产精品99精品国产| 国产午夜亚洲精品午夜鲁丝片| 成人av综合一区| 日韩高清国产一区在线| 国产亚洲精品超碰| 欧美日韩一区二区在线观看| 另类调教123区| 中文字幕不卡三区| 亚洲日本va午夜在线电影| 99视频在线观看一区三区| 亚洲成人你懂的| 欧美电影免费观看高清完整版在| 国产.欧美.日韩| 午夜精品久久久久影视| 国产日产欧美一区二区视频| 在线视频国内一区二区| 国内精品不卡在线| 一区二区在线电影| 久久久激情视频| 这里只有精品免费| 91在线无精精品入口| 久久精品72免费观看| 亚洲色图在线播放| 久久久99精品免费观看| 777奇米四色成人影色区| 不卡高清视频专区| 精一区二区三区| 午夜av电影一区| 亚洲情趣在线观看| 中文字幕一区二| 制服丝袜中文字幕亚洲| 91视频在线观看| 国产精品888| 美女视频第一区二区三区免费观看网站| 久久久久国产精品人| 91精品国产福利在线观看| 色婷婷综合久久久中文一区二区| 国产真实乱子伦精品视频| 日本亚洲电影天堂| 亚洲第一福利视频在线| 亚洲精品高清在线| 国产精品久久久久永久免费观看| 精品国产乱码久久久久久久| 91精品国产综合久久久久久久| 一本大道久久a久久综合| 成人精品国产一区二区4080| 国产精品99久久久久久有的能看| 奇米一区二区三区av| 亚洲国产一区二区三区青草影视 | 国产盗摄一区二区| 国产成人aaa| 中文字幕第一区二区| 成人自拍视频在线观看| 久久久久九九视频| 欧美日韩精品一区视频| 精品无码三级在线观看视频| 伊人婷婷欧美激情| 精品国产第一区二区三区观看体验| 粉嫩欧美一区二区三区高清影视 | 国产精品久久久久一区 | 亚洲www啪成人一区二区麻豆| 中文字幕欧美国产| 欧美高清在线精品一区| 亚洲国产精品精华液2区45| 久久综合色8888| 中文字幕欧美区| 综合久久久久久| 依依成人综合视频| 亚洲狠狠爱一区二区三区| 亚洲国产精品尤物yw在线观看| 亚洲一二三区不卡| 亚洲一区二区三区四区在线观看| 亚洲一本大道在线| 乱中年女人伦av一区二区| 久久不见久久见免费视频7| 国产乱淫av一区二区三区| 国产美女视频一区| 国产成人免费视频网站高清观看视频| 国产一区二区精品在线观看| 国产成人午夜99999| 91丨九色丨蝌蚪富婆spa| av电影在线不卡| 在线一区二区三区| 9191成人精品久久| 国产三级精品三级| 国产精品初高中害羞小美女文| 中文字幕一区二区三区四区不卡| 亚洲美女区一区| 亚洲资源在线观看| 日本在线观看不卡视频| 激情久久五月天| 成人h精品动漫一区二区三区| 91小视频免费看| 欧美精品一二三区| 国产欧美日韩综合| 中文字幕日本乱码精品影院| 亚洲免费观看高清完整版在线观看熊| 亚洲成人你懂的| 国产福利一区二区三区在线视频| 成人av电影在线网| 在线成人午夜影院| 国产日产欧美一区| 午夜视黄欧洲亚洲| 成人蜜臀av电影| 欧美日韩免费电影| 国产日韩欧美综合一区| 五月天欧美精品| 国产电影精品久久禁18| 欧美三级日本三级少妇99| 久久久精品综合| 亚洲成人1区2区| 国产电影一区二区三区| 欧美日韩国产综合一区二区三区 | 久久综合精品国产一区二区三区| 中文字幕在线不卡| 黑人巨大精品欧美一区| 91片在线免费观看| 日韩欧美一区电影| 亚洲综合色噜噜狠狠| 成人一级片网址| 欧美一级日韩不卡播放免费| 亚洲欧洲精品天堂一级| 国内精品不卡在线| 精品视频在线免费| 国产精品久久久久久久第一福利| 美女性感视频久久| 欧美日韩国产色站一区二区三区| 久久久高清一区二区三区| 一区二区三区高清在线| 成人av在线一区二区三区| 精品国产乱码久久久久久影片| 亚洲国产cao| 色94色欧美sute亚洲线路一ni| 国产亚洲精品精华液| 精品在线亚洲视频| 日韩视频一区二区| 免费人成精品欧美精品| 欧美日韩和欧美的一区二区| 亚洲最新在线观看| 99久精品国产| 亚洲国产精品二十页| 激情图片小说一区| 日韩一区二区在线看| 日韩成人午夜精品| 欧美久久一区二区| 日韩成人一区二区| 日韩美女在线视频| 美女视频一区二区三区| 日韩一区二区电影在线| 美女爽到高潮91| 亚洲精品一区二区三区香蕉| 精品一区二区日韩| 精品久久人人做人人爰| 欧美日韩美女一区二区| 久久精品无码一区二区三区| 狠狠色丁香久久婷婷综| 精品入口麻豆88视频| 狠狠色丁香久久婷婷综合丁香| 亚洲精品一线二线三线无人区| 国产另类ts人妖一区二区| 国产色91在线| 不卡的电视剧免费网站有什么| 国产精品久久久久婷婷二区次| av在线播放成人| 一区二区三区四区激情| 欧美日韩免费一区二区三区| 日韩av一区二区三区| 久久影院电视剧免费观看| 国产不卡视频一区二区三区| 国产精品美日韩| 欧美视频中文一区二区三区在线观看| 午夜伦理一区二区| 久久美女艺术照精彩视频福利播放 | 亚洲欧洲精品成人久久奇米网| 91国产免费观看| 日韩高清不卡一区二区| 久久精品视频一区二区| 91视频国产观看| 日韩高清欧美激情| 成人免费在线视频| 欧美日韩一级视频| 国内精品不卡在线|