Ejemplo n.º 1
0
size_t LLHTTPAssetRequest::readCompressedData(void* data, size_t size)
{
	mZStream.next_out = (Bytef*)data;
	mZStream.avail_out = size;

	while (mZStream.avail_out > 0)
	{
		if (mZStream.avail_in == 0  &&  !mZInputExhausted)
		{
			S32 to_read = llmin(COMPRESSED_INPUT_BUFFER_SIZE,
							(S32)(mVFile->getSize() - mVFile->tell()));
			
			mVFile->read((U8*)mZInputBuffer, to_read); /*Flawfinder: ignore*/

			mZStream.next_in = (Bytef*)mZInputBuffer;
			mZStream.avail_in = mVFile->getLastBytesRead();

			mZInputExhausted = mZStream.avail_in == 0;
		}

		int r = deflate(&mZStream,
					mZInputExhausted ? Z_FINISH : Z_NO_FLUSH);

		if (r == Z_STREAM_END)
		{
			break;
		}
	}

	return size - mZStream.avail_out;
}
Ejemplo n.º 2
0
int vfs_seek(void *datasource, ogg_int64_t offset, int whence)
{
	LLVFile *file = (LLVFile *)datasource;

	// vfs has 31-bit files
	if (offset > S32_MAX)
	{
		return -1;
	}

	S32 origin;
	switch (whence) {
	case SEEK_SET:
		origin = 0;
		break;
	case SEEK_END:
		origin = file->getSize();
		break;
	case SEEK_CUR:
		origin = -1;
		break;
	default:
		llerrs << "Invalid whence argument to vfs_seek" << llendl;
		return -1;
	}

	if (file->seek((S32)offset, origin))
	{
		return 0;
	}
	else
	{
		return -1;
	}
}
Ejemplo n.º 3
0
size_t vfs_read(void *ptr, size_t size, size_t nmemb, void *datasource)
{
	LLVFile *file = (LLVFile *)datasource;

	if (size > 0 && file->read((U8*)ptr, size * nmemb))	/*Flawfinder: ignore*/
	{
		S32 read = file->getLastBytesRead();
		return  read / size;	/*Flawfinder: ignore*/
	}
	else
	{
		return 0;
	}
}
Ejemplo n.º 4
0
long vfs_tell (void *datasource)
{
	LLVFile *file = (LLVFile *)datasource;

	return file->tell();
}