Blame SOURCES/038-feature-set.patch

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