For converting bitmap data to human-readable strings.
virBitmapClearBit;
virBitmapCopy;
virBitmapCountBits;
+virBitmapDataToString;
virBitmapEqual;
virBitmapFormat;
virBitmapFree;
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;
+}
size_t virBitmapCountBits(virBitmapPtr bitmap)
ATTRIBUTE_NONNULL(1);
+char *virBitmapDataToString(void *data,
+ int len)
+ ATTRIBUTE_NONNULL(1);
+
#endif
const char *newneedle)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
-
#endif /* __VIR_STRING_H__ */
return -1;
}
-/* test for virBitmapNewData/ToData */
+/* test for virBitmapNewData/ToData/DataToString */
static int
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)
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;