} else if(h_val != NULL && value != NULL) { if(invert == FALSE && safe_str_eq(value, h_val)) { 
} else if(safe_str_eq(type, "number")) { float value_f = atof(value); float h_val_f = atof(h_val);  if(h_val_f < value_f) { cmp = -1; } else if(h_val_f > value_f)  { cmp = 1; } else { cmp = 0; }  } else if(safe_str_eq(type, "version")) { crm_err("Version comparisions are not yet supported"); continue; }  } else if(value == NULL && h_val == NULL) { cmp = 0; } else if(value == NULL) { cmp = 1; } else { cmp = -1; }  if(safe_str_eq(op, "exists")) { if(h_val != NULL) accept = TRUE;  } else if(safe_str_eq(op, "notexists")) { if(h_val == NULL) accept = TRUE;  } else if(safe_str_eq(op, "eq")) { if((h_val == value) || cmp == 0) 
match_attrs(const char *attr_exp, GListPtr node_list, gboolean invert){	int lpc = 0;	GListPtr result = NULL;	char *name = NULL, *value = NULL;		if(decodeNVpair(attr_exp, ':', &name, &value) == FALSE) {		return NULL;	} else if(name == NULL) {		crm_err("Attribute %s was invalid", name);		return NULL;	}	slist_iter(		node, node_t, node_list, lpc,		gboolean accept = FALSE;				const char *h_val = (const char*)g_hash_table_lookup(			node->details->attrs, name);		if(h_val != NULL && value == NULL && invert == FALSE) {			accept = TRUE;		} else if(h_val == NULL && value == NULL && invert) {			accept = TRUE;		} else if(h_val != NULL && value != NULL) {			if(invert == FALSE && safe_str_eq(value, h_val)) {				accept = TRUE;			} else if(invert && safe_str_neq(value, h_val)) {				accept = TRUE;			}		}				if(accept) {			result = g_list_append(result, node);		}		   		);		return result;}
8182	/local/tlutelli/issta_data/temp/c/2005_temp/2005/8182/68c2573f186a540517c17f9932a3816b84039ca5/unpack.c/clean/crm/pengine/unpack.c