File pacemaker-crm_resource-show-metadata-error-messages.patch of Package pacemaker.8397

commit 97827b9c0dba86a77cc1889c67fe0b04dc0c897b
Author: Ken Gaillot <kgaillot@redhat.com>
Date:   Fri Oct 6 16:48:58 2017 -0500

    Low: tools: improve crm_resource --show-metadata error messages
    
    Closes CLBZ#5287

diff --git a/tools/crm_resource.c b/tools/crm_resource.c
index 91806d419..021df7b08 100644
--- a/tools/crm_resource.c
+++ b/tools/crm_resource.c
@@ -459,32 +459,28 @@ main(int argc, char **argv)
                     return crm_exit(rc);
 
                 } else if (safe_str_eq("show-metadata", longname)) {
-                    char standard[512];
-                    char provider[512];
-                    char type[512];
+                    char *standard = NULL;
+                    char *provider = NULL;
+                    char *type = NULL;
                     char *metadata = NULL;
                     lrmd_t *lrmd_conn = lrmd_api_new();
 
-                    rc = sscanf(optarg, "%[^:]:%[^:]:%s", standard, provider, type);
-                    if (rc == 3) {
-                        rc = lrmd_conn->cmds->get_metadata(lrmd_conn, standard, provider, type,
+                    rc = crm_parse_agent_spec(optarg, &standard, &provider, &type);
+                    if (rc == pcmk_ok) {
+                        rc = lrmd_conn->cmds->get_metadata(lrmd_conn, standard,
+                                                           provider, type,
                                                            &metadata, 0);
-
-                    } else if (rc == 2) {
-                        rc = lrmd_conn->cmds->get_metadata(lrmd_conn, standard, NULL, provider,
-                                                           &metadata, 0);
-
-                    } else if (rc < 2) {
+                    } else {
                         fprintf(stderr,
-                                "Please specify standard:type or standard:provider:type, not %s\n",
+                                "'%s' is not a valid agent specification\n",
                                 optarg);
-                        rc = -EINVAL;
                     }
 
                     if (metadata) {
                         printf("%s\n", metadata);
                     } else {
-                        fprintf(stderr, "Metadata query for %s failed: %d\n", optarg, rc);
+                        fprintf(stderr, "Metadata query for %s failed: %s\n",
+                                optarg, pcmk_strerror(rc));
                     }
                     lrmd_api_delete(lrmd_conn);
                     return crm_exit(rc);
openSUSE Build Service is sponsored by