static void process_file_cb (GObject *object, GAsyncResult *result, gpointer user_data) { ProcessApplicationData *data; GFileInfo *file_info; GError *error = NULL; GFile *file; data = user_data; file = G_FILE (object); file_info = g_file_query_info_finish (file, result, &error); if (error) { tracker_miner_fs_file_notify (TRACKER_MINER_FS (data->miner), file, error); process_application_data_free (data); g_error_free (error); return; } if (g_file_info_get_file_type (file_info) == G_FILE_TYPE_DIRECTORY) { process_directory (data, file_info, &error); } else { data->key_file = get_desktop_key_file (file, &data->type, &error); if (!data->key_file) { gchar *uri; uri = g_file_get_uri (file); g_warning ("Couldn't properly parse desktop file '%s': '%s'", uri, error ? error->message : "unknown error"); g_free (uri); g_clear_error (&error); error = g_error_new_literal (miner_applications_error_quark, 0, "File is not a key file"); } else if (g_key_file_get_boolean (data->key_file, GROUP_DESKTOP_ENTRY, "Hidden", NULL)) { error = g_error_new_literal (miner_applications_error_quark, 0, "Desktop file is 'hidden', not gathering metadata for it"); } else { process_desktop_file (data, file_info, &error); } } tracker_miner_fs_file_notify (TRACKER_MINER_FS (data->miner), data->file, error); process_application_data_free (data); if (error) { g_error_free (error); } if (file_info) { g_object_unref (file_info); } }
static void process_file_cb (GObject *object, GAsyncResult *result, gpointer user_data) { ProcessUserguideData *data; GFileInfo *file_info; GError *error = NULL; GFile *file; gboolean is_dir; data = user_data; file = G_FILE (object); file_info = g_file_query_info_finish (file, result, &error); if (error) { tracker_miner_fs_file_notify (TRACKER_MINER_FS (data->miner), file, error); process_userguide_data_free (data); g_error_free (error); return; } is_dir = g_file_info_get_file_type (file_info) == G_FILE_TYPE_DIRECTORY; process_item (data, file_info, is_dir, &error); tracker_miner_fs_file_notify (TRACKER_MINER_FS (data->miner), data->file, error); process_userguide_data_free (data); if (error) { g_error_free (error); } if (file_info) { g_object_unref (file_info); } }