  xmlNodePtr child = root->children, lastMatch = NULL; 
findDeepNode(xmlNodePtr root, const char **search_path, int len){    // debug tools:    // xmlChar *	xmlGetNodePath		(xmlNodePtr node);    // long		xmlGetLineNo		(xmlNodePtr node);    if(root == NULL)    {	CRM_DEBUG("Will never find anything in NULL :)");	return NULL;    }            xmlNodePtr child = root->children, lastMatch = NULL;    int	j;    for (j=0; j < len; ++j)    {	if(search_path[j] == NULL) break;		CRM_DEBUG2("looking for (%s).", search_path[j]);		while(child != NULL)	{	    const char * child_name = (const char*)child->name;	    CRM_DEBUG2("comparing with (%s).", child->name);	    if(strcmp(child_name, search_path[j]) == 0)	    {		lastMatch = child;		child = lastMatch->children;		cl_log(LOG_DEBUG, "found node (%s) @line (%ld).", search_path[j], xmlGetLineNo(child));		break;	    }	    child = child->next;	}    }    if(j > 0 && lastMatch != NULL && strcmp(lastMatch->name, search_path[j-1]) == 0)    {	CRM_DEBUG2("returning node (%s).", xmlGetNodePath(lastMatch));	return lastMatch;    }    cl_log(LOG_DEBUG,	   "Could not find the full path to the node you specified."	   "  Closest point was node (%s).", xmlGetNodePath(lastMatch));    return NULL;    }
8182	/local/tlutelli/issta_data/temp/c/2005_temp/2005/8182/f4d2fcf957c8356f82db6dc54719d7d704bacb16/xmlutils.c/buggy/crm/common/xmlutils.c