- return G_SOURCE_REMOVE;
-
- if (!g_spawn_async_with_pipes (NULL, /* working dir */
- data->argv,
- NULL, /* envp */
- G_SPAWN_DO_NOT_REAP_CHILD|G_SPAWN_SEARCH_PATH,
- NULL, /* child_setup */
- NULL, /* user_data for child_setup */
- &child_pid,
- NULL, /* standard_input */
- NULL, /* standard_output */
- &(data->error_fd),
- &error)) {
- g_assert (error != NULL);
- goto handle_error;
- }
-
- data->error_string = g_string_new ("");
-
- data->error_channel = g_io_channel_unix_new (data->error_fd);
- g_io_channel_set_flags (data->error_channel, G_IO_FLAG_NONBLOCK, &error);
- if (error != NULL)
- goto handle_error;
-
- data->error_channel_source = g_io_create_watch (data->error_channel, G_IO_IN);
- g_task_attach_source (task, data->error_channel_source,
- (GSourceFunc) eject_unmount_read_error);
-
- child_watch = g_child_watch_source_new (child_pid);
- g_task_attach_source (task, data->error_channel_source,
- (GSourceFunc) eject_unmount_cb);
- g_source_unref (child_watch);
-
-handle_error:
- if (error != NULL)