Exemplo n.º 1
0
/** 读取指定数目的数据
@Param 存储数据的缓冲区指针
@Param 要读取数据的大小
*/
size_t FZipFileStream::Read( void* pBuf,size_t nSize )
{
    zzip_ssize_t ret = zzip_file_read( m_pZipFile,pBuf,nSize );

    if( ret < 0 )
    {
        ZZIP_DIR* dir = zzip_dirhandle( m_pZipFile );

        // 报告错误
        AString msg = zzip_strerror_of( dir );
        FLOG_ERRORF("FZipFileStream::Read, An exception is found when reading zip package! (%s)", msg.c_str());
    }

    return ret;
}
Exemplo n.º 2
0
 //-----------------------------------------------------------------------
 size_t ZipDataStream::read(void* buf, size_t count)
 {
     size_t was_avail = mCache.read(buf, count);
     zzip_ssize_t r = 0;
     if (was_avail < count)
     {
         r = zzip_file_read(mZzipFile, (char*)buf + was_avail, count - was_avail);
         if (r<0) {
             ZZIP_DIR *dir = zzip_dirhandle(mZzipFile);
             String msg = zzip_strerror_of(dir);
             OGRE_EXCEPT(Exception::ERR_INTERNAL_ERROR,
                 mName+" - error from zziplib: "+msg,
                 "ZipDataStream::read");
         }
         mCache.cacheData((char*)buf + was_avail, (size_t)r);
     }
     return was_avail + (size_t)r;
 }