gboolean gimp_language_store_parse_iso_codes (GimpLanguageStore *store, GError **error) { #ifdef HAVE_ISO_CODES static const GMarkupParser markup_parser = { iso_codes_parser_start_element, iso_codes_parser_end_element, NULL, /* characters */ NULL, /* passthrough */ NULL /* error */ }; GimpXmlParser *xml_parser; gchar *filename; gboolean success; IsoCodesParser parser = { 0, }; g_return_val_if_fail (GIMP_IS_LANGUAGE_STORE (store), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); iso_codes_parser_init (); parser.store = g_object_ref (store); xml_parser = gimp_xml_parser_new (&markup_parser, &parser); #ifdef G_OS_WIN32 filename = g_build_filename (gimp_data_directory (), "..", "..", "xml", "iso-codes", "iso_639.xml", NULL); #else filename = g_build_filename (ISO_CODES_LOCATION, "iso_639.xml", NULL); #endif success = gimp_xml_parser_parse_file (xml_parser, filename, error); g_free (filename); gimp_xml_parser_free (xml_parser); g_object_unref (parser.store); return success; #endif return TRUE; }
/* * Parse the ISO-639 code list if available on this system, and fill * @base_lang_list with English names of all needed base codes. * * It will also fill the static @all_lang_list. */ static gboolean parse_iso_codes (GHashTable *base_lang_list, GError **error) { gboolean success = TRUE; #ifdef HAVE_ISO_CODES static const GMarkupParser markup_parser = { iso_codes_parser_start_element, iso_codes_parser_end_element, NULL, /* characters */ NULL, /* passthrough */ NULL /* error */ }; GimpXmlParser *xml_parser; gchar *filename; IsoCodesParser parser = { 0, }; g_return_val_if_fail (error == NULL || *error == NULL, FALSE); iso_codes_parser_init (); parser.base_lang_list = g_hash_table_ref (base_lang_list); xml_parser = gimp_xml_parser_new (&markup_parser, &parser); #ifdef G_OS_WIN32 filename = g_build_filename (gimp_data_directory (), "..", "..", "xml", "iso-codes", "iso_639.xml", NULL); #else filename = g_build_filename (ISO_CODES_LOCATION, "iso_639.xml", NULL); #endif success = gimp_xml_parser_parse_file (xml_parser, filename, error); g_free (filename); gimp_xml_parser_free (xml_parser); g_hash_table_unref (parser.base_lang_list); #endif return success; }