提交 7d8afc47 编写于 作者: J Ján Tomko

Introduce virBitmapDataToString

For converting bitmap data to human-readable strings.
上级 d4edce5f
......@@ -970,6 +970,7 @@ virBitmapClearAll;
virBitmapClearBit;
virBitmapCopy;
virBitmapCountBits;
virBitmapDataToString;
virBitmapEqual;
virBitmapFormat;
virBitmapFree;
......
......@@ -707,3 +707,28 @@ virBitmapCountBits(virBitmapPtr bitmap)
return ret;
}
/**
* virBitmapDataToString:
* @data: the data
* @len: length of @data in bytes
*
* Convert a chunk of data containing bits information to a human
* readable string, e.g.: 0-1,4
*
* Returns: a string representation of the data, or NULL on error
*/
char *
virBitmapDataToString(void *data,
int len)
{
virBitmapPtr map = NULL;
char *ret = NULL;
if (!(map = virBitmapNewData(data, len)))
return NULL;
ret = virBitmapFormat(map);
virBitmapFree(map);
return ret;
}
......@@ -111,4 +111,8 @@ ssize_t virBitmapNextClearBit(virBitmapPtr bitmap, ssize_t pos)
size_t virBitmapCountBits(virBitmapPtr bitmap)
ATTRIBUTE_NONNULL(1);
char *virBitmapDataToString(void *data,
int len)
ATTRIBUTE_NONNULL(1);
#endif
......@@ -255,5 +255,4 @@ char *virStringReplace(const char *haystack,
const char *newneedle)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
#endif /* __VIR_STRING_H__ */
......@@ -266,7 +266,7 @@ test4(const void *data ATTRIBUTE_UNUSED)
return -1;
}
/* test for virBitmapNewData/ToData */
/* test for virBitmapNewData/ToData/DataToString */
static int
test5(const void *v ATTRIBUTE_UNUSED)
{
......@@ -278,6 +278,7 @@ test5(const void *v ATTRIBUTE_UNUSED)
size_t i;
ssize_t j;
int ret = -1;
char *str = NULL;
bitmap = virBitmapNewData(data, sizeof(data));
if (!bitmap)
......@@ -307,8 +308,19 @@ test5(const void *v ATTRIBUTE_UNUSED)
data2[4] != 0x04)
goto error;
if (!(str = virBitmapDataToString(data, sizeof(data))))
goto error;
if (STRNEQ(str, "0,9,34"))
goto error;
VIR_FREE(str);
if (!(str = virBitmapDataToString(data2, sizeof(data2))))
goto error;
if (STRNEQ(str, "0,2,9,15,34"))
goto error;
ret = 0;
error:
VIR_FREE(str);
virBitmapFree(bitmap);
VIR_FREE(data2);
return ret;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册