rem: char *command; int status;
add: data.called = FALSE; data.cache = cache; gnome_vfs_drive_mount (cache->drive, (GnomeVFSVolumeOpCallback) cb_mount_done, &data); while (!data.called) g_main_iteration (TRUE);
context: cd_cache_open_mountpoint (CdCache *cache,			  GError **error){  /* already opened? */  if (cache->mounted || cache->is_media == FALSE)    return TRUE;  /* check for mounting - assume we'll mount ourselves */  if (cache->drive == NULL)    return TRUE;  cache->self_mounted = !gnome_vfs_drive_is_mounted (cache->drive);  /* mount if we have to */  if (cache->self_mounted) {    char *command;    int status;    command = g_strdup_printf ("mount %s", cache->mountpoint);    if (!g_spawn_command_line_sync (command,             NULL, NULL, &status, error)) {      g_free (command);      return FALSE;    }    g_free (command);    if (status != 0) {      g_set_error (error, 0, 0,          _("Unexpected error status %d while mounting %s"),          status, cache->mountpoint);      return FALSE;    }  }  cache->mounted = TRUE;  return TRUE;}