op->rsc_id = crm_strdup(rsc->id);
op->rsc_id = crm_strdup(rsc_id);
construct_op(crm_data_t *rsc_op, lrm_rsc_t *rsc, const char *operation){	lrm_op_t *op = NULL;	const char *transition = NULL;	CRM_DEV_ASSERT(rsc != NULL);	crm_malloc0(op, sizeof(lrm_op_t));	op->op_type   = crm_strdup(operation);	op->op_status = LRM_OP_PENDING;	op->rc = -1;	op->rsc_id = crm_strdup(rsc->id);	op->interval = 0;	op->timeout  = 0;	op->start_delay = 0;	if(rsc_op == NULL) {		CRM_DEV_ASSERT(safe_str_eq(CRMD_ACTION_STOP, operation));		op->user_data = NULL;		op->user_data_len = 0;		op->params = NULL;		return op;	}	transition = crm_element_value(rsc_op, XML_ATTR_TRANSITION_KEY);	CRM_ASSERT(transition != NULL);		op->user_data = crm_strdup(transition);	op->user_data_len = 1+strlen(op->user_data);	op->params = xml2list(rsc_op);	if(op->params == NULL) {		CRM_DEV_ASSERT(safe_str_eq(CRMD_ACTION_STOP, operation));	}		op->interval = crm_atoi(g_hash_table_lookup(op->params,"interval"),"0");	op->timeout  = crm_atoi(g_hash_table_lookup(op->params, "timeout"),"0");	op->start_delay = crm_atoi(g_hash_table_lookup(					   op->params,"start_delay"),"0");		/* sanity */	if(op->interval < 0) {		op->interval = 0;		g_hash_table_replace(			op->params, crm_strdup("interval"), crm_strdup("0"));	}	if(op->timeout < 0) {		op->timeout = 0;		g_hash_table_replace(			op->params, crm_strdup("timeout"), crm_strdup("0"));	}	if(op->start_delay < 0) {		op->start_delay = 0;		g_hash_table_replace(			op->params, crm_strdup("start_delay"), crm_strdup("0"));	}	if(safe_str_eq(operation, CRMD_ACTION_START)	   || safe_str_eq(operation, CRMD_ACTION_STOP)) {		char *interval_s = g_hash_table_lookup(op->params, "interval"); 		CRM_DEV_ASSERT(op->interval == 0); 		CRM_DEV_ASSERT(interval_s == NULL);	}	return op;}