} else {
printf("%*s],\n", closure->indent, "");
}
- printstr_json(NULL, a->name, ": [\n", closure->indent);
+ printstr_json("\"", a->name, "\": [\n", closure->indent);
closure->indent += 4;
TAILQ_FOREACH(m, &a->members, entries) {
print_defaults_list_json(struct defaults *def, int indent)
{
char savech, *start, *end = def->val;
+ struct json_value value;
debug_decl(print_defaults_list_json, SUDO_DEBUG_UTIL)
- printstr_json("\"", def->var, "\": {\n", indent);
+ printf("%*s{\n", indent, "");
indent += 4;
+ value.type = JSON_STRING;
switch (def->op) {
case '+':
- printstr_json("\"", "list_add", "\": [\n", indent);
+ value.u.string = "list_add";
break;
case '-':
- printstr_json("\"", "list_remove", "\": [\n", indent);
+ value.u.string = "list_remove";
break;
case true:
- printstr_json("\"", "list_assign", "\": [\n", indent);
+ value.u.string = "list_assign";
break;
default:
warningx("internal error: unexpected list op %d", def->op);
- printstr_json("\"", "unsupported", "\": [\n", indent);
+ value.u.string = "unsupported";
break;
}
+ print_pair_json(NULL, "operation", &value, ",\n", indent);
+ value.u.string = def->var;
+ print_pair_json(NULL, "name", &value, ",\n", indent);
+ printstr_json("\"", "value", "\": [\n", indent);
indent += 4;
print_indent(indent);
/* Split value into multiple space-separated words. */
if (cs->tags.nopasswd != UNSPEC || cs->tags.noexec != UNSPEC ||
cs->tags.setenv != UNSPEC || cs->tags.log_input != UNSPEC ||
cs->tags.log_output != UNSPEC) {
- printf("%*s\"Options\": [\n", indent, "");
+ printf("%*s\"Options\": {\n", indent, "");
indent += 4;
if (cs->tags.nopasswd != UNSPEC) {
value.type = JSON_BOOL;
print_pair_json(NULL, "log_output", &value, "\n", indent);
}
indent -= 4;
- printf("%*s],\n", indent, "");
+ printf("%*s},\n", indent, "");
}
#ifdef HAVE_SELINUX
TAILQ_NEXT(m, entries) == NULL, indent);
}
indent -= 4;
- printf("%*s]\n", indent, "");
+ printf("%*s],\n", indent, "");
/* Print hosts list. */
printf("%*s\"Host_List\": [\n", indent, "");
TAILQ_NEXT(m, entries) == NULL, indent);
}
indent -= 4;
- printf("%*s]\n", indent, "");
+ printf("%*s],\n", indent, "");
/* Print commands. */
printf("%*s\"Cmnd_Specs\": [\n", indent, "");