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); }
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; }
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; }
/* 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; }