mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-02 23:43:39 +02:00
GFile: Add g_file_delete_async()
This looks like it was stubbed out but not implemented; the vtable
entry dates to commit 3781343738
which
is just alex's initial merge of gio into glib.
I was working on some code that wants an asynchronous rm -rf
equivalent, and so yeah, this is desirable.
https://bugzilla.gnome.org/show_bug.cgi?id=680760
This commit is contained in:
@@ -592,6 +592,48 @@ test_replace_load (void)
|
||||
free (path);
|
||||
}
|
||||
|
||||
static void
|
||||
on_file_deleted (GObject *object,
|
||||
GAsyncResult *result,
|
||||
gpointer user_data)
|
||||
{
|
||||
GError *local_error = NULL;
|
||||
GMainLoop *loop = user_data;
|
||||
|
||||
(void) g_file_delete_finish ((GFile*)object, result, &local_error);
|
||||
g_assert_no_error (local_error);
|
||||
|
||||
g_main_loop_quit (loop);
|
||||
}
|
||||
|
||||
static void
|
||||
test_async_delete (void)
|
||||
{
|
||||
GFile *file;
|
||||
GFileIOStream *iostream;
|
||||
GError *local_error = NULL;
|
||||
GError **error = &local_error;
|
||||
GMainLoop *loop;
|
||||
|
||||
file = g_file_new_tmp ("g_file_delete_XXXXXX",
|
||||
&iostream, error);
|
||||
g_assert_no_error (local_error);
|
||||
g_object_unref (iostream);
|
||||
|
||||
g_assert (g_file_query_exists (file, NULL));
|
||||
|
||||
loop = g_main_loop_new (NULL, TRUE);
|
||||
|
||||
g_file_delete_async (file, G_PRIORITY_DEFAULT, NULL, on_file_deleted, loop);
|
||||
|
||||
g_main_loop_run (loop);
|
||||
|
||||
g_assert (!g_file_query_exists (file, NULL));
|
||||
|
||||
g_main_loop_unref (loop);
|
||||
g_object_unref (file);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
@@ -609,6 +651,7 @@ main (int argc, char *argv[])
|
||||
g_test_add_data_func ("/file/async-create-delete/25", GINT_TO_POINTER (25), test_create_delete);
|
||||
g_test_add_data_func ("/file/async-create-delete/4096", GINT_TO_POINTER (4096), test_create_delete);
|
||||
g_test_add_func ("/file/replace-load", test_replace_load);
|
||||
g_test_add_func ("/file/async-delete", test_async_delete);
|
||||
|
||||
return g_test_run ();
|
||||
}
|
||||
|
Reference in New Issue
Block a user