File pacemaker-liblrmd-add-function-to-create-resource-info-structure.patch of Package pacemaker.8397

commit 71d01e9707c592e2955e02da51e1b908fc60ad1e
Author: Ken Gaillot <kgaillot@redhat.com>
Date:   Thu Mar 1 12:36:23 2018 -0600

    Refactor: liblrmd: add function to create resource info structure
    
    reduces code duplication, enhances readability, and allows reuse

Index: pacemaker-1.1.18+20180126.bfe4e8042/include/crm/lrmd.h
===================================================================
--- pacemaker-1.1.18+20180126.bfe4e8042.orig/include/crm/lrmd.h
+++ pacemaker-1.1.18+20180126.bfe4e8042/include/crm/lrmd.h
@@ -265,6 +265,8 @@ typedef struct lrmd_rsc_info_s {
     char *provider;
 } lrmd_rsc_info_t;
 
+lrmd_rsc_info_t *lrmd_new_rsc_info(const char *rsc_id, const char *standard,
+                                   const char *provider, const char *type);
 lrmd_rsc_info_t *lrmd_copy_rsc_info(lrmd_rsc_info_t * rsc_info);
 void lrmd_free_rsc_info(lrmd_rsc_info_t * rsc_info);
 
Index: pacemaker-1.1.18+20180126.bfe4e8042/lib/lrmd/lrmd_client.c
===================================================================
--- pacemaker-1.1.18+20180126.bfe4e8042.orig/lib/lrmd/lrmd_client.c
+++ pacemaker-1.1.18+20180126.bfe4e8042/lib/lrmd/lrmd_client.c
@@ -1455,20 +1455,36 @@ lrmd_api_unregister_rsc(lrmd_t * lrmd, c
 }
 
 lrmd_rsc_info_t *
-lrmd_copy_rsc_info(lrmd_rsc_info_t * rsc_info)
+lrmd_new_rsc_info(const char *rsc_id, const char *standard,
+                  const char *provider, const char *type)
 {
-    lrmd_rsc_info_t *copy = NULL;
-
-    copy = calloc(1, sizeof(lrmd_rsc_info_t));
+    lrmd_rsc_info_t *rsc_info = calloc(1, sizeof(lrmd_rsc_info_t));
 
-    copy->id = strdup(rsc_info->id);
-    copy->type = strdup(rsc_info->type);
-    copy->class = strdup(rsc_info->class);
-    if (rsc_info->provider) {
-        copy->provider = strdup(rsc_info->provider);
+    CRM_ASSERT(rsc_info);
+    if (rsc_id) {
+        rsc_info->id = strdup(rsc_id);
+        CRM_ASSERT(rsc_info->id);
+    }
+    if (standard) {
+        rsc_info->class = strdup(standard);
+        CRM_ASSERT(rsc_info->class);
+    }
+    if (provider) {
+        rsc_info->provider = strdup(provider);
+        CRM_ASSERT(rsc_info->provider);
     }
+    if (type) {
+        rsc_info->type = strdup(type);
+        CRM_ASSERT(rsc_info->type);
+    }
+    return rsc_info;
+}
 
-    return copy;
+lrmd_rsc_info_t *
+lrmd_copy_rsc_info(lrmd_rsc_info_t * rsc_info)
+{
+    return lrmd_new_rsc_info(rsc_info->id, rsc_info->class,
+                             rsc_info->provider, rsc_info->type);
 }
 
 void
@@ -1515,14 +1531,7 @@ lrmd_api_get_rsc_info(lrmd_t * lrmd, con
         return NULL;
     }
 
-    rsc_info = calloc(1, sizeof(lrmd_rsc_info_t));
-    rsc_info->id = strdup(rsc_id);
-    rsc_info->class = strdup(class);
-    if (provider) {
-        rsc_info->provider = strdup(provider);
-    }
-    rsc_info->type = strdup(type);
-
+    rsc_info = lrmd_new_rsc_info(rsc_id, class, provider, type);
     free_xml(output);
     return rsc_info;
 }
openSUSE Build Service is sponsored by