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>
|
<release-item>
|
||||||
<p>Make <code>strLstDup()</code> null-tolerant.</p>
|
<p>Make <code>strLstDup()</code> null-tolerant.</p>
|
||||||
</release-item>
|
</release-item>
|
||||||
|
|
||||||
|
<release-item>
|
||||||
|
<p>Add <code>cvtSSizeToZ()</code> and debug macros.</p>
|
||||||
|
</release-item>
|
||||||
</release-development-list>
|
</release-development-list>
|
||||||
</release-core-list>
|
</release-core-list>
|
||||||
</release>
|
</release>
|
||||||
|
@ -206,6 +206,11 @@ size_t typeToLog(const char *typeName, char *buffer, size_t bufferSize);
|
|||||||
#define FUNCTION_LOG_SIZE_FORMAT(value, buffer, bufferSize) \
|
#define FUNCTION_LOG_SIZE_FORMAT(value, buffer, bufferSize) \
|
||||||
cvtSizeToZ(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 \
|
#define FUNCTION_LOG_UINT_TYPE \
|
||||||
unsigned int
|
unsigned int
|
||||||
#define FUNCTION_LOG_UINT_FORMAT(value, buffer, bufferSize) \
|
#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);
|
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
|
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 cvtModeToZ(mode_t value, char *buffer, size_t bufferSize);
|
||||||
|
|
||||||
size_t cvtSizeToZ(size_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);
|
size_t cvtUIntToZ(unsigned int value, char *buffer, size_t bufferSize);
|
||||||
unsigned int cvtZToUInt(const char *value);
|
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];
|
char buffer[STACK_TRACE_PARAM_MAX];
|
||||||
|
|
||||||
TEST_ERROR(cvtSizeToZ(9999, buffer, 4), AssertError, "buffer overflow");
|
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_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