use Gnome2::VFS; sub die_already { my ($action) = @_; die("An error occured while $action.\n"); } die_already("initializing GNOME VFS") unless (Gnome2::VFS -> init()); my $source = "http://www.perldoc.com/about.html"; my ($result, $handle, $info); # Open a connection to Perldoc. ($result, $handle) = Gnome2::VFS -> open($source, "read"); die_already("opening connection to '$source'") unless ($result eq "ok"); # Get the file information. ($result, $info) = $handle -> get_file_info("default"); die_already("retrieving information about '$source'") unless ($result eq "ok"); # Read the content. my $bytes = $info -> { size }; my $bytes_read = 0; my $buffer = ""; do { my ($tmp_buffer, $tmp_bytes_read); ($result, $tmp_bytes_read, $tmp_buffer) = $handle -> read($bytes - $bytes_read); $buffer .= $tmp_buffer; $bytes_read += $tmp_bytes_read; } while ($result eq "ok" and $bytes_read < $bytes); die_already("reading $bytes bytes from '$source'") unless ($result eq "ok" && $bytes_read == $bytes); # Close the connection. $result = $handle -> close(); die_already("closing connection to '$source'") unless ($result eq "ok"); # Create and open the target. my $target = "/tmp/" . $info -> { name }; my $uri = Gnome2::VFS::URI -> new($target); ($result, $handle) = $uri -> create("write", 1, 0644); die_already("creating '$target'") unless ($result eq "ok"); # Write to it. my $bytes_written; ($result, $bytes_written) = $handle -> write($buffer, $bytes); die_already("writing $bytes bytes to '$target'") unless ($result eq "ok" && $bytes_written == $bytes); # Close the target. $result = $handle -> close(); die_already("closing '$target'") unless ($result eq "ok"); Gnome2::VFS -> shutdown();
L<http://developer.gnome.org/doc/API/2.0/gnome-vfs-2.0/>
is the canonical reference.
In addition to that, there's also the automatically generated API documentation: Gnome2::VFS::index.
The mapping described in Gtk2::api also applies to this module.
To discuss this module, ask questions and flame/praise the authors, join gtk-perl-list@gnome.org at lists.gnome.org.
GnomeVFSAsync is also known to crash under certain conditions when there are many concurrent transfers.
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA