Merge binutils/aa_status.c: quiet verbose outputs when --json is specified

By default aa-status outputs with --verbose enabled - if --json is also
specified then aa-status would currently output in its first line "apparmor
module is loaded.":

aa-status --json | head -n1
apparmor module is loaded.

And only after this the actual json output would follow. This then results in
failures to parse this JSON output:

aa-status --json | jq .
parse error: Invalid numeric literal at line 1, column 9

This in turn then breaks tools / tests which expect the output of aa-status
--json to be purely json - e.g:
https://salsa.debian.org/apparmor-team/apparmor-profiles-extra/-/blob/debian/unstable/debian/tests/policy-is-loaded#L12

So ensure dprintf() etc do not output when --json is specified to restrict the
output of aa-status to pure JSON.

Signed-off-by: Alex Murray <alex.murray@canonical.com>

MR: https://gitlab.com/apparmor/apparmor/-/merge_requests/1097
Approved-by: Seth Arnold <seth.arnold@gmail.com>
Merged-by: John Johansen <john@jjmx.net>
This commit is contained in:
John Johansen 2023-08-28 22:07:17 +00:00
commit 11976c42e3

View file

@ -129,13 +129,13 @@ const char *process_statuses[] = {"enforce", "complain", "prompt", "kill", "unco
#define dprintf(...) \
do { \
if (verbose) \
if (verbose && !opt_json) \
printf(__VA_ARGS__); \
} while (0)
#define dfprintf(...) \
do { \
if (verbose) \
if (verbose && !opt_json) \
fprintf(__VA_ARGS__); \
} while (0)