int config_set_int(int intval, void *config_root, ...) { va_list args; xml_node_t *root = config_root; config_var_t *var; va_start(args, config_root); root = xml_node_vlookup(root, args, 1); va_end(args); if (!gconfig_level) { char *name; int r; name = xml_node_fullname(root); gconfig_level++; r = bind_check(BT_config_int, NULL, name, name, intval); gconfig_level--; free(name); if (r & BIND_RET_BREAK) return(-1); } var = root->client_data; if (var) { if (var->type == CONFIG_INT) *(int *)var->ptr = intval; } xml_node_set_int(intval, root, NULL); return(0); }
xml_node_t * xml_node_new_element_int(const char *ident, xml_node_t *parent, int value) { xml_node_t *node = xml_node_new(ident, parent); xml_node_set_int(node, value); return node; }
int xml_node_set_vars(xml_node_t *node, const char *fmt, ...) { va_list args; char *name, *strval; int intval; va_start(args, fmt); while (*fmt) { name = va_arg(args, char *); switch (*fmt) { case 's': strval = va_arg(args, char *); xml_node_set_str(strval, node, name, 0, 0); break; case 'i': intval = va_arg(args, int); xml_node_set_int(intval, node, name, 0, 0); break; } fmt++; } va_end(args); return(0); }