1 diff -Nuard gnome-vfs-2.6.0.orig/libgnomevfs/gnome-vfs-mime-info.c gnome-vfs-2.6.0/libgnomevfs/gnome-vfs-mime-info.c
2 --- gnome-vfs-2.6.0.orig/libgnomevfs/gnome-vfs-mime-info.c 2003-10-17 17:11:22.000000000 +0200
3 +++ gnome-vfs-2.6.0/libgnomevfs/gnome-vfs-mime-info.c 2004-04-18 12:51:47.074282208 +0200
10 context_add_key (GnomeMimeContext *context, char *key, char *lang, char *value)
13 + gchar *prevtmp = NULL;
15 lang_level = language_level (lang);
16 /* wrong language completely */
21 - /* fprintf (stderr, "Add key: '%s' '%s' '%s' %d\n", key, lang, value, lang_level);*/
23 - g_hash_table_replace (context->keys, g_strdup (key), g_strdup (value));
24 + prevtmp = (gchar *)g_hash_table_lookup(context->keys,key);
26 + if ((prevtmp != NULL) && (value != NULL) && (key != NULL) && (strstr(key,"_list_") != NULL)) {
28 + GList *vallist = NULL;
29 + gchar **strv = g_strsplit ((prevtmp == NULL ? "" : prevtmp), ",", 0);
31 + for (i = 0; strv[i] != NULL; i++) {
32 + vallist = g_list_prepend (vallist, strv[i]);
35 + /* remove repeated entries */
36 + if (!g_list_find_custom(vallist,value,(GCompareFunc)strcmp)) {
37 + g_hash_table_replace (context->keys, g_strdup (key), g_strconcat(prevtmp,",",value,NULL));
40 + g_list_free(vallist);
44 + g_hash_table_replace (context->keys, g_strdup (key), g_strdup(value));
47 previous_key_lang_level = lang_level;