mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-24 14:36:13 +01:00
Use list_parents, not get_parents from xdgmime, because the later doesn't
2008-01-29 Alexander Larsson <alexl@redhat.com> * gcontenttype.c: (_g_unix_content_type_get_parents): Use list_parents, not get_parents from xdgmime, because the later doesn't use the cache. * xdgmime/xdgmimecache.c: (_xdg_mime_cache_list_mime_parents): Don't list the same type as parent multiple times. svn path=/trunk/; revision=6407
This commit is contained in:
parent
fa7351324a
commit
e064f28435
@ -1,3 +1,14 @@
|
|||||||
|
2008-01-29 Alexander Larsson <alexl@redhat.com>
|
||||||
|
|
||||||
|
* gcontenttype.c:
|
||||||
|
(_g_unix_content_type_get_parents):
|
||||||
|
Use list_parents, not get_parents from xdgmime, because
|
||||||
|
the later doesn't use the cache.
|
||||||
|
|
||||||
|
* xdgmime/xdgmimecache.c:
|
||||||
|
(_xdg_mime_cache_list_mime_parents):
|
||||||
|
Don't list the same type as parent multiple times.
|
||||||
|
|
||||||
2008-01-28 Matthias Clasen <mclasen@redhat.com>
|
2008-01-28 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
* === Released 2.15.4 ===
|
* === Released 2.15.4 ===
|
||||||
|
@ -331,12 +331,15 @@ _g_unix_content_type_get_parents (const char *type)
|
|||||||
G_LOCK (gio_xdgmime);
|
G_LOCK (gio_xdgmime);
|
||||||
|
|
||||||
umime = xdg_mime_unalias_mime_type (type);
|
umime = xdg_mime_unalias_mime_type (type);
|
||||||
|
|
||||||
g_ptr_array_add (array, g_strdup (umime));
|
g_ptr_array_add (array, g_strdup (umime));
|
||||||
|
|
||||||
parents = xdg_mime_get_mime_parents (umime);
|
parents = xdg_mime_list_mime_parents (umime);
|
||||||
for (i = 0; parents && parents[i] != NULL; i++)
|
for (i = 0; parents && parents[i] != NULL; i++)
|
||||||
g_ptr_array_add (array, g_strdup (parents[i]));
|
g_ptr_array_add (array, g_strdup (parents[i]));
|
||||||
|
|
||||||
|
free (parents);
|
||||||
|
|
||||||
G_UNLOCK (gio_xdgmime);
|
G_UNLOCK (gio_xdgmime);
|
||||||
|
|
||||||
g_ptr_array_add (array, NULL);
|
g_ptr_array_add (array, NULL);
|
||||||
|
@ -865,7 +865,7 @@ _xdg_mime_cache_unalias_mime_type (const char *mime)
|
|||||||
char **
|
char **
|
||||||
_xdg_mime_cache_list_mime_parents (const char *mime)
|
_xdg_mime_cache_list_mime_parents (const char *mime)
|
||||||
{
|
{
|
||||||
int i, j, k, p;
|
int i, j, k, l, p;
|
||||||
char *all_parents[128]; /* we'll stop at 128 */
|
char *all_parents[128]; /* we'll stop at 128 */
|
||||||
char **result;
|
char **result;
|
||||||
|
|
||||||
@ -892,7 +892,18 @@ _xdg_mime_cache_list_mime_parents (const char *mime)
|
|||||||
for (k = 0; k < n_parents && p < 127; k++)
|
for (k = 0; k < n_parents && p < 127; k++)
|
||||||
{
|
{
|
||||||
parent_mime_offset = GET_UINT32 (cache->buffer, parents_offset + 4 + 4 * k);
|
parent_mime_offset = GET_UINT32 (cache->buffer, parents_offset + 4 + 4 * k);
|
||||||
all_parents[p++] = cache->buffer + parent_mime_offset;
|
|
||||||
|
/* Don't add same parent multiple times.
|
||||||
|
* This can happen for instance if the same type is listed in multiple directories
|
||||||
|
*/
|
||||||
|
for (l = 0; l < p; l++)
|
||||||
|
{
|
||||||
|
if (strcmp (all_parents[l], cache->buffer + parent_mime_offset) == 0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (l == p)
|
||||||
|
all_parents[p++] = cache->buffer + parent_mime_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user