update     = get_message_xml(msg, F_CIB_UPDATE); pre_update = get_message_xml(msg, F_CIB_EXISTING);
cibmon_pre_notify(const char *event, HA_Message *msg) {	int rc = -1;	const char *op       = NULL;	const char *id       = NULL; 	const char *type     = NULL;	crm_data_t *update     = NULL;	crm_data_t *pre_update = NULL;	if(msg == NULL) {		crm_err("NULL update");		return;	}		op       = cl_get_string(msg, F_CIB_OPERATION);	id       = cl_get_string(msg, F_CIB_OBJID);	type     = cl_get_string(msg, F_CIB_OBJTYPE);	update     = get_message_xml(msg, F_CIB_UPDATE);	pre_update = get_message_xml(msg, F_CIB_EXISTING);	ha_msg_value_int(msg, F_CIB_RC, &rc);	update_depth++;	last_notify_pre = TRUE;		if(update_depth > 1 && intermediate_changes == FALSE) {		crm_trace("[%s] Ignoring intermediate update", event);		return;	}	if(update != NULL) {		crm_devel(UPDATE_PREFIX"[%s] Performing %s on <%s%s%s>",			    event, op, type, id?" id=":"", id?id:"");		print_xml_formatted(LOG_INSANE,  UPDATE_PREFIX,				    update, "Update");			} else if(update == NULL) {		crm_info(UPDATE_PREFIX"[%s] Performing operation %s (on section=%s)",			 event, op, crm_str(type));	}	print_xml_formatted(LOG_DEV,  UPDATE_PREFIX,			    pre_update, "Existing Object");}