From 98589d8e1ef9b57d806702b9968ff7e5560e9c8f Mon Sep 17 00:00:00 2001 From: Chris Lumens Date: Fri, 12 Feb 2021 11:51:16 -0500 Subject: [PATCH] Low: Fix a problem with crm_resource exit code handling. If no output is produced but an error message is printed (like, when an inactive resource is provided on the command line), don't print the error message for the pcmk_rc_no_output error code. It's weird to see output and a message about no output at the same time. Similarly, don't print an "Error: OK" message when usage is printed. --- tools/crm_resource.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tools/crm_resource.c b/tools/crm_resource.c index 7d2f0f6..29b0a04 100644 --- a/tools/crm_resource.c +++ b/tools/crm_resource.c @@ -1534,9 +1534,9 @@ main(int argc, char **argv) rc = pcmk__output_new(&out, args->output_ty, args->output_dest, argv); if (rc != pcmk_rc_ok) { - fprintf(stderr, "Error creating output format %s: %s\n", - args->output_ty, pcmk_rc_str(rc)); exit_code = CRM_EX_ERROR; + g_set_error(&error, PCMK__EXITC_ERROR, exit_code, "Error creating output format %s: %s", + args->output_ty, pcmk_rc_str(rc)); goto done; } @@ -2039,7 +2039,12 @@ main(int argc, char **argv) */ done: - if (rc != pcmk_rc_ok) { + /* Don't do any of this for pcmk_rc_no_output (doesn't make sense to show an + * error message for no output) or for CRM_EX_USAGE (we don't want to show + * an "error: OK" message from pcmk_rc_str). + */ + if ((rc != pcmk_rc_ok && rc != pcmk_rc_no_output) || + (exit_code != CRM_EX_OK && exit_code != CRM_EX_USAGE)) { if (rc == pcmk_rc_no_quorum) { g_prefix_error(&error, "To ignore quorum, use the force option.\n"); } @@ -2054,10 +2059,10 @@ done: g_set_error(&error, PCMK__RC_ERROR, rc, "Error performing operation: %s", pcmk_rc_str(rc)); } + } - if (exit_code == CRM_EX_OK) { - exit_code = pcmk_rc2exitc(rc); - } + if (exit_code == CRM_EX_OK) { + exit_code = pcmk_rc2exitc(rc); } g_free(options.host_uname); -- 1.8.3.1