8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-23 21:23:03 +01:00

Small code reorganisation:

1. move two identical 'copy_status' functions from array.epp and blob.epp into utld.cpp
2. allow ERRD_punt use local instance of status-vector
This commit is contained in:
hvlad 2005-09-04 21:31:25 +00:00
parent d5dc56ce81
commit 3f03b1d619
6 changed files with 35 additions and 51 deletions

View File

@ -38,6 +38,7 @@
#include <stdarg.h>
#include "../jrd/ibase.h"
#include "../dsql/array_proto.h"
#include "../dsql/utld_proto.h"
#include "../jrd/gds_proto.h"
DATABASE DB = STATIC FILENAME "yachts.lnk";
@ -56,7 +57,6 @@ typedef gen_t *GEN_T;
static void adjust_length(ISC_ARRAY_DESC*);
static void copy_exact_name (const char*, char*, SSHORT);
static ISC_STATUS copy_status(const ISC_STATUS*, ISC_STATUS*);
static ISC_STATUS error(ISC_STATUS*, SSHORT, ...);
static ISC_STATUS gen_sdl(ISC_STATUS*, const ISC_ARRAY_DESC*, SSHORT*, UCHAR**,
SSHORT*, bool);
@ -177,7 +177,7 @@ ISC_STATUS API_ROUTINE isc_array_lookup_bounds(ISC_STATUS* status,
++tail;
END_FOR
ON_ERROR
return copy_status(gds_status, status);
return UTLD_copy_status(gds_status, status);
END_ERROR;
return status[1];
@ -363,28 +363,6 @@ static void copy_exact_name (
}
static ISC_STATUS copy_status( const ISC_STATUS* from, ISC_STATUS* to)
{
/**************************************
*
* c o p y _ s t a t u s
*
**************************************
*
* Functional description
* Copy a status vector.
*
**************************************/
const ISC_STATUS status = from[1];
const ISC_STATUS* const end = from + ISC_STATUS_LENGTH;
while (from < end)
*to++ = *from++;
return status;
}
static ISC_STATUS error( ISC_STATUS* status, SSHORT count, ...)
{
/**************************************
@ -570,7 +548,7 @@ static ISC_STATUS lookup_desc(ISC_STATUS* status,
END_FOR
ON_ERROR
return copy_status(gds_status, status);
return UTLD_copy_status(gds_status, status);
END_ERROR;
if (!flag)

View File

@ -35,11 +35,11 @@
#include "../jrd/ibase.h"
#include "../jrd/intl.h"
#include "../dsql/blob_proto.h"
#include "../dsql/utld_proto.h"
DATABASE DB = STATIC "yachts.lnk";
static void copy_exact_name (const UCHAR*, UCHAR*, SSHORT);
static ISC_STATUS copy_status(const ISC_STATUS*, ISC_STATUS*);
static ISC_STATUS error(ISC_STATUS*, SSHORT, ...);
@ -175,7 +175,7 @@ ISC_STATUS API_ROUTINE isc_blob_lookup_desc(ISC_STATUS* status,
}
END_FOR
ON_ERROR
return copy_status(gds_status, status);
return UTLD_copy_status(gds_status, status);
END_ERROR;
if (!flag)
@ -255,28 +255,6 @@ static void copy_exact_name (
}
static ISC_STATUS copy_status( const ISC_STATUS* from, ISC_STATUS* to)
{
/**************************************
*
* c o p y _ s t a t u s
*
**************************************
*
* Functional description
* Copy a status vector.
*
**************************************/
const ISC_STATUS status = from[1];
const ISC_STATUS* const end = from + ISC_STATUS_LENGTH;
while (from < end)
*to++ = *from++;
return status;
}
static ISC_STATUS error( ISC_STATUS* status, SSHORT count, ...)
{
/**************************************

View File

@ -366,10 +366,15 @@ void ERRD_post(ISC_STATUS status, ...)
**/
void ERRD_punt(void)
void ERRD_punt(const ISC_STATUS* local)
{
tsql* tdsql = DSQL_get_thread_data();
// copy local status into user status
if (local) {
UTLD_copy_status(local, tdsql->tsql_status);
}
// Save any strings in a permanent location
UTLD_save_status_strings(tdsql->tsql_status);

View File

@ -32,7 +32,7 @@ void ERRD_bugcheck(const char*);
void ERRD_error(int, const char*);
void ERRD_post(ISC_STATUS, ...);
bool ERRD_post_warning(ISC_STATUS, ...);
void ERRD_punt(void);
void ERRD_punt(const ISC_STATUS* = 0);
#endif // DSQL_ERRD_PROTO_H

View File

@ -96,6 +96,28 @@ USHORT UTLD_char_length_to_byte_length(USHORT lengthInChars, USHORT maxBytesPerC
}
ISC_STATUS UTLD_copy_status(const ISC_STATUS* from, ISC_STATUS* to)
{
/**************************************
*
* c o p y _ s t a t u s
*
**************************************
*
* Functional description
* Copy a status vector.
*
**************************************/
const ISC_STATUS status = from[1];
const ISC_STATUS* const end = from + ISC_STATUS_LENGTH;
while (from < end)
*to++ = *from++;
return status;
}
/**
UTLD_parse_sql_info

View File

@ -30,6 +30,7 @@
struct sqlda_sup;
USHORT UTLD_char_length_to_byte_length(USHORT lengthInChars, USHORT maxBytesPerChar);
ISC_STATUS UTLD_copy_status(const ISC_STATUS*, ISC_STATUS*);
ISC_STATUS UTLD_parse_sql_info(ISC_STATUS*, USHORT, const SCHAR*, XSQLDA*, USHORT*);
ISC_STATUS UTLD_parse_sqlda(ISC_STATUS*, sqlda_sup* const, USHORT*, USHORT*,
USHORT*, USHORT, XSQLDA*, const USHORT);