crm_info("Transition status: Stopped%s%s", text?": ":"", text?text:""); 
te_log_action(LOG_INFO,"Transition status: Stopped%s%s", text?": ":"", text?text:""); 
send_complete(const char *text, crm_data_t *msg,	      te_reason_t reason, te_fsa_input_t input){		HA_Message *cmd = NULL;	const char *op = CRM_OP_TEABORT;	static te_reason_t last_reason = te_done;	static crm_data_t *last_msg = NULL;	static const char *last_text = NULL;	te_fsa_state_t last_state = te_fsa_state;	te_fsa_state = te_state_matrix[input][te_fsa_state];	if(te_fsa_state == s_abort_pending && num_cib_op_callbacks() == 0) {		te_fsa_state = te_state_matrix[i_cib_complete][te_fsa_state];	}		if(te_fsa_state != s_idle && input != i_cib_complete) {		if(last_msg) {			free_xml(last_msg);		}		last_msg = NULL;		if(msg != NULL) {			last_msg = copy_xml_node_recursive(msg);		}		last_text   = text;		last_reason = reason;		crm_info("CIB updates are pending.  Delay until they complete.");		return;	} else if(te_fsa_state != s_idle) {		crm_err("Delaying \"%s\" notification until we are idle.",text);		return;			} else if(input == i_cib_complete) {		msg    = last_msg;		text   = last_text;		reason = last_reason;	}		CRM_DEV_ASSERT(num_cib_op_callbacks() == 0);		switch(reason) {		case te_update:			crm_debug("Transition status: %s by CIB update: %s",				  last_state!=s_idle?"Aborted":"Triggered",				  text);			if(msg != NULL) {				if(safe_str_eq(crm_element_name(msg),					       XML_TAG_CIB)) {					crm_data_t *status = get_object_root(XML_CIB_TAG_STATUS, msg);					crm_data_t *generation = create_xml_node(NULL, XML_TAG_CIB);					crm_debug("Cause:"						 " full CIB replace/update");					copy_in_properties(generation, msg);					crm_log_xml_debug(generation, "[generation]");					crm_log_xml_debug(status, "[in ]");					free_xml(generation);									} else {					crm_log_xml_debug(msg, "Cause");				}			}			print_state(LOG_DEBUG);			break;		case te_halt:			crm_info("Transition status: Stopped%s%s",				 text?": ":"", text?text:"");			print_state(LOG_DEBUG);			op = CRM_OP_TECOMPLETE;			break;		case te_abort_confirmed:			crm_info("Transition status: Confirmed Stopped%s%s",				 text?": ":"", text?text:"");			print_state(LOG_DEBUG);			op = CRM_OP_TEABORTED;			break;		case te_abort:			crm_info("Transition status: Stopped%s%s",				 text?": ":"", text?text:"");			print_state(LOG_DEBUG);			break;		case te_done:			crm_info("Transition status: Complete%s%s",				 text?": ":"", text?text:"");			print_state(LOG_DEBUG);			op = CRM_OP_TECOMPLETE;			break;		case te_timeout:			crm_err("Transition status: Timed out after %dms",				transition_timer->timeout);			print_state(LOG_WARNING);			op = CRM_OP_TETIMEOUT;			break;		case te_failed:			crm_err("Transition status: Aborted by failed action: %s",				 text);			crm_log_xml_debug(msg, "Cause");			print_state(LOG_WARNING);			break;	}		initialize_graph();	cmd = create_request(		op, NULL, NULL, CRM_SYSTEM_DC, CRM_SYSTEM_TENGINE, NULL);	if(text != NULL) {		ha_msg_add(cmd, "message", text);	}	free_xml(last_msg);	#ifdef TESTING	if(reason == te_done) {		crm_log_message(LOG_INFO, cmd);	} else {		crm_log_message(LOG_ERR, cmd);	}		g_main_quit(mainloop);	return;#else	send_ipc_message(crm_ch, cmd);#endif	}
8182	/local/tlutelli/issta_data/temp/c/2005_temp/2005/8182/1217aadce0d4fba6ea0dfc7ce23631cc028d0004/utils.c/buggy/crm/tengine/utils.c