Example #1
0
vector<unsigned char> ReadBytes(FILE* file, size_t numBytes)
{
	if(file == NULL)
	{
		throw logic_error("Assertion failed: file is null.");
	}

	vector<unsigned char> buffer(numBytes, 0);

	if(numBytes == 0)
	{
		return buffer;
	}

	size_t bytesRead = fread(&buffer[0], 1, numBytes, file);
	if(ferror(file) != 0)
	{
		throw IoError("Error reading from file.");
	}

	if(bytesRead < numBytes)
	{
		buffer.resize(bytesRead);
	}

	return buffer;
}
Example #2
0
void SeekOrDie(FILE* file, long offset, SeekOrigin origin)
{
	int seekSuccess = fseek(file, offset, static_cast<int>(origin));
	if(seekSuccess != 0)
	{
		throw IoError("Error while seeking.");
	}
}
Example #3
0
long TellOrDie(FILE* file)
{
	long seekPosition = ftell(file);
	if(seekPosition == -1)
	{
		throw IoError("Error while getting file position.");
	}

	return seekPosition;
}
Example #4
0
vector<unsigned char> ReadBytesOrDie(FILE* file, size_t numBytes)
{
	vector<unsigned char> bytes = ReadBytes(file, numBytes);
	if(bytes.size() < numBytes)
	{
		throw IoError("Unexpected end of file.");
	}
	else
	{
		return bytes;
	}
}
Example #5
0
static int
signalSqlite3ErrorAndThrow(const char * file_name, sqlite3 * connection)
{
    auto message = boost::format("Error operating on SQLite3 "
                                 "database %1%: \"%2%\"")
        % file_name
        % sqlite3_errmsg(connection);

    Logger * log = Logger::get_instance();
    log->error(message);

    throw IoError(message);
}
Example #6
0
FILE* OpenOrDie(const char* filename, const char* mode)
{
	FILE* file = fopen(filename, mode);
	if(file == NULL)
	{
		throw IoError(string("Could not open file ") + filename + ".");
	}
	else
	{
		return file;
	}

	#ifdef _MSC_VER
	#pragma warning(default:4996)
	#endif
}