aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/vty/utils.c9
-rw-r--r--tests/vty/vty_test.ok2
2 files changed, 6 insertions, 5 deletions
diff --git a/src/vty/utils.c b/src/vty/utils.c
index 88932fa8..d0ad431d 100644
--- a/src/vty/utils.c
+++ b/src/vty/utils.c
@@ -69,12 +69,13 @@ char *vty_cmd_string_from_valstr(void *ctx, const struct value_string *vals,
const char *end, int do_lower)
{
int len = 0, offset = 0, ret, rem;
- int size = strlen(prefix);
+ int size = strlen(prefix) + strlen(end);
+ int sep_len = strlen(sep);
const struct value_string *vs;
char *str;
for (vs = vals; vs->value || vs->str; vs++)
- size += strlen(vs->str) + 1;
+ size += strlen(vs->str) + sep_len;
rem = size;
str = talloc_zero_size(ctx, size);
@@ -102,8 +103,8 @@ char *vty_cmd_string_from_valstr(void *ctx, const struct value_string *vals,
OSMO_SNPRINTF_RET(ret, rem, offset, len);
}
}
- offset--; /* to remove the trailing | */
- rem++;
+ offset -= sep_len; /* to remove the trailing sep */
+ rem += sep_len;
ret = snprintf(str + offset, rem, "%s", end);
if (ret < 0)
diff --git a/tests/vty/vty_test.ok b/tests/vty/vty_test.ok
index 9ff68c88..baec2499 100644
--- a/tests/vty/vty_test.ok
+++ b/tests/vty/vty_test.ok
@@ -1,3 +1,3 @@
Going to test vty_cmd_string_from_valstr()
-Tested with %s-strings, resulting cmd = '[prefix%s%s%s%s%s][foo%s%s%s%s%s][sep%s%s%s%s%s]['
+Tested with %s-strings, resulting cmd = '[prefix%s%s%s%s%s][foo%s%s%s%s%s][sep%s%s%s%s%s][bar%s%s%s%s%s][end%s%s%s%s%s]'
All tests passed