/* radare - LGPL - Copyright 2006-2011 pancake */ #include "r_config.h" // XXX spaguetti code lives here static int r_config_setter_q(void *data) { RConfigNode *node = data; *(node->cb_ptr_q) = node->i_value; return true; } static int r_config_setter_i(void *data) { RConfigNode *node = data; *(node->cb_ptr_i) = node->i_value; return true; } static int r_config_setter_s(void *data) { RConfigNode *node = data; if (!node->value || !*node->value) { free (*node->cb_ptr_s); *node->cb_ptr_s = NULL; } else { *node->cb_ptr_s = r_str_dup (*node->cb_ptr_s, node->value); } return true; } R_API int r_config_set_setter_q(RConfig *cfg, const char *name, ut64 *ptr) { RConfigNode *node = r_config_node_get (cfg, name); if (node) { node->cb_ptr_q = ptr; node->setter = (void *) &r_config_setter_q; return true; } return false; } R_API int r_config_set_setter_i(RConfig *cfg, const char *name, int *ptr) { RConfigNode *node = r_config_node_get (cfg, name); if (node) { node->cb_ptr_i = ptr; node->setter = (void *) &r_config_setter_i; return true; } return false; } R_API int r_config_set_setter_s(RConfig *cfg, const char *name, char * *ptr) { RConfigNode *node = r_config_node_get (cfg, name); if (node) { node->cb_ptr_s = ptr; node->setter = (void *) &r_config_setter_s; return true; } return false; }