Make supported media type listing output unique
This commit is contained in:
parent
cce2b6ba51
commit
44c28f00d6
11
fiv-io.c
11
fiv-io.c
|
@ -121,23 +121,28 @@ const char *fiv_io_supported_media_types[] = {
|
||||||
gchar **
|
gchar **
|
||||||
fiv_io_all_supported_media_types(void)
|
fiv_io_all_supported_media_types(void)
|
||||||
{
|
{
|
||||||
|
GHashTable *unique =
|
||||||
|
g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
|
||||||
GPtrArray *types = g_ptr_array_new();
|
GPtrArray *types = g_ptr_array_new();
|
||||||
for (const char **p = fiv_io_supported_media_types; *p; p++)
|
for (const char **p = fiv_io_supported_media_types; *p; p++)
|
||||||
g_ptr_array_add(types, g_strdup(*p));
|
if (g_hash_table_insert(unique, g_strdup(*p), NULL))
|
||||||
|
g_ptr_array_add(types, g_strdup(*p));
|
||||||
|
|
||||||
#ifdef HAVE_GDKPIXBUF
|
#ifdef HAVE_GDKPIXBUF
|
||||||
GSList *formats = gdk_pixbuf_get_formats();
|
GSList *formats = gdk_pixbuf_get_formats();
|
||||||
for (GSList *iter = formats; iter; iter = iter->next) {
|
for (GSList *iter = formats; iter; iter = iter->next) {
|
||||||
gchar **subtypes = gdk_pixbuf_format_get_mime_types(iter->data);
|
gchar **subtypes = gdk_pixbuf_format_get_mime_types(iter->data);
|
||||||
for (gchar **p = subtypes; *p; p++)
|
for (gchar **p = subtypes; *p; p++)
|
||||||
g_ptr_array_add(types, *p);
|
if (g_hash_table_insert(unique, *p, NULL))
|
||||||
|
g_ptr_array_add(types, g_strdup(*p));
|
||||||
g_free(subtypes);
|
g_free(subtypes);
|
||||||
}
|
}
|
||||||
g_slist_free(formats);
|
g_slist_free(formats);
|
||||||
#endif // HAVE_GDKPIXBUF
|
#endif // HAVE_GDKPIXBUF
|
||||||
|
|
||||||
|
g_hash_table_unref(unique);
|
||||||
g_ptr_array_add(types, NULL);
|
g_ptr_array_add(types, NULL);
|
||||||
return (char **) g_ptr_array_free(types, FALSE);
|
return (gchar **) g_ptr_array_free(types, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
6
fiv.c
6
fiv.c
|
@ -2204,8 +2204,10 @@ main(int argc, char *argv[])
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (show_supported_media_types) {
|
if (show_supported_media_types) {
|
||||||
for (char **types = fiv_io_all_supported_media_types(); *types; )
|
char **types = fiv_io_all_supported_media_types();
|
||||||
g_print("%s\n", *types++);
|
for (char **p = types; *p; p++)
|
||||||
|
g_print("%s\n", *p);
|
||||||
|
g_strfreev(types);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (invalidate_cache) {
|
if (invalidate_cache) {
|
||||||
|
|
Loading…
Reference in New Issue