示例#1
0
static void
purple_smileys_load(void)
{
	xmlnode *root_node, *profile_node;
	xmlnode *smileyset_node = NULL;
	xmlnode *smiley_node;

	smileys_loaded = TRUE;

	root_node = purple_util_read_xml_from_file(XML_FILE_NAME,
			_(SMILEYS_LOG_ID));

	if (root_node == NULL)
		return;

	/* See the top comments above to understand why initial tag elements
	 * are not being considered by now. */
	profile_node = xmlnode_get_child(root_node, XML_PROFILE_TAG);
	if (profile_node)
		smileyset_node = xmlnode_get_child(profile_node, XML_SMILEY_SET_TAG);

	if (smileyset_node) {
		smiley_node = xmlnode_get_child(smileyset_node, XML_SMILEY_TAG);
		for (; smiley_node != NULL;
				smiley_node = xmlnode_get_next_twin(smiley_node)) {
			PurpleSmiley *smiley;

			smiley = parse_smiley(smiley_node);
		}
	}

	xmlnode_free(root_node);
}
示例#2
0
gboolean gfire_game_load_config_xml(gboolean p_force)
{
	if(!p_force && gfire_games_config)
		return TRUE;

	xmlnode *node = NULL;

	gchar *filename = g_build_filename(purple_user_dir(), "gfire_game_config.xml", NULL);
	if(filename)
	{
		purple_debug(PURPLE_DEBUG_INFO, "gfire", "Loading Game Launch Data from: %s\n", filename);
		g_free(filename);
	}

	node = purple_util_read_xml_from_file("gfire_game_config.xml", "Gfire Game Config List");
	if(!node)
	{
		purple_debug(PURPLE_DEBUG_ERROR, "gfire", "gfire_game_load_config_xml: Couldn't load game config.\n");
		return FALSE;
	}

	// Check for a valid game config
	if(g_utf8_collate(node->name, "game_config"))
	{
		xmlnode_free(node);
		return FALSE;
	}

	// Check for a valid version
	if(!xmlnode_get_attrib(node, "version") || g_utf8_collate(xmlnode_get_attrib(node, "version"), "2"))
	{
		xmlnode_free(node);
		return FALSE;
	}

	// Delete all old configurations
	gfire_game_config_cleanup();

	// Parse all games
	xmlnode *game_node = xmlnode_get_child(node, "game");
	while(game_node)
	{
		gfire_game_configuration *gconf = gfire_game_configuration_create_from_xml(game_node);
		if(gconf)
			gfire_games_config = g_list_append(gfire_games_config, gconf);

		game_node = xmlnode_get_next_twin(game_node);
	}

	gfire_game_config_sort();

	xmlnode_free(node);

	return TRUE;
}
示例#3
0
gboolean gfire_game_load_games_xml()
{
	xmlnode *node = NULL;

	gchar *filename = g_build_filename(purple_user_dir(), "gfire_games.xml", NULL);
	if(filename)
	{
		purple_debug(PURPLE_DEBUG_INFO, "gfire", "Loading Game Data from: %s\n", filename);
		g_free(filename);
	}

	node = purple_util_read_xml_from_file("gfire_games.xml", "Gfire Games List");
	if(!node)
	{
		purple_debug(PURPLE_DEBUG_ERROR, "gfire", "gfire_game_load_games_xml: Couldn't load game list.\n");
		return FALSE;
	}

	// Delete all old games
	gfire_game_cleanup();

	// Read the games version
	if(g_utf8_collate(node->name, "games"))
	{
		xmlnode_free(node);
		return FALSE;
	}

	if(!xmlnode_get_attrib(node, "version"))
		gfire_games_version = 0;
	else
		sscanf(xmlnode_get_attrib(node, "version"), "%u", &gfire_games_version);

	// Read all games
	xmlnode *game_node = xmlnode_get_child(node, "game");
	while(game_node)
	{
		gboolean external = FALSE;
		gfire_game *game = gfire_game_create_from_xml(game_node, &external);
		if(game)
		{
			gfire_games = g_list_append(gfire_games, game);
			if(external)
				gfire_games_external = g_list_append(gfire_games_external, game);
		}

		game_node = xmlnode_get_next_twin(game_node);
	}

	xmlnode_free(node);

	return TRUE;
}
示例#4
0
/* ret:  0  ok
 * 	-1  no file
 *	-2  error in parse node
 *	-3  NULL mobile && NULL sid
 */
