示例#1
0
static int backwards_compatibility(const char *module, CONFIG_NODE *node,
				   CONFIG_NODE *parent)
{
	const char *new_key, *new_module;
	CONFIG_NODE *new_node;
	char *new_value;

	new_value = NULL; new_key = NULL; new_module = NULL;

	/* fe-text term_type -> fe-common/core term_charset - for 0.8.10-> */
	if (g_strcmp0(module, "fe-text") == 0) {
		if (g_ascii_strcasecmp(node->key, "term_type") == 0 ||
		    /* kludge for cvs-version where term_charset was in fe-text */
		    g_ascii_strcasecmp(node->key, "term_charset") == 0) {
			new_module = "fe-common/core";
			new_key = "term_charset";
			new_value = !is_valid_charset(node->value) ? NULL :
				g_strdup(node->value);
			new_node = iconfig_node_traverse("settings", FALSE);
			new_node = new_node == NULL ? NULL :
				iconfig_node_section(new_node, new_module, -1);

			config_node_set_str(mainconfig, new_node,
					    new_key, new_value);
			/* remove old */
			config_node_set_str(mainconfig, parent,
					    node->key, NULL);
			g_free(new_value);
			config_changed = TRUE;
			return new_key != NULL;
		} else if (g_ascii_strcasecmp(node->key, "actlist_moves") == 0 &&
			   node->value != NULL && g_ascii_strcasecmp(node->value, "yes") == 0) {
			config_node_set_str(mainconfig, parent, "actlist_sort", "recent");
			config_node_set_str(mainconfig, parent, node->key, NULL);
			config_changed = TRUE;
			return TRUE;
		}
	}
	return new_key != NULL;
}
示例#2
0
static int backwards_compatibility(const char *module, CONFIG_NODE *node,
				   CONFIG_NODE *parent)
{
	const char *new_key, *new_module;
	CONFIG_NODE *new_node;
	char *new_value;
	int old_value;

	new_value = NULL; new_key = NULL; new_module = NULL;

	/* fe-text term_type -> fe-common/core term_charset - for 0.8.10-> */
	if (strcmp(module, "fe-text") == 0) {
		if (strcasecmp(node->key, "term_type") == 0 ||
		    /* kludge for cvs-version where term_charset was in fe-text */
		    strcasecmp(node->key, "term_charset") == 0) {
			new_module = "fe-common/core";
			new_key = "term_charset";
			new_value = !is_valid_charset(node->value) ? NULL :
				g_strdup(node->value);
			new_node = iconfig_node_traverse("settings", FALSE);
			new_node = new_node == NULL ? NULL :
				config_node_section(new_node, new_module, -1);

			config_node_set_str(mainconfig, new_node,
					    new_key, new_value);
			/* remove old */
			config_node_set_str(mainconfig, parent,
					    node->key, NULL);
			g_free(new_value);
			config_changed = TRUE;
			return new_key != NULL;
		}
	}
	new_value = NULL, new_key = NULL;
	/* FIXME: remove later - for 0.8.6 -> */
	if (node->value == NULL || !is_numeric(node->value, '\0'))
		return FALSE;

	old_value = atoi(node->value);

	if (strcmp(module, "fe-text") == 0) {
		if (strcasecmp(node->key, "lag_min_show") == 0)
			new_value = g_strdup_printf("%dms", old_value*10);
		else if (strcasecmp(node->key, "scrollback_hours") == 0) {
			new_value = g_strdup_printf("%dh", old_value);
			new_key = "scrollback_time";
		}
	} else if (strcmp(module, "irc/core") == 0) {
		if (strcasecmp(node->key, "cmd_queue_speed") == 0)
			new_value = g_strdup_printf("%dms", old_value);
	} else if (strcmp(module, "irc/dcc") == 0) {
		if (strcasecmp(node->key, "dcc_autoget_max_size") == 0)
			new_value = g_strdup_printf("%dk", old_value);
	} else if (strcmp(module, "irc/notify") == 0) {
		if (strcasecmp(node->key, "notify_idle_time") == 0)
			new_value = g_strdup_printf("%dmin", old_value);
	} else if (strcmp(module, "core") == 0) {
		if (strcasecmp(node->key, "write_buffer_mins") == 0) {
			new_value = g_strdup_printf("%dmin", old_value);
			new_key = "write_buffer_timeout";
		} else if (strcasecmp(node->key, "write_buffer_kb") == 0) {
			new_value = g_strdup_printf("%dk", old_value);
			new_key = "write_buffer_size";
		}
	}

	if (new_key != NULL || new_value != NULL) {
		config_node_set_str(mainconfig, parent,
				    new_key != NULL ? new_key : node->key,
				    new_value != NULL ?
				    new_value : node->value);
		if (new_key != NULL) {
			/* remove old */
			config_node_set_str(mainconfig, parent,
					    node->key, NULL);
		}
		config_changed = TRUE;
		g_free(new_value);
	}
	return new_key != NULL;
}