|
|
|
@ -70,18 +70,15 @@ int _php_ibase_string_to_quad(char const *id, ISC_QUAD *qd) /* {{{ */ |
|
|
|
} |
|
|
|
/* }}} */ |
|
|
|
|
|
|
|
char *_php_ibase_quad_to_string(ISC_QUAD const qd) /* {{{ */ |
|
|
|
zend_string *_php_ibase_quad_to_string(ISC_QUAD const qd) /* {{{ */ |
|
|
|
{ |
|
|
|
char *result; |
|
|
|
|
|
|
|
/* shortcut for most common case */ |
|
|
|
if (sizeof(ISC_QUAD) == sizeof(ISC_UINT64)) { |
|
|
|
spprintf(&result, BLOB_ID_LEN+1, "0x%0*" LL_MASK "x", 16, *(ISC_UINT64*)(void *) &qd); |
|
|
|
return strpprintf(BLOB_ID_LEN+1, "0x%0*" LL_MASK "x", 16, *(ISC_UINT64*)(void *) &qd); |
|
|
|
} else { |
|
|
|
ISC_UINT64 res = ((ISC_UINT64) qd.gds_quad_high << 0x20) | qd.gds_quad_low; |
|
|
|
spprintf(&result, BLOB_ID_LEN+1, "0x%0*" LL_MASK "x", 16, res); |
|
|
|
return strpprintf(BLOB_ID_LEN+1, "0x%0*" LL_MASK "x", 16, res); |
|
|
|
} |
|
|
|
return result; |
|
|
|
} |
|
|
|
/* }}} */ |
|
|
|
|
|
|
|
@ -347,7 +344,6 @@ static void _php_ibase_blob_end(INTERNAL_FUNCTION_PARAMETERS, int bl_end) /* {{{ |
|
|
|
{ |
|
|
|
zval *blob_arg; |
|
|
|
ibase_blob *ib_blob; |
|
|
|
char *s; |
|
|
|
|
|
|
|
RESET_ERRMSG; |
|
|
|
|
|
|
|
@ -367,10 +363,7 @@ static void _php_ibase_blob_end(INTERNAL_FUNCTION_PARAMETERS, int bl_end) /* {{{ |
|
|
|
} |
|
|
|
ib_blob->bl_handle = NULL; |
|
|
|
|
|
|
|
s = _php_ibase_quad_to_string(ib_blob->bl_qd); |
|
|
|
// TODO: avoid double reallocation??? |
|
|
|
RETVAL_STRINGL(s, BLOB_ID_LEN); |
|
|
|
efree(s); |
|
|
|
RETVAL_NEW_STR(_php_ibase_quad_to_string(ib_blob->bl_qd)); |
|
|
|
} else { /* discard created blob */ |
|
|
|
if (isc_cancel_blob(IB_STATUS, &ib_blob->bl_handle)) { |
|
|
|
_php_ibase_error(); |
|
|
|
@ -550,7 +543,6 @@ PHP_FUNCTION(ibase_blob_import) |
|
|
|
ibase_trans *trans = NULL; |
|
|
|
char bl_data[IBASE_BLOB_SEG]; |
|
|
|
php_stream *stream; |
|
|
|
char *s; |
|
|
|
|
|
|
|
RESET_ERRMSG; |
|
|
|
|
|
|
|
@ -578,11 +570,7 @@ PHP_FUNCTION(ibase_blob_import) |
|
|
|
if (isc_close_blob(IB_STATUS, &ib_blob.bl_handle)) { |
|
|
|
break; |
|
|
|
} |
|
|
|
s = _php_ibase_quad_to_string(ib_blob.bl_qd); |
|
|
|
// TODO: avoid double reallocation??? |
|
|
|
RETVAL_STRINGL(s, BLOB_ID_LEN); |
|
|
|
efree(s); |
|
|
|
return; |
|
|
|
RETURN_NEW_STR(_php_ibase_quad_to_string(ib_blob.bl_qd)); |
|
|
|
} while (0); |
|
|
|
|
|
|
|
_php_ibase_error(); |
|
|
|
|