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(); } }
void options_reload_keyfile(Options *options) { if (options->kf) options_delete_keyfile(options); options->kf = options_file_open(options->name, options->group_name); options->kf_dirty = FALSE; }