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

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

?? gzio.c

?? funambol windows mobile plugin source code, the source code is taken from the funambol site
?? C
?? 第 1 頁 / 共 3 頁
字號:
}
#endif
#endif

/* ===========================================================================
      Writes c, converted to an unsigned char, into the compressed file.
   gzputc returns the value that was written, or -1 in case of error.
*/
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;
#ifdef _WIN32_WCE
    DWORD size;
#endif

    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) {
#ifdef _WIN32_WCE
            if (!WriteFile(s->file, s->outbuf, len, &size, NULL) || (uInt)size != len) {
#else
            if ((uInt)fwrite(s->outbuf, 1, len, s->file) != len) {
#endif
                s->z_err = Z_ERRNO;
                return Z_ERRNO;
            }
            s->stream.next_out = s->outbuf;
            s->stream.avail_out = Z_BUFSIZE;
        }
        if (done) break;
        s->z_err = deflate(&(s->stream), flush);

	/* 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;
#ifdef _WIN32_WCE
#else
    fflush(s->file);
#endif
    return  s->z_err == Z_STREAM_END ? Z_OK : s->z_err;
}
#endif /* NO_DEFLATE */

/* ===========================================================================
      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_DEFLATE
	return -1L;
#else
	if (whence == SEEK_SET) {
	    offset -= s->stream.total_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 */
	    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 (z_off_t)s->stream.total_in;
#endif
    }
    /* Rest of function is for reading only */

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

    if (s->transparent) {
	/* map to fseek */
	s->stream.avail_in = 0;
	s->stream.next_in = s->inbuf;
#ifdef _WIN32_WCE
        if (SetFilePointer(s->file, offset, NULL, FILE_BEGIN) == 0xFFFFFFFF) return -1L;
#else
        if (fseek(s->file, offset, SEEK_SET) < 0) return -1L;
#endif

	s->stream.total_in = s->stream.total_out = (uLong)offset;
	return offset;
    }

    /* For a negative seek, rewind and use positive seek */
    if ((uLong)offset >= s->stream.total_out) {
	offset -= s->stream.total_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);
    }
    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 (z_off_t)s->stream.total_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->stream.avail_in = 0;
    s->stream.next_in = s->inbuf;
    s->crc = crc32(0L, Z_NULL, 0);
	
    if (s->startpos == 0) { /* not a compressed file */
#ifdef _WIN32_WCE
        SetFilePointer(s->file, 0, NULL, FILE_BEGIN);
#else
	rewind(s->file);
#endif
	return 0;
    }

    (void) inflateReset(&s->stream);
#ifdef _WIN32_WCE
    return SetFilePointer(s->file, s->startpos, NULL, FILE_BEGIN);
#else
    return fseek(s->file, s->startpos, SEEK_SET);
#endif
}

/* ===========================================================================
     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;
    
    return (s == NULL || s->mode != 'r') ? 0 : s->z_eof;
}

/* ===========================================================================
   Outputs a long in LSB order to the given file
*/
#ifdef _WIN32_WCE
local void putLong (file, x)
    HANDLE file;
    uLong x;
{
    int n;
    char ch[1];
    DWORD size;
    for (n = 0; n < 4; n++) {
        ch[0] = (int)(x & 0xff);
        WriteFile(file, ch, 1, &size, NULL);
        x >>= 8;
    }
}
#else
local void putLong (file, x)
    FILE *file;
    uLong x;
{
    int n;
    for (n = 0; n < 4; n++) {
        fputc((int)(x & 0xff), file);
        x >>= 8;
    }
}
#endif

