示例#1
0
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);
}
示例#2
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;
}
示例#3
0
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);
}