Rather than returning an int and a *bitmap pointer, just return and
check a NULL bitmap pointer
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
src/util/virbitmap.c | 26 ++++++++++++--------------
src/util/virbitmap.h | 7 +++----
tests/testutils.c | 2 +-
tests/virbitmaptest.c | 2 +-
4 files changed, 17 insertions(+), 20 deletions(-)
diff --git a/src/util/virbitmap.c b/src/util/virbitmap.c
index 1b47d74..d263d73 100644
--- a/src/util/virbitmap.c
+++ b/src/util/virbitmap.c
@@ -545,7 +545,6 @@ virBitmapParse(const char *str,
/**
* virBitmapParseUnlimited:
* @str: points to a string representing a human-readable bitmap
- * @bitmap: a bitmap created from @str
*
* This function is the counterpart of virBitmapFormat. This function creates
* a bitmap, in which bits are set according to the content of @str.
@@ -556,20 +555,20 @@ virBitmapParse(const char *str,
* to set, and ^N, which means to unset the bit, and N-M for ranges of bits
* to set.
*
- * Returns 0 on success, or -1 in case of error.
+ * Returns @bitmap on success, or NULL in case of error
*/
-int
-virBitmapParseUnlimited(const char *str,
- virBitmapPtr *bitmap)
+virBitmapPtr
+virBitmapParseUnlimited(const char *str)
{
+ virBitmapPtr bitmap;
bool neg = false;
const char *cur = str;
char *tmp;
size_t i;
int start, last;
- if (!(*bitmap = virBitmapNewEmpty()))
- return -1;
+ if (!(bitmap = virBitmapNewEmpty()))
+ return NULL;
if (!str)
goto error;
@@ -605,10 +604,10 @@ virBitmapParseUnlimited(const char *str,
if (*cur == ',' || *cur == 0) {
if (neg) {
- if (virBitmapClearBitExpand(*bitmap, start) < 0)
+ if (virBitmapClearBitExpand(bitmap, start) < 0)
goto error;
} else {
- if (virBitmapSetBitExpand(*bitmap, start) < 0)
+ if (virBitmapSetBitExpand(bitmap, start) < 0)
goto error;
}
} else if (*cur == '-') {
@@ -626,7 +625,7 @@ virBitmapParseUnlimited(const char *str,
cur = tmp;
for (i = start; i <= last; i++) {
- if (virBitmapSetBitExpand(*bitmap, i) < 0)
+ if (virBitmapSetBitExpand(bitmap, i) < 0)
goto error;
}
@@ -644,14 +643,13 @@ virBitmapParseUnlimited(const char *str,
}
}
- return 0;
+ return bitmap;
error:
virReportError(VIR_ERR_INVALID_ARG,
_("Failed to parse bitmap '%s'"), str);
- virBitmapFree(*bitmap);
- *bitmap = NULL;
- return -1;
+ virBitmapFree(bitmap);
+ return NULL;
}
/**
diff --git a/src/util/virbitmap.h b/src/util/virbitmap.h
index 58e0ee6..3ba40ae 100644
--- a/src/util/virbitmap.h
+++ b/src/util/virbitmap.h
@@ -94,10 +94,9 @@ virBitmapParseSeparator(const char *str,
char terminator,
virBitmapPtr *bitmap,
size_t bitmapSize);
-int
-virBitmapParseUnlimited(const char *str,
- virBitmapPtr *bitmap)
- ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
+virBitmapPtr
+virBitmapParseUnlimited(const char *str)
+ ATTRIBUTE_NONNULL(1);
virBitmapPtr virBitmapNewCopy(virBitmapPtr src) ATTRIBUTE_NONNULL(1);
diff --git a/tests/testutils.c b/tests/testutils.c
index a596a83..13eff9e 100644
--- a/tests/testutils.c
+++ b/tests/testutils.c
@@ -926,7 +926,7 @@ int virTestMain(int argc,
}
if ((testRange = getenv("VIR_TEST_RANGE")) != NULL) {
- if (virBitmapParseUnlimited(testRange, &testBitmap) < 0) {
+ if (!(testBitmap = virBitmapParseUnlimited(testRange))) {
fprintf(stderr, "Cannot parse range %s\n", testRange);
return EXIT_FAILURE;
}
diff --git a/tests/virbitmaptest.c b/tests/virbitmaptest.c
index 3ee07ff..e007efc 100644
--- a/tests/virbitmaptest.c
+++ b/tests/virbitmaptest.c
@@ -650,7 +650,7 @@ test12(const void *opaque ATTRIBUTE_UNUSED)
TEST_MAP(151, "128");
virBitmapFree(map);
- if (virBitmapParseUnlimited("34,1023", &map) < 0)
+ if (!(map = virBitmapParseUnlimited("34,1023")))
goto cleanup;
TEST_MAP(1024, "34,1023");
--
2.9.3