static void query_info_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { GVfsBackendAfpBrowse *afp_backend = G_VFS_BACKEND_AFP_BROWSE (source_object); GVfsJobQueryInfo *job = G_VFS_JOB_QUERY_INFO (user_data); GError *err = NULL; GVfsAfpVolumeData *vol_data; if (!update_cache_finish (afp_backend, res, &err)) { g_vfs_job_failed_from_error (G_VFS_JOB (job), err); g_error_free (err); return; } vol_data = find_volume (afp_backend, job->filename); if (!vol_data) { g_vfs_job_failed_literal (G_VFS_JOB (job), G_IO_ERROR, G_IO_ERROR_NOT_FOUND, _("File doesn't exist")); return; } fill_info (job->file_info, vol_data, afp_backend); g_vfs_job_succeeded (G_VFS_JOB (job)); }
static void query_info_ready (SoupSession *session, SoupMessage *msg, gpointer user_data) { GFileAttributeMatcher *matcher; GVfsJobQueryInfo *job; GFileInfo *info; job = G_VFS_JOB_QUERY_INFO (user_data); info = job->file_info; matcher = job->attribute_matcher; if (! SOUP_STATUS_IS_SUCCESSFUL (msg->status_code)) { http_job_failed (G_VFS_JOB (job), msg); return; } file_info_from_message (msg, info, matcher); g_vfs_job_succeeded (G_VFS_JOB (job)); }