You've already forked pgbackrest
mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2025-07-01 00:25:06 +02:00
Add cvtSSizeToZ() and debug macros.
This commit is contained in:
@ -36,6 +36,10 @@
|
||||
<release-item>
|
||||
<p>Make <code>strLstDup()</code> null-tolerant.</p>
|
||||
</release-item>
|
||||
|
||||
<release-item>
|
||||
<p>Add <code>cvtSSizeToZ()</code> and debug macros.</p>
|
||||
</release-item>
|
||||
</release-development-list>
|
||||
</release-core-list>
|
||||
</release>
|
||||
|
@ -206,6 +206,11 @@ size_t typeToLog(const char *typeName, char *buffer, size_t bufferSize);
|
||||
#define FUNCTION_LOG_SIZE_FORMAT(value, buffer, bufferSize) \
|
||||
cvtSizeToZ(value, buffer, bufferSize)
|
||||
|
||||
#define FUNCTION_LOG_SSIZE_TYPE \
|
||||
ssize_t
|
||||
#define FUNCTION_LOG_SSIZE_FORMAT(value, buffer, bufferSize) \
|
||||
cvtSSizeToZ(value, buffer, bufferSize)
|
||||
|
||||
#define FUNCTION_LOG_UINT_TYPE \
|
||||
unsigned int
|
||||
#define FUNCTION_LOG_UINT_FORMAT(value, buffer, bufferSize) \
|
||||
|
@ -344,6 +344,28 @@ cvtSizeToZ(size_t value, char *buffer, size_t bufferSize)
|
||||
FUNCTION_TEST_RETURN(result);
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
Convert ssize to zero-terminated string
|
||||
***********************************************************************************************************************************/
|
||||
size_t
|
||||
cvtSSizeToZ(ssize_t value, char *buffer, size_t bufferSize)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
FUNCTION_TEST_PARAM(SSIZE, value);
|
||||
FUNCTION_TEST_PARAM_P(CHARDATA, buffer);
|
||||
FUNCTION_TEST_PARAM(SIZE, bufferSize);
|
||||
FUNCTION_TEST_END();
|
||||
|
||||
ASSERT(buffer != NULL);
|
||||
|
||||
size_t result = (size_t)snprintf(buffer, bufferSize, "%zd", value);
|
||||
|
||||
if (result >= bufferSize)
|
||||
THROW(AssertError, "buffer overflow");
|
||||
|
||||
FUNCTION_TEST_RETURN(result);
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
Convert uint to zero-terminated string
|
||||
***********************************************************************************************************************************/
|
||||
|
@ -26,6 +26,7 @@ int64_t cvtZToInt64Base(const char *value, int base);
|
||||
size_t cvtModeToZ(mode_t value, char *buffer, size_t bufferSize);
|
||||
|
||||
size_t cvtSizeToZ(size_t value, char *buffer, size_t bufferSize);
|
||||
size_t cvtSSizeToZ(ssize_t value, char *buffer, size_t bufferSize);
|
||||
|
||||
size_t cvtUIntToZ(unsigned int value, char *buffer, size_t bufferSize);
|
||||
unsigned int cvtZToUInt(const char *value);
|
||||
|
@ -90,14 +90,20 @@ testRun(void)
|
||||
}
|
||||
|
||||
// *****************************************************************************************************************************
|
||||
if (testBegin("cvtSizeToZ()"))
|
||||
if (testBegin("cvtSizeToZ() and cvtSSizeToZ()"))
|
||||
{
|
||||
char buffer[STACK_TRACE_PARAM_MAX];
|
||||
|
||||
TEST_ERROR(cvtSizeToZ(9999, buffer, 4), AssertError, "buffer overflow");
|
||||
|
||||
TEST_RESULT_INT(cvtSizeToZ(4294967295, buffer, STACK_TRACE_PARAM_MAX), 10, "convert size to string");
|
||||
TEST_RESULT_UINT(cvtSizeToZ(4294967295, buffer, STACK_TRACE_PARAM_MAX), 10, "convert size to string");
|
||||
TEST_RESULT_STR(buffer, "4294967295", " check buffer");
|
||||
|
||||
// ------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_ERROR(cvtSSizeToZ(-9999, buffer, 4), AssertError, "buffer overflow");
|
||||
|
||||
TEST_RESULT_INT(cvtSSizeToZ(-9999, buffer, STACK_TRACE_PARAM_MAX), 5, "convert ssize to string");
|
||||
TEST_RESULT_STR(buffer, "-9999", " check buffer");
|
||||
}
|
||||
|
||||
// *****************************************************************************************************************************
|
||||
|
Reference in New Issue
Block a user