Encodings *encodings_load(void) { char *filename = options_file_build_filename("Encodings", NULL); if (filename) { GKeyFile *kf = options_file_open("Encodings", encodings_group_name); int count = options_file_lookup_int_with_default(kf, encodings_group_name, "n", 0); GPtrArray *enc = g_ptr_array_sized_new(count); int n; for (n = 0; n < count; ++n) { char *v = options_file_lookup_string_with_default(kf, encodings_group_name, encodings_get_key(n), NULL); g_ptr_array_add(enc, v); } g_free(filename); g_key_file_free(kf); g_ptr_array_sort(enc, (GCompareFunc) encodings_compare); return enc; } else { return encodings_build_default(); } }
char *options_lookup_string_with_default(Options * options, const char *key, const char *default_value) { return options_file_lookup_string_with_default( options->kf, options->group_name, key, default_value); }