xmlNodePtr graph = NULL; const char *sys_to = xmlGetProp(msg, XML_ATTR_SYSTO); const char *ref    = xmlGetProp(msg, XML_ATTR_REFERENCE); const char *op     = get_xml_attr( msg, XML_TAG_OPTIONS, XML_ATTR_OP, FALSE);
const char *sys_to = cl_get_string(msg, F_CRM_SYS_TO); const char *ref    = cl_get_string(msg, XML_ATTR_REFERENCE); const char *op     = cl_get_string(msg, F_CRM_TASK);
process_te_message(xmlNodePtr msg, IPC_Channel *sender){	xmlNodePtr graph = NULL;	const char *sys_to = xmlGetProp(msg, XML_ATTR_SYSTO);	const char *ref    = xmlGetProp(msg, XML_ATTR_REFERENCE);	const char *op     = get_xml_attr(		msg, XML_TAG_OPTIONS, XML_ATTR_OP, FALSE);	crm_debug("Recieved %s (%s) message", op, ref);	if (MSG_LOG && msg_te_strm == NULL) {		struct stat buf;		if(stat(DEVEL_DIR, &buf) != 0) {			cl_perror("Stat of %s failed... exiting", DEVEL_DIR);			exit(100);		}		msg_te_strm = fopen(DEVEL_DIR"/te.log", "w");	}#ifdef MSG_LOG	{		char *xml = dump_xml_formatted(msg);		fprintf(msg_te_strm, "[Input %s]\t%s\n",			op, xml);		fflush(msg_te_strm);		crm_free(xml);	}#endif		if(safe_str_eq(xmlGetProp(msg, XML_ATTR_MSGTYPE), XML_ATTR_RESPONSE)	   && safe_str_neq(op, CRM_OP_EVENTCC)) {#ifdef MSG_LOG	fprintf(msg_te_strm, "[Result ]\tDiscarded\n");	fflush(msg_te_strm);#endif		crm_info("Message was a response not a request.  Discarding");		return TRUE;	}	crm_debug("Processing %s (%s) message", op, ref);		if(op == NULL){		/* error */	} else if(strcmp(op, CRM_OP_HELLO) == 0) {		/* ignore */	} else if(sys_to == NULL || strcmp(sys_to, CRM_SYSTEM_TENGINE) != 0) {		crm_verbose("Bad sys-to %s", crm_str(sys_to));		return FALSE;			} else if(strcmp(op, CRM_OP_TRANSITION) == 0) {		crm_trace("Initializing graph...");		initialize_graph();		graph = find_xml_node(msg, XML_TAG_GRAPH, TRUE);		crm_trace("Unpacking graph...");		unpack_graph(graph);		crm_trace("Initiating transition...");		in_transition = TRUE;		if(initiate_transition() == FALSE) {			/* nothing to be done.. means we're done. */			crm_info("No actions to be taken..."			       " transition compelte.");		}		crm_trace("Processing complete...");			} else if(strcmp(op, CRM_OP_TEABORT) == 0) {		initialize_graph();	} else if(strcmp(op, CRM_OP_QUIT) == 0) {		crm_info("Received quit message, terminating");		exit(0);			} else if(in_transition == FALSE) {		crm_info("Received event_cc while not in a transition..."			 "  Poking the Policy Engine");		send_abort("Initiate a transition", NULL);	}	crm_debug("finished processing message");	print_state(FALSE);		return TRUE;}