diff options
Diffstat (limited to 'indra/llvfs')
| -rw-r--r-- | indra/llvfs/lllfsthread.cpp | 29 | ||||
| -rw-r--r-- | indra/llvfs/llvfs.cpp | 8 | 
2 files changed, 22 insertions, 15 deletions
| diff --git a/indra/llvfs/lllfsthread.cpp b/indra/llvfs/lllfsthread.cpp index a55b5402ed..704e1ab142 100644 --- a/indra/llvfs/lllfsthread.cpp +++ b/indra/llvfs/lllfsthread.cpp @@ -73,6 +73,10 @@ LLLFSThread::LLLFSThread(bool threaded) :  	LLQueuedThread("LFS", threaded),  	mPriorityCounter(PRIORITY_LOWBITS)  { +	if(!mLocalAPRFilePoolp) +	{ +		mLocalAPRFilePoolp = new LLVolatileAPRPool() ; +	}  }  LLLFSThread::~LLLFSThread() @@ -184,8 +188,9 @@ bool LLLFSThread::Request::processRequest()  	if (mOperation ==  FILE_READ)  	{  		llassert(mOffset >= 0); -		apr_file_t* filep = ll_apr_file_open(mFileName, LL_APR_RB, mThread->mAPRPoolp); -		if (!filep) +		LLAPRFile infile ; +		infile.open(mThread->getLocalAPRFilePool(), mFileName, LL_APR_RB); +		if (!infile.getFileHandle())  		{  			llwarns << "LLLFS: Unable to read file: " << mFileName << llendl;  			mBytesRead = 0; // fail @@ -193,13 +198,13 @@ bool LLLFSThread::Request::processRequest()  		}  		S32 off;  		if (mOffset < 0) -			off = ll_apr_file_seek(filep, APR_END, 0); +			off = infile.seek(APR_END, 0);  		else -			off = ll_apr_file_seek(filep, APR_SET, mOffset); +			off = infile.seek(APR_SET, mOffset);  		llassert_always(off >= 0); -		mBytesRead = ll_apr_file_read(filep, mBuffer, mBytes ); -		apr_file_close(filep); +		mBytesRead = infile.read(mBuffer, mBytes );  		complete = true; +		infile.close() ;  // 		llinfos << "LLLFSThread::READ:" << mFileName << " Bytes: " << mBytesRead << llendl;  	}  	else if (mOperation ==  FILE_WRITE) @@ -207,8 +212,9 @@ bool LLLFSThread::Request::processRequest()  		apr_int32_t flags = APR_CREATE|APR_WRITE|APR_BINARY;  		if (mOffset < 0)  			flags |= APR_APPEND; -		apr_file_t* filep = ll_apr_file_open(mFileName, flags, mThread->mAPRPoolp); -		if (!filep) +		LLAPRFile outfile ; +		outfile.open(mThread->getLocalAPRFilePool(), mFileName, flags); +		if (!outfile.getFileHandle())  		{  			llwarns << "LLLFS: Unable to write file: " << mFileName << llendl;  			mBytesRead = 0; // fail @@ -216,18 +222,17 @@ bool LLLFSThread::Request::processRequest()  		}  		if (mOffset >= 0)  		{ -			S32 seek = ll_apr_file_seek(filep, APR_SET, mOffset); +			S32 seek = outfile.seek(APR_SET, mOffset);  			if (seek < 0)  			{ -				apr_file_close(filep);  				llwarns << "LLLFS: Unable to write file (seek failed): " << mFileName << llendl;  				mBytesRead = 0; // fail  				return true;  			}  		} -		mBytesRead = ll_apr_file_write(filep, mBuffer, mBytes ); +		mBytesRead = outfile.write(mBuffer, mBytes );  		complete = true; -		apr_file_close(filep); +  // 		llinfos << "LLLFSThread::WRITE:" << mFileName << " Bytes: " << mBytesRead << "/" << mBytes << " Offset:" << mOffset << llendl;  	}  	else diff --git a/indra/llvfs/llvfs.cpp b/indra/llvfs/llvfs.cpp index 30d20bb35a..8c0ea5fd14 100644 --- a/indra/llvfs/llvfs.cpp +++ b/indra/llvfs/llvfs.cpp @@ -2070,9 +2070,11 @@ void LLVFS::dumpFiles()  			std::string extension = get_extension(type);  			std::string filename = id.asString() + extension;  			llinfos << " Writing " << filename << llendl; -			apr_file_t* file = ll_apr_file_open(filename, LL_APR_WB); -			ll_apr_file_write(file, buffer, size); -			apr_file_close(file); +			 +			LLAPRFile outfile ; +			outfile.open(filename, LL_APR_WB); +			outfile.write(buffer, size); +			outfile.close();  			delete[] buffer;  			files_extracted++;  		} | 
