return FALSE; 
free_ha_date(start); free_ha_date(end); free_ha_date(now); return passed; 
test_date_expression(crm_data_t *time_expr){	ha_time_t *start = NULL;	ha_time_t *end = NULL;	const char *value = NULL;	char *value_copy = NULL;	char *value_copy_start = NULL;	const char *op = crm_element_value(time_expr, "operation");	ha_time_t *now = new_ha_date(TRUE);	crm_data_t *duration_spec = NULL;	crm_data_t *date_spec = NULL;	crm_debug_2("Testing expression: %s", ID(time_expr));		duration_spec = cl_get_struct(time_expr, "duration");	date_spec = cl_get_struct(time_expr, "date_spec");		value = crm_element_value(time_expr, "start");	if(value != NULL) {		value_copy = crm_strdup(value);		value_copy_start = value_copy;		start = parse_date(&value_copy);		crm_free(value_copy_start);	}	value = crm_element_value(time_expr, "end");	if(value != NULL) {		value_copy = crm_strdup(value);		value_copy_start = value_copy;		end = parse_date(&value_copy);		crm_free(value_copy_start);	}	if(start != NULL && end == NULL) { 		end = parse_xml_duration(start, duration_spec);	}	if(op == NULL) {		op = "in_range";	}		if(safe_str_eq(op, "date_spec") || safe_str_eq(op, "in_range")) {		if(start != NULL && compare_date(start, now) > 0) {			return FALSE;		} else if(end != NULL && compare_date(end, now) < 0) {			return FALSE;		}		if(safe_str_eq(op, "in_range")) {			return TRUE;		}		return cron_range_satisfied(now, date_spec);	} else if(safe_str_eq(op, "gt") && compare_date(start, now) < 0) {		return TRUE;	} else if(safe_str_eq(op, "lt") && compare_date(end, now) > 0) {		return TRUE;	} else if(safe_str_eq(op, "eq") && compare_date(start, now) == 0) {		return TRUE;	} else if(safe_str_eq(op, "neq") && compare_date(start, now) != 0) {		return TRUE;	}	return FALSE;}
8182	/local/tlutelli/issta_data/temp/c/2005_temp/2005/8182/6fc680e342975c59eee805c2fcfc8903b9d4a542/rules.c/buggy/crm/pengine/rules.c