Here is a simple example demonstrating synchronous operation in GNOME VFS. This subroutine will read a file and output its contents to stdout. The code should be rather self-explanatory.
gboolean vfs_cat (const char *uri) { GnomeVFSURI *vfs_uri; GnomeVFSHandle *handle; GnomeVFSResult result; vfs_uri = gnome_vfs_uri_new (uri); if (vfs_uri == NULL) { printf ("`%s' is not a valid URI.\n", uri); return FALSE; } result = gnome_vfs_open_uri (&handle, vfs_uri, GNOME_VFS_OPEN_READ); if (result != GNOME_VFS_OK) { printf ("Error opening `%s': %s\n", uri, gnome_vfs_result_to_string (result)); return FALSE; } while (1) { GnomeVFSFileSize bytes_read; GnomeVFSFileSize i; char buffer[4096]; result = gnome_vfs_read (handle, buffer, sizeof (buffer), &bytes_read); if (result != GNOME_VFS_OK) { printf ("%s: %s\n", uri, gnome_vfs_result_to_string (result)); return FALSE; } if (bytes_read == 0) break; for (i = 0; i < bytes_read; i++) putchar (buffer[i]); } gnome_vfs_close (handle); gnome_vfs_uri_unref (vfs_uri); return TRUE; }