From 31af92a9aa800beff4dee1ba35e871feff04fad3 Mon Sep 17 00:00:00 2001 From: Bartosz Golaszewski Date: Wed, 22 Feb 2017 16:18:30 +0100 Subject: [PATCH] tests: implement xcasprintf() Add another flavor of xasprintf() which can also return the number of bytes written to the created string. Signed-off-by: Bartosz Golaszewski --- tests/unit/gpiod-unit.c | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/tests/unit/gpiod-unit.c b/tests/unit/gpiod-unit.c index 0e3f79b..44dc763 100644 --- a/tests/unit/gpiod-unit.c +++ b/tests/unit/gpiod-unit.c @@ -135,6 +135,22 @@ static GU_PRINTF(1, 2) char * xasprintf(const char *fmt, ...) return ret; } +static GU_PRINTF(2, 3) char * xcasprintf(size_t *count, const char *fmt, ...) +{ + int status; + va_list va; + char *ret; + + va_start(va, fmt); + status = vasprintf(&ret, fmt, va); + if (status < 0) + die_perr("asprintf"); + va_end(va); + + *count = status; + return ret; +} + static void check_chip_index(unsigned int index) { if (index >= globals.test_ctx.num_chips) @@ -247,8 +263,8 @@ static void check_gpio_mockup(void) static void test_load_module(struct gu_chip_descr *descr) { char *modarg, *tmp_modarg; + size_t modarg_len, count; char **line_sizes; - size_t modarg_len; unsigned int i; int status; @@ -256,12 +272,9 @@ static void test_load_module(struct gu_chip_descr *descr) modarg_len = strlen("gpio_mockup_ranges="); for (i = 0; i < descr->num_chips; i++) { - status = asprintf(&line_sizes[i], - "-1,%u,", descr->num_lines[i]); - if (status < 0) - die_perr("asprintf"); - - modarg_len += status; + line_sizes[i] = xcasprintf(&count, "-1,%u,", + descr->num_lines[i]); + modarg_len += count; } modarg = xzalloc(modarg_len + 1); -- 2.30.2