MCPcopy Create free account
hub / github.com/ClusterLabs/pacemaker / get_xpath_object

Function get_xpath_object

lib/common/xml.c:2901–2943  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2899}
2900
2901xmlNode*
2902get_xpath_object(const char *xpath, xmlNode *xml_obj, int error_level)
2903{
2904 xmlNode *result = NULL;
2905 xmlXPathObjectPtr xpathObj = NULL;
2906 char *nodePath = NULL;
2907 char *matchNodePath = NULL;
2908
2909 if(xpath == NULL) {
2910 return xml_obj; /* or return NULL? */
2911 }
2912
2913 xpathObj = xpath_search(xml_obj, xpath);
2914 nodePath = (char *)xmlGetNodePath(xml_obj);
2915 if(xpathObj == NULL || xpathObj->nodesetval == NULL || xpathObj->nodesetval->nodeNr < 1) {
2916 do_crm_log(error_level, "No match for %s in %s", xpath, crm_str(nodePath));
2917 crm_log_xml_trace(xml_obj, "Unexpected Input");
2918
2919 } else if(xpathObj->nodesetval->nodeNr > 1) {
2920 int lpc = 0, max = xpathObj->nodesetval->nodeNr;
2921 do_crm_log(error_level, "Too many matches for %s in %s", xpath, crm_str(nodePath));
2922
2923 for(lpc = 0; lpc < max; lpc++) {
2924 xmlNode *match = getXpathResult(xpathObj, lpc);
2925 CRM_CHECK(match != NULL, continue);
2926
2927 matchNodePath = (char *)xmlGetNodePath(match);
2928 do_crm_log(error_level, "%s[%d] = %s", xpath, lpc, crm_str(matchNodePath));
2929 free(matchNodePath);
2930 }
2931 crm_log_xml_trace(xml_obj, "Bad Input");
2932
2933 } else {
2934 result = getXpathResult(xpathObj, 0);
2935 }
2936
2937 if(xpathObj) {
2938 xmlXPathFreeObject(xpathObj);
2939 }
2940 free(nodePath);
2941
2942 return result;
2943}
2944
2945const char *
2946crm_element_value(xmlNode *data, const char *name)

Callers 15

mainFunction · 0.85
print_statusFunction · 0.85
print_xml_statusFunction · 0.85
find_resourceFunction · 0.85
build_rsc_from_xmlFunction · 0.85
create_lrmd_cmdFunction · 0.85
send_generic_notifyFunction · 0.85
process_lrmd_rsc_execFunction · 0.85
process_lrmd_rsc_cancelFunction · 0.85
create_remote_stonith_opFunction · 0.85

Calls 2

xpath_searchFunction · 0.85
getXpathResultFunction · 0.85

Tested by

no test coverage detected