|
Lines 758-763
merge_directory_results (void)
Link Here
|
| 758 |
static_search_results_size = 0; |
758 |
static_search_results_size = 0; |
| 759 |
} |
759 |
} |
| 760 |
|
760 |
|
|
|
761 |
static void |
| 762 |
apps_merge (gchar *key, |
| 763 |
gchar *value, |
| 764 |
GHashTable *user_data) |
| 765 |
{ |
| 766 |
if (!g_hash_table_lookup(user_data, key)) |
| 767 |
{ |
| 768 |
g_hash_table_insert (user_data, key, g_strdup (value)); |
| 769 |
return; |
| 770 |
} |
| 771 |
} |
| 772 |
|
| 761 |
/* Support for unindexed DesktopFileDirs {{{2 */ |
773 |
/* Support for unindexed DesktopFileDirs {{{2 */ |
| 762 |
static void |
774 |
static void |
| 763 |
get_apps_from_dir (GHashTable **apps, |
775 |
get_apps_from_dir (GHashTable **apps, |
|
Lines 772-777
get_apps_from_dir (GHashTable **apps,
Link Here
|
| 772 |
if (dir == NULL) |
784 |
if (dir == NULL) |
| 773 |
return; |
785 |
return; |
| 774 |
|
786 |
|
|
|
787 |
GHashTable *apps_fake = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); |
| 788 |
|
| 775 |
while ((basename = g_dir_read_name (dir)) != NULL) |
789 |
while ((basename = g_dir_read_name (dir)) != NULL) |
| 776 |
{ |
790 |
{ |
| 777 |
gchar *filename; |
791 |
gchar *filename; |
|
Lines 788-793
get_apps_from_dir (GHashTable **apps,
Link Here
|
| 788 |
*apps = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); |
802 |
*apps = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); |
| 789 |
|
803 |
|
| 790 |
g_hash_table_insert (*apps, app_name, g_strdup (filename)); |
804 |
g_hash_table_insert (*apps, app_name, g_strdup (filename)); |
|
|
805 |
|
| 806 |
g_hash_table_insert (apps_fake, g_strdup (basename), g_strdup (filename)); |
| 791 |
} |
807 |
} |
| 792 |
else if (g_file_test (filename, G_FILE_TEST_IS_DIR)) |
808 |
else if (g_file_test (filename, G_FILE_TEST_IS_DIR)) |
| 793 |
{ |
809 |
{ |
|
Lines 801-806
get_apps_from_dir (GHashTable **apps,
Link Here
|
| 801 |
g_free (filename); |
817 |
g_free (filename); |
| 802 |
} |
818 |
} |
| 803 |
|
819 |
|
|
|
820 |
g_hash_table_foreach (apps_fake, (GHFunc) apps_merge, *apps); |
| 821 |
g_free (apps_fake); |
| 822 |
|
| 804 |
g_dir_close (dir); |
823 |
g_dir_close (dir); |
| 805 |
} |
824 |
} |
| 806 |
|
825 |
|