/* ===========================================================================
   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_DEFLATE
	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, s->stream.total_in);
#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*)"";

#ifdef _WIN32_WCE
    m =  (char*)(*errnum == Z_ERRNO ? zstrerror(GetLastError()) : s->stream.msg);
#else
    m =  (char*)(*errnum == Z_ERRNO ? zstrerror(errno) : s->stream.msg);
#endif

    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);
    strcpy(s->msg, s->path);
    strcat(s->msg, ": ");
    strcat(s->msg, m);
    return (const char*)s->msg;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩高清影院| 成人一级片网址| 一区二区三区免费网站| 国产精品福利一区| 综合在线观看色| 亚洲免费视频成人| 一区2区3区在线看| 日产国产欧美视频一区精品| 亚洲成国产人片在线观看| 香蕉乱码成人久久天堂爱免费| 亚洲国产精品一区二区久久恐怖片| 亚洲综合一区二区三区| 亚洲国产日韩一级| 日韩二区三区四区| 国产美女娇喘av呻吟久久| 国产成人av电影在线观看| 不卡av免费在线观看| 色综合久久久久综合99| 欧美电影一区二区| 久久久久久久精| 亚洲精品你懂的| 极品美女销魂一区二区三区| 懂色av一区二区在线播放| 色视频一区二区| 精品少妇一区二区三区日产乱码| 国产亚洲一区字幕| 国产精品久久影院| 亚洲国产wwwccc36天堂| 国产在线不卡一区| 91福利精品第一导航| 2022国产精品视频| 一区二区三区四区精品在线视频| 蜜桃一区二区三区在线观看| 成人黄色一级视频| 日韩三级在线免费观看| 国产精品白丝在线| 精品综合久久久久久8888| 丁香婷婷综合五月| 欧美一级爆毛片| 一区二区在线电影| 免费高清在线一区| 色香蕉久久蜜桃| 久久精品日韩一区二区三区| 亚洲va欧美va人人爽| 99视频热这里只有精品免费| 精品国产网站在线观看| 亚洲成av人片在线观看无码| 成人免费视频免费观看| 欧美刺激午夜性久久久久久久| 一级中文字幕一区二区| 国产成人精品综合在线观看 | 91丨porny丨国产| 色八戒一区二区三区| 欧美电影免费观看高清完整版在线| 亚洲精品高清在线观看| 成人亚洲一区二区一| 精品蜜桃在线看| 午夜成人在线视频| 久久激情五月激情| 日韩欧美在线一区二区三区| 亚洲国产一区二区视频| 一本色道亚洲精品aⅴ| 国产精品美女久久福利网站| 久久99国内精品| 欧美一二三四区在线| 视频一区国产视频| 99久久精品一区二区| 国产精品三级视频| 成人一道本在线| 中文字幕中文字幕一区二区| 粗大黑人巨茎大战欧美成人| 中文字幕乱码久久午夜不卡| 国产一区二区导航在线播放| 久久久美女毛片| 成人综合婷婷国产精品久久蜜臀 | 韩国在线一区二区| 精品国产乱码久久久久久免费| 老司机午夜精品| 26uuu国产在线精品一区二区| 紧缚捆绑精品一区二区| 久久一区二区三区四区| 黄一区二区三区| 中文av字幕一区| 91视频91自| 午夜激情久久久| 日韩欧美成人激情| 国产成人综合视频| 亚洲丝袜另类动漫二区| 在线观看av一区二区| 五月天网站亚洲| 日韩小视频在线观看专区| 国产酒店精品激情| 亚洲码国产岛国毛片在线| 欧美亚洲日本国产| 久久99久久精品| 国产精品免费丝袜| 欧美三级中文字幕| 久久9热精品视频| 国产精品传媒入口麻豆| 欧美日韩色一区| 精品亚洲aⅴ乱码一区二区三区| 欧美国产一区在线| 欧美日本一区二区三区| 国产精品资源站在线| 一区二区三区在线视频观看| 欧美一区二区三区免费观看视频| 成人免费视频视频在线观看免费| 亚洲va天堂va国产va久| 国产视频一区二区在线| 91豆麻精品91久久久久久| 欧美bbbbb| 亚洲乱码日产精品bd| 精品精品欲导航| 在线观看日韩毛片| 国产福利一区二区三区视频| 亚洲猫色日本管| 国产日本欧洲亚洲| 欧美男同性恋视频网站| 国产一区二区三区视频在线播放| 亚洲一区在线免费观看| 欧美激情综合五月色丁香小说| 欧美亚洲动漫精品| 成人激情免费视频| 国产伦精品一区二区三区免费迷| 亚洲综合激情网| 国产精品二三区| 久久精品亚洲精品国产欧美kt∨| 欧美日韩三级在线| 欧美综合视频在线观看| 成人福利电影精品一区二区在线观看| 日本三级亚洲精品| 亚洲超丰满肉感bbw| 亚洲人妖av一区二区| 国产亚洲综合性久久久影院| 欧美电视剧在线看免费| 欧美老人xxxx18| 欧洲亚洲精品在线| 色综合久久99| 成人av免费在线播放| 国产成人精品免费在线| 国产在线不卡一卡二卡三卡四卡| 久久精品国产久精国产爱| 午夜精品福利一区二区三区av| 一区二区三区免费看视频| 一区二区三区四区精品在线视频| 亚洲欧美日韩一区| 亚洲日本在线看| 亚洲欧美电影一区二区| 日韩一区日韩二区| 亚洲人妖av一区二区| 亚洲综合999| 亚洲一区欧美一区| 亚洲va在线va天堂| 日本欧美一区二区| 日韩在线一区二区三区| 青青青爽久久午夜综合久久午夜| 爽好久久久欧美精品| 免费黄网站欧美| 经典三级视频一区| 国产宾馆实践打屁股91| 岛国一区二区在线观看| 成人一区二区三区中文字幕| 91欧美激情一区二区三区成人| 色香蕉久久蜜桃| 欧美一区二区精品在线| 久久你懂得1024| 亚洲男人天堂一区| 午夜影院在线观看欧美| 六月丁香综合在线视频| 国产69精品一区二区亚洲孕妇| 91亚洲国产成人精品一区二三| 色吧成人激情小说| 日韩欧美的一区| 国产精品麻豆视频| 亚洲成人福利片| 精品一区二区三区蜜桃| av电影天堂一区二区在线观看| 色欧美88888久久久久久影院| 欧美日本在线视频| 日韩精品最新网址| 中文字幕欧美一| 丝袜亚洲另类丝袜在线| 美脚の诱脚舐め脚责91 | 丁香五精品蜜臀久久久久99网站 | 卡一卡二国产精品| 91蜜桃网址入口| 日韩精品在线网站| 亚洲日本在线天堂| 国精品**一区二区三区在线蜜桃| 成人激情午夜影院| 91精品欧美久久久久久动漫| 亚洲国产成人私人影院tom| 亚洲国产精品麻豆| 成人小视频在线观看| 国产精品欧美综合在线| 日韩精品一二三区| 色欧美日韩亚洲| 国产精品日日摸夜夜摸av| 天天亚洲美女在线视频| 91麻豆精品秘密|