The work on the nautilus-gio branch continues:
[alex@localhost nautilus-gio]$ find -name "*.c" | xargs grep gnome_vfs_ | wc -l
531
Where it originally was:
[alex@localhost nautilus]$ find -name "*.[ch]" | xargs grep gnome_vfs_ | wc -l
803
So, 33% of all gnome vfs calls have been removed.
This doesn’t seem like a lot, but much of the core of nautilus has moved over.
These are the current uses of gnome vfs in nautilus-gio:
2 gnome_vfs_async_cancel
1 gnome_vfs_async_close
1 gnome_vfs_async_load_directory_uri
1 gnome_vfs_async_open
2 gnome_vfs_async_read
2 gnome_vfs_async_set_file_info
6 gnome_vfs_async_xfer
1 gnome_vfs_check_same_fs_uris
2 gnome_vfs_close
2 gnome_vfs_connect_to_server
1 gnome_vfs_directory_list_load
1 gnome_vfs_directory_visit_uri
2 gnome_vfs_drive_compare
3 gnome_vfs_drive_eject
2 gnome_vfs_drive_get_activation_uri
1 gnome_vfs_drive_get_device_path
8 gnome_vfs_drive_get_device_type
2 gnome_vfs_drive_get_display_name
1 gnome_vfs_drive_get_icon
2 gnome_vfs_drive_get_mounted_volumes
8 gnome_vfs_drive_is_mounted
1 gnome_vfs_drive_is_user_visible
5 gnome_vfs_drive_mount
3 gnome_vfs_drive_ref
3 gnome_vfs_drive_unmount
17 gnome_vfs_drive_unref
1 gnome_vfs_error_quark
5 gnome_vfs_escape_path_string
1 gnome_vfs_escape_slashes
6 gnome_vfs_escape_string
5 gnome_vfs_file_info_list_free
8 gnome_vfs_file_info_new
1 gnome_vfs_file_info_to_gio
9 gnome_vfs_file_info_unref
2 gnome_vfs_file_type_from_g_file_type
2 gnome_vfs_file_type_to_g_file_type
9 gnome_vfs_find_directory
5 gnome_vfs_get_file_info
1 gnome_vfs_get_uri_scheme
1 gnome_vfs_get_volume_free_space
18 gnome_vfs_get_volume_monitor
2 gnome_vfs_init
1 gnome_vfs_make_directory
1 gnome_vfs_make_directory_for_uri
5 gnome_vfs_make_uri_from_input
1 gnome_vfs_make_uri_from_input_with_trailing_ws
1 gnome_vfs_make_uri_from_shell_arg
1 gnome_vfs_method_get
2 gnome_vfs_monitor_add
2 gnome_vfs_monitor_cancel
1 gnome_vfs_open
1 gnome_vfs_read
1 gnome_vfs_result_to_error
7 gnome_vfs_result_to_string
5 gnome_vfs_shutdown
4 gnome_vfs_unescape_string
4 gnome_vfs_unescape_string_for_display
2 gnome_vfs_unlink
7 gnome_vfs_uri_append_file_name
3 gnome_vfs_uri_append_string
1 gnome_vfs_uri_dup
7 gnome_vfs_uri_equal
2 gnome_vfs_uri_exists
4 gnome_vfs_uri_extract_dirname
4 gnome_vfs_uri_extract_short_name
2 gnome_vfs_uri_extract_short_path_name
7 gnome_vfs_uri_get_host_name
1 gnome_vfs_uri_get_host_port
9 gnome_vfs_uri_get_parent
2 gnome_vfs_uri_get_path
2 gnome_vfs_uri_get_scheme
3 gnome_vfs_uri_get_user_name
3 gnome_vfs_uri_has_parent
1 gnome_vfs_uri_is_local
6 gnome_vfs_uri_is_parent
1 gnome_vfs_uri_list_extract_uris
8 gnome_vfs_uri_list_free
2 gnome_vfs_uri_make_full_from_relative
54 gnome_vfs_uri_new
4 gnome_vfs_uri_ref
12 gnome_vfs_uris_match
18 gnome_vfs_uri_to_string
68 gnome_vfs_uri_unref
1 gnome_vfs_url_show_with_env
4 gnome_vfs_volume_compare
4 gnome_vfs_volume_eject
12 gnome_vfs_volume_get_activation_uri
6 gnome_vfs_volume_get_device_type
7 gnome_vfs_volume_get_display_name
2 gnome_vfs_volume_get_drive
1 gnome_vfs_volume_get_filesystem_type
5 gnome_vfs_volume_get_icon
2 gnome_vfs_volume_get_volume_type
1 gnome_vfs_volume_handles_trash
1 gnome_vfs_volume_is_read_only
6 gnome_vfs_volume_is_user_visible
2 gnome_vfs_volume_monitor_get_connected_drives
1 gnome_vfs_volume_monitor_get_drive_by_id
7 gnome_vfs_volume_monitor_get_mounted_volumes
1 gnome_vfs_volume_monitor_get_volume_by_id
5 gnome_vfs_volume_monitor_get_volume_for_path
6 gnome_vfs_volume_ref
3 gnome_vfs_volume_unmount
29 gnome_vfs_volume_unref
1 gnome_vfs_xfer_uri
A lot of these are low hanging fruit. For instance, there are 163 calls to the gnome vfs volume monitoring API, which has more or less a direct translation to GIO. Another large part is uri handling which should be translatable to GFile manipulation with some work. So it should be possible to get these numbers a lot lower fast.
However, other parts, like gnome_vfs_xfer() needs significant work. It is only called once, but is a large part of nautilus functionallity, basically doing all sorts of file copies and moves.
So, we’re going places, but we’re far from there yet.