gint ParseCfg(struct fetion_account_data *sip)
{
    xmlnode *root, *son_node, *item;
    gchar *cur, *tail;
    gchar *msg_server, *ssic_server, *por_server, *upload_server;
    gchar *server_ver;
    gchar *cfg_filename;
    if (sip->mobileno != NULL)
        cfg_filename = g_strdup_printf("%s-SysCfg.xml", sip->mobileno);
    else if (sip->username != NULL)
        cfg_filename = g_strdup_printf("%s-SysCfg.xml", sip->username);
    else
        return -3;

    root = purple_util_read_xml_from_file(cfg_filename, "SysCfg.xml");
    if (root == NULL)
        return -1;
    son_node = xmlnode_get_child(root, "servers");
    g_return_val_if_fail(son_node != NULL, -2);
    server_ver = xmlnode_get_attrib(son_node, "version");
    sip->ServerVersion = g_strdup(server_ver);
    purple_debug_info("fetion", "systemconfig:cfg_ver[%s]\n",
                      sip->ServerVersion);
    item = xmlnode_get_child(son_node, "sipc-proxy");
    g_return_val_if_fail(item != NULL, -2);
    msg_server = g_strdup(xmlnode_get_data(item));
    item = xmlnode_get_child(son_node, "ssi-app-sign-in");
    g_return_val_if_fail(item != NULL, -2);
    ssic_server = g_strdup(xmlnode_get_data(item));

    item = xmlnode_get_child(root, "http-applications/get-portrait");
    g_return_val_if_fail(item != NULL, -2);
    por_server = g_strdup(xmlnode_get_data(item));

    item = xmlnode_get_child(root, "http-applications/set-portrait");
    g_return_val_if_fail(item != NULL, -2);
    upload_server = g_strdup(xmlnode_get_data(item));

    cur = strstr(msg_server, ":");
    *cur = '\0';
    cur++;
    sip->MsgServer = g_strdup(msg_server);
    sip->MsgPort = atoi(cur);

    cur = strstr(ssic_server, "/ssiportal");
    *cur = '\0';
    cur = ssic_server + 8;
    sip->SsicServer = g_strdup(cur);

    cur = strstr(por_server, "/HDS");
    *cur = '\0';
    tail = cur + 1;
    cur = por_server + 7;
    sip->PortraitServer = g_strdup(cur);
    cur = strstr(por_server, "/");
    *cur = '\0';
    sip->PortraitPrefix = g_strdup(tail);

    cur = strstr(upload_server, "/HDS");
    *cur = '\0';
    tail = cur + 1;
    cur = upload_server + 7;
    sip->UploadServer = g_strdup(cur);
    cur = strstr(upload_server, "/");
    *cur = '\0';
    sip->UploadPrefix = g_strdup(tail);

    son_node = xmlnode_get_child(root, "service-no");
    g_return_val_if_fail(son_node != NULL, -2);
    sip->ServiceNoVersion =
        g_strdup(xmlnode_get_attrib(son_node, "version"));
    son_node = xmlnode_get_child(root, "parameters");
    g_return_val_if_fail(son_node != NULL, -2);
    sip->ParaVersion = g_strdup(xmlnode_get_attrib(son_node, "version"));
    son_node = xmlnode_get_child(root, "hints");
    g_return_val_if_fail(son_node != NULL, -2);
    sip->HintsVersion = g_strdup(xmlnode_get_attrib(son_node, "version"));
    son_node = xmlnode_get_child(root, "http-applications");
    g_return_val_if_fail(son_node != NULL, -2);
    sip->HttpAppVersion = g_strdup(xmlnode_get_attrib(son_node, "version"));
    son_node = xmlnode_get_child(root, "client-config");
    g_return_val_if_fail(son_node != NULL, -2);
    sip->ClientCfgVersion =
        g_strdup(xmlnode_get_attrib(son_node, "version"));

    //LoginToSsiPortal(sip);
    xmlnode_free(root);
    g_free(msg_server);
    g_free(ssic_server);
    g_free(por_server);
    g_free(cfg_filename);

    return 0;
}