+ g_free(url);
+ g_free(local);
+}
+
+static void do_cache(GFile *src, GFile *dst, char *reason,
+ AWeatherCacheDoneCallback callback, gpointer user_data)
+{
+ char *name = g_file_get_basename(dst);
+ g_debug("data: do_cache - Caching file %s: %s", name, reason);
+ g_free(name);
+
+ GFile *parent = g_file_get_parent(dst);
+ if (!g_file_query_exists(parent, NULL))
+ g_file_make_directory_with_parents(parent, NULL, NULL);
+ g_object_unref(parent);
+
+ cache_file_end_t *info = g_malloc0(sizeof(cache_file_end_t));
+ info->callback = callback;
+ info->src = src;
+ info->dst = dst;
+ info->user_data = user_data;
+ g_file_copy_async(src, dst,
+ G_FILE_COPY_OVERWRITE, // GFileCopyFlags flags,
+ G_PRIORITY_DEFAULT_IDLE, // int io_priority,
+ NULL, // GCancellable *cancellable,
+ NULL, // GFileProgressCallback progress_callback,
+ NULL, // gpointer progress_callback_data,
+ cache_file_cb, // GAsyncReadyCallback callback,
+ info); // gpointer user_data
+ return;