shared: move exec_command_list_build_json() to varlink-common
exec_command_list_build_json() serializes a linked list of ExecCommand into a JSON array. It was static in varlink-unit.c (used by service_context_build_json) but is also needed by the upcoming socket context builder. Move it next to exec_command_build_json() in varlink-common where it can be shared.
This commit is contained in:
@@ -136,3 +136,26 @@ int exec_command_build_json(sd_json_variant **ret, const char *name, void *userd
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("noEnvExpand", FLAGS_SET(cmd->flags, EXEC_COMMAND_NO_ENV_EXPAND)),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("viaShell", FLAGS_SET(cmd->flags, EXEC_COMMAND_VIA_SHELL)));
|
||||
}
|
||||
|
||||
int exec_command_list_build_json(sd_json_variant **ret, const char *name, void *userdata) {
|
||||
_cleanup_(sd_json_variant_unrefp) sd_json_variant *v = NULL;
|
||||
ExecCommand *list = userdata;
|
||||
int r;
|
||||
|
||||
assert(ret);
|
||||
|
||||
LIST_FOREACH(command, c, list) {
|
||||
_cleanup_(sd_json_variant_unrefp) sd_json_variant *entry = NULL;
|
||||
|
||||
r = exec_command_build_json(&entry, /* name= */ NULL, c);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = sd_json_variant_append_array(&v, entry);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
*ret = TAKE_PTR(v);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -8,4 +8,5 @@ int rlimit_table_build_json(sd_json_variant **ret, const char *name, void *userd
|
||||
int cpuset_build_json(sd_json_variant **ret, const char *name, void *userdata);
|
||||
const char* varlink_error_id_from_bus_error(const sd_bus_error *e);
|
||||
int exec_command_build_json(sd_json_variant **ret, const char *name, void *userdata);
|
||||
int exec_command_list_build_json(sd_json_variant **ret, const char *name, void *userdata);
|
||||
int varlink_reply_bus_error(sd_varlink *link, int r, const sd_bus_error *e);
|
||||
|
||||
@@ -118,29 +118,6 @@ static int unit_conditions_build_json(sd_json_variant **ret, const char *name, v
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int exec_command_list_build_json(sd_json_variant **ret, const char *name, void *userdata) {
|
||||
_cleanup_(sd_json_variant_unrefp) sd_json_variant *v = NULL;
|
||||
ExecCommand *list = userdata;
|
||||
int r;
|
||||
|
||||
assert(ret);
|
||||
|
||||
LIST_FOREACH(command, c, list) {
|
||||
_cleanup_(sd_json_variant_unrefp) sd_json_variant *entry = NULL;
|
||||
|
||||
r = exec_command_build_json(&entry, /* name= */ NULL, c);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = sd_json_variant_append_array(&v, entry);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
*ret = TAKE_PTR(v);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* TODO: This covers only a small subset of a service object's properties. Extend to make more available to
|
||||
* consumers like Unit.StartTransient */
|
||||
static int service_context_build_json(sd_json_variant **ret, const char *name, void *userdata) {
|
||||
|
||||
Reference in New Issue
Block a user