void _load_lang() { gchar *filename; XMLNode *node; struct stat buf; __languages_dict = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); filename = g_build_filename (ISOCODES_PREFIX, "share/xml/iso-codes/iso_639.xml", NULL); if (g_stat (filename, &buf) != 0) { g_warning ("Can not get stat of file %s", filename); g_free (filename); return; } node = ibus_xml_parse_file (filename); g_free (filename); if (!node) { return; } _iso_codes_parse_xml_node (node); ibus_xml_free (node); }
static gboolean bus_registry_load_cache (BusRegistry *registry) { g_assert (BUS_IS_REGISTRY (registry)); gchar *filename; XMLNode *node; GList *p; filename = g_build_filename (g_get_user_cache_dir (), "ibus", "bus", "registry.xml", NULL); node = ibus_xml_parse_file (filename); g_free (filename); if (node == NULL) { return FALSE; } if (g_strcmp0 (node->name, "ibus-registry") != 0) { ibus_xml_free (node); return FALSE; } for (p = node->sub_nodes; p != NULL; p = p->next) { XMLNode *sub_node = (XMLNode *) p->data; if (g_strcmp0 (sub_node->name, "observed-paths") == 0) { GList *pp; for (pp = sub_node->sub_nodes; pp != NULL; pp = pp->next) { IBusObservedPath *path; path = ibus_observed_path_new_from_xml_node (pp->data, FALSE); if (path) { g_object_ref_sink (path); registry->observed_paths = g_list_append (registry->observed_paths, path); } } continue; } if (g_strcmp0 (sub_node->name, "components") == 0) { GList *pp; for (pp = sub_node->sub_nodes; pp != NULL; pp = pp->next) { IBusComponent *component; component = ibus_component_new_from_xml_node (pp->data); if (component) { g_object_ref_sink (component); registry->components = g_list_append (registry->components, component); } } continue; } g_warning ("Unknown element <%s>", sub_node->name); } ibus_xml_free (node); return TRUE; }