Ejemplo n.º 1
0
void FileStream::ensureWrite_slow(const void* vbuf, size_t length) {
	assert(m_fp);
	size_t n = ::fwrite(vbuf, 1, length, m_fp);
	if (n != length) {
		throw OutOfSpaceException(BOOST_CURRENT_FUNCTION);
	}
}
Ejemplo n.º 2
0
void throw_OutOfSpace(const char* func, size_t want, size_t available)
{
	std::ostringstream oss;
	oss << "in " << func << ", want=" << want
		<< ", available=" << available
//		<< ", tell=" << tell() << ", size=" << size()
		;
	throw OutOfSpaceException(oss.str().c_str());
}
Ejemplo n.º 3
0
void FileStream::writeByte_slow(byte b)
{
	assert(m_fp);
#ifdef __USE_MISC
	if (EOF == fputc_unlocked(b, m_fp))
#else
	if (EOF == fputc(b, m_fp))
#endif
		throw OutOfSpaceException(BOOST_CURRENT_FUNCTION);
}
	void DataIO_saveObject(Output& output, const CString& x)
	{
		var_size_t size(x.GetLength());
		output << size;
		uint32_t size2 = output.write(static_cast<LPCTSTR>(x), size.t);

		if (size2 != size.t)
		{
			throw OutOfSpaceException("when save CString");
		}
	}
Ejemplo n.º 5
0
bool FileStream::copyFile(const char* srcPath, const char* dstPath)
{
	FileStream fsrc(srcPath, "rb");
	FileStream fdst(dstPath, "wb+");

	if (fsrc && fdst)
	{
		setvbuf(fsrc.fp(), NULL, _IONBF, 0);
		setvbuf(fdst.fp(), NULL, _IONBF, 0);
		size_t nbuf = 64 * 1024;
		AutoFree<char> pbuf(nbuf);
		while (!fsrc.eof())
		{
			size_t nRead  = fsrc.read(pbuf, nbuf);
			size_t nWrite = fdst.write(pbuf, nRead);
			if (nWrite != nRead) {
				throw OutOfSpaceException(BOOST_CURRENT_FUNCTION);
			}
		}
		return true;
	}
	return false;
}