コード例 #1
0
ファイル: fbrmclib.cpp プロジェクト: narolez571/firebird
EXPORT RM_ENTRY(rmc_put_segment)
{
	ClearParamPool();
	ISC_STATUS *stat = AllocStatusPool();
	isc_put_segment(stat,
					(isc_blob_handle *)arg_vector[1].a_address,
					*CobolToShort(&arg_vector[2]),
					(char *)arg_vector[3].a_address);
	StatusToCobol(&arg_vector[0], stat);

	return (0);
}
コード例 #2
0
ファイル: UserBlob.cpp プロジェクト: narolez571/firebird
bool UserBlob::putSegment(size_t len, const void* buffer)
{
#ifdef DEV_BUILD
	if (!m_blob || m_direction == dir_read)
		return false;

	if (len > 0 && !buffer)
		return false;
#endif

	USHORT ilen = len > SEGMENT_LIMIT ? SEGMENT_LIMIT : static_cast<USHORT>(len);
	const char* buf2 = static_cast<const char*>(buffer);
	return !isc_put_segment(m_status, &m_blob, ilen, buf2);
}
コード例 #3
0
ファイル: lex.cpp プロジェクト: andrewleech/firebird
void LEX_put_text (FB_API_HANDLE blob, TXT text)
{
/**************************************
 *
 *	L E X _ p u t _ t e x t
 *
 **************************************
 *
 * Functional description
 *	Write text from the scratch trace file into a blob.
 *
 **************************************/
	SLONG start;
	ISC_STATUS_ARRAY status_vector;
	int length;
	SSHORT l, c;
	TEXT buffer[1024];

	start = text->txt_position;
	length = text->txt_length;

	if (fseek(trace_file, start, 0)) {
		fseek(trace_file, 0, 2);
		DDL_err(275);
		/* msg 275: fseek failed */
	}

	while (length) {
		TEXT* p = buffer;
		while (length) {
			--length;
			*p++ = c = getc(trace_file);
			if (c == '\n')
				break;
		}
		if (l = p - buffer)
			if (isc_put_segment(status_vector, &blob, l, buffer))
				DDL_err(277);
		/* msg 277: isc_put_segment failed */
	}

	fseek(trace_file, 0, 2);
}
コード例 #4
0
ファイル: UserBlob.cpp プロジェクト: narolez571/firebird
bool UserBlob::putData(size_t len, const void* buffer, size_t& real_len)
{
	if (!m_blob || m_direction == dir_read)
		return false;

	if (len > 0 && !buffer)
		return false;

	real_len = 0;
	const char* buf2 = static_cast<const char*>(buffer);
	while (len)
	{
		USHORT ilen = len > SEGMENT_LIMIT ? SEGMENT_LIMIT : static_cast<USHORT>(len);
		if (isc_put_segment(m_status, &m_blob, ilen, buf2))
			return false;

		len -= ilen;
		buf2 += ilen;
		real_len += ilen;
	}
	return true;
}
コード例 #5
0
ファイル: alt.cpp プロジェクト: FirebirdSQL/firebird
ISC_STATUS API_ROUTINE gds__put_segment(ISC_STATUS* status_vector,
										FB_API_HANDLE* blob_handle,
										USHORT segment_length, const SCHAR* segment)
{
	return isc_put_segment(status_vector, blob_handle, segment_length, segment);
}