xmlNodePtr xml_section = find_xml_node_nested(update_command, node_path, 3);
xml_section = find_xml_node_nested(update_command, node_path, 3);
updateList(xmlNodePtr local_cib,		   xmlNodePtr update_command, xmlNodePtr failed,		   int operation, const char *section){    const char *node_path[3];    node_path[0] = XML_CIB_TAG_FRAGMENT;    node_path[1] = XML_TAG_CIB;    node_path[2] = section;        xmlNodePtr xml_section =		find_xml_node_nested(update_command, node_path, 3);    if (section == NULL || xml_section == NULL)    {		cl_log(LOG_ERR, "Section %s not found in message."			   "  CIB update is corrupt, ignoring.", section);		return;    }    const char *type_check = NULL;    if (strcmp(section, XML_CIB_TAG_NODES) == 0)		type_check = XML_CIB_TAG_NODE;    else if (strcmp(section, XML_CIB_TAG_RESOURCES) == 0)		type_check = XML_CIB_TAG_RESOURCE;    else if (strcmp(section, XML_CIB_TAG_CONSTRAINTS) == 0)		type_check = XML_CIB_TAG_CONSTRAINT;    else if (strcmp(section, XML_CIB_TAG_STATUS) == 0)		type_check = XML_CIB_TAG_STATE;    else    {		cl_log(LOG_ERR,			   "Unknown section %s.  CIB update is corrupt, ignoring.",			   section);		// go home		return;    }        xmlNodePtr child = xml_section->children;        while(child != NULL)    {		cl_log(LOG_DEBUG, "#---#---# Performing action %d on (%s=%s).",			   operation, child->name, ID(child));			if (strcmp(type_check, child->name) == 0			&& strcmp(XML_CIB_TAG_NODE, child->name) == 0)		{			if (operation == CIB_OP_ADD)				conditional_add_failure(failed, child, operation,										addHaNode(local_cib, child));			else if (operation == CIB_OP_MODIFY)				conditional_add_failure(failed, child, operation,										updateHaNode(local_cib, child));			else 				conditional_add_failure(failed, child, operation,										delHaNode(local_cib, ID(child)));		}		else if (strcmp(type_check, child->name) == 0				 && strcmp(XML_CIB_TAG_RESOURCE, child->name) == 0)		{			if (operation == CIB_OP_ADD)				conditional_add_failure(failed, child, operation,										addResource(local_cib, child));			else if (operation == CIB_OP_MODIFY)				conditional_add_failure(failed, child, operation,										updateResource(local_cib, child));			else 				conditional_add_failure(failed, child, operation,										delResource(local_cib, ID(child)));		}		else if (strcmp(type_check, child->name) == 0				 && strcmp(XML_CIB_TAG_CONSTRAINT, child->name) == 0)		{			if (operation == CIB_OP_ADD)				conditional_add_failure(failed, child, operation,										addConstraint(local_cib, child));			else if (operation == CIB_OP_MODIFY)				conditional_add_failure(failed, child, operation,										updateConstraint(local_cib, child));			else 				conditional_add_failure(failed, child, operation,										delConstraint(local_cib, ID(child)));		}		else if (strcmp(type_check, child->name) == 0				 && strcmp(XML_CIB_TAG_STATE, child->name) == 0)		{			if (operation == CIB_OP_ADD)				conditional_add_failure(failed, child, operation,										addStatus(local_cib, child));			else if (operation == CIB_OP_MODIFY)				conditional_add_failure(failed, child, operation,										updateStatus(local_cib, child));			else 				conditional_add_failure(failed, child, operation,										delStatus(local_cib,												  ID(child),												  INSTANCE(child)));		}		else		{			cl_log(LOG_ERR,				   "Object (%s) was not for claimed section (%s)."				   "  CIB update is corrupt, ignoring.",				   child->name, type_check);		}			cl_log(LOG_DEBUG, "#---#---# Action %d on (%s=%s) complete.",			   operation, child->name, ID(child));		child = child->next;    }    }