shared: exec_command_build_json()
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
|
||||
#include "bus-common-errors.h"
|
||||
#include "cpu-set-util.h"
|
||||
#include "execute.h"
|
||||
#include "json-util.h"
|
||||
#include "rlimit-util.h"
|
||||
#include "varlink-common.h"
|
||||
@@ -104,3 +105,24 @@ empty:
|
||||
*ret = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int exec_command_build_json(sd_json_variant **ret, const char *name, void *userdata) {
|
||||
ExecCommand *cmd = ASSERT_PTR(userdata);
|
||||
|
||||
assert(ret);
|
||||
|
||||
if (isempty(cmd->path)) {
|
||||
*ret = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
return sd_json_buildo(
|
||||
ret,
|
||||
SD_JSON_BUILD_PAIR_STRING("path", cmd->path),
|
||||
JSON_BUILD_PAIR_STRV_NON_EMPTY("arguments", cmd->argv),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("ignoreFailure", FLAGS_SET(cmd->flags, EXEC_COMMAND_IGNORE_FAILURE)),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("privileged", FLAGS_SET(cmd->flags, EXEC_COMMAND_FULLY_PRIVILEGED)),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("noSetuid", FLAGS_SET(cmd->flags, EXEC_COMMAND_NO_SETUID)),
|
||||
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)));
|
||||
}
|
||||
|
||||
@@ -6,5 +6,5 @@
|
||||
int rlimit_build_json(sd_json_variant **ret, const char *name, void *userdata);
|
||||
int rlimit_table_build_json(sd_json_variant **ret, const char *name, void *userdata);
|
||||
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);
|
||||
|
||||
@@ -54,6 +54,23 @@ SD_VARLINK_DEFINE_STRUCT_TYPE(
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(RTPRIO, ResourceLimit, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(RTTIME, ResourceLimit, SD_VARLINK_NULLABLE));
|
||||
|
||||
SD_VARLINK_DEFINE_STRUCT_TYPE(
|
||||
ExecCommand,
|
||||
SD_VARLINK_FIELD_COMMENT("Path"),
|
||||
SD_VARLINK_DEFINE_FIELD(path, SD_VARLINK_STRING, 0),
|
||||
SD_VARLINK_FIELD_COMMENT("Arguments"),
|
||||
SD_VARLINK_DEFINE_FIELD(arguments, SD_VARLINK_STRING, SD_VARLINK_ARRAY|SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("Ignore failure of the command"),
|
||||
SD_VARLINK_DEFINE_FIELD(ignoreFailure, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("Run with full privileges"),
|
||||
SD_VARLINK_DEFINE_FIELD(privileged, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("Skip setuid handling"),
|
||||
SD_VARLINK_DEFINE_FIELD(noSetuid, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("Skip environment variable expansion"),
|
||||
SD_VARLINK_DEFINE_FIELD(noEnvExpand, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("Run via shell"),
|
||||
SD_VARLINK_DEFINE_FIELD(viaShell, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE));
|
||||
|
||||
SD_VARLINK_DEFINE_ENUM_TYPE(
|
||||
ExecOutputType,
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(inherit),
|
||||
|
||||
@@ -8,6 +8,7 @@ extern const sd_varlink_symbol vl_type_ProcessId;
|
||||
extern const sd_varlink_symbol vl_type_RateLimit;
|
||||
extern const sd_varlink_symbol vl_type_ResourceLimit;
|
||||
extern const sd_varlink_symbol vl_type_ResourceLimitTable;
|
||||
extern const sd_varlink_symbol vl_type_ExecCommand;
|
||||
extern const sd_varlink_symbol vl_type_ExecOutputType;
|
||||
extern const sd_varlink_symbol vl_type_CGroupPressureWatch;
|
||||
extern const sd_varlink_symbol vl_type_ManagedOOMMode;
|
||||
|
||||
Reference in New Issue
Block a user