diff --git a/tools/crm_resource.c b/tools/crm_resource.c index 9d9bb88..c40562e 100644 --- a/tools/crm_resource.c +++ b/tools/crm_resource.c @@ -1545,9 +1545,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; } @@ -2064,7 +2064,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"); } @@ -2079,10 +2084,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);