libsrx: new helper, srx_set_bool()

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
Joachim Wiberg
2025-10-10 12:57:22 +02:00
parent 4790806d8d
commit d1f7abcc3e
2 changed files with 42 additions and 9 deletions
+40 -9
View File
@@ -149,28 +149,59 @@ bool srx_isset(sr_session_ctx_t *session, const char *fmt, ...)
return isset;
}
int srx_set_item(sr_session_ctx_t *session, const sr_val_t *val, sr_edit_options_t opts,
const char *fmt, ...)
static int set_vaitem(sr_session_ctx_t *session, const sr_val_t *val, sr_edit_options_t opts,
const char *fmt, va_list ap)
{
va_list apdup;
char *xpath;
va_list ap;
size_t len;
va_start(ap, fmt);
len = vsnprintf(NULL, 0, fmt, ap) + 1;
va_end(ap);
va_copy(apdup, ap);
len = vsnprintf(NULL, 0, fmt, apdup) + 1;
va_end(apdup);
xpath = alloca(len);
if (!xpath)
return -1;
va_start(ap, fmt);
vsnprintf(xpath, len, fmt, ap);
va_end(ap);
va_copy(apdup, ap);
vsnprintf(xpath, len, fmt, apdup);
va_end(apdup);
return sr_set_item(session, xpath, val, opts);
}
int srx_set_item(sr_session_ctx_t *session, const sr_val_t *val, sr_edit_options_t opts,
const char *fmt, ...)
{
va_list ap;
int rc;
va_start(ap, fmt);
rc = set_vaitem(session, val, opts, fmt, ap);
va_end(ap);
return rc;
}
int srx_set_bool(sr_session_ctx_t *session, bool ena, sr_edit_options_t opts,
const char *fmt, ...)
{
sr_val_t val = {
.type = SR_BOOL_T,
.data.bool_val = ena
};
va_list ap;
int rc;
va_start(ap, fmt);
rc = set_vaitem(session, &val, opts, fmt, ap);
va_end(ap);
return rc;
}
int srx_set_str(sr_session_ctx_t *session, const char *str, sr_edit_options_t opts,
const char *fmt, ...)
{
+2
View File
@@ -20,6 +20,8 @@ int srx_set_item(sr_session_ctx_t *, const sr_val_t *, sr_edit_options_t, const
__attribute__ ((format (printf, 4, 5)));
int srx_set_str(sr_session_ctx_t *, const char *, sr_edit_options_t, const char *fmt, ...)
__attribute__ ((format (printf, 4, 5)));
int srx_set_bool(sr_session_ctx_t *session, bool ena, sr_edit_options_t opts, const char *fmt, ...)
__attribute__ ((format (printf, 4, 5)));
char *srx_get_str (sr_session_ctx_t *session, const char *fmt, ...)
__attribute__ ((format (printf, 2, 3)));