<refentry id="gnome-vfs-20-gnome-vfs-xfer">
<refmeta>
<refentrytitle id="top_of_page">File Transfers</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>GNOME-VFS-2.0 Library</refmiscinfo>
</refmeta>

<refnamediv>
<refname>File Transfers</refname>
<refpurpose>Conveniently copy/move/delete files en masse</refpurpose>
<!--[<xref linkend="desc" endterm="desc.title"/>]-->
</refnamediv>

<refsynopsisdiv id="synopsis">
<title id="synopsis.title">Synopsis</title>

<synopsis>



enum        <link linkend="GnomeVFSXferOptions">GnomeVFSXferOptions</link>;
enum        <link linkend="GnomeVFSXferProgressStatus">GnomeVFSXferProgressStatus</link>;
enum        <link linkend="GnomeVFSXferOverwriteMode">GnomeVFSXferOverwriteMode</link>;
enum        <link linkend="GnomeVFSXferOverwriteAction">GnomeVFSXferOverwriteAction</link>;
enum        <link linkend="GnomeVFSXferErrorMode">GnomeVFSXferErrorMode</link>;
enum        <link linkend="GnomeVFSXferErrorAction">GnomeVFSXferErrorAction</link>;
enum        <link linkend="GnomeVFSXferPhase">GnomeVFSXferPhase</link>;
            <link linkend="GnomeVFSXferProgressInfo">GnomeVFSXferProgressInfo</link>;
<link linkend="gint">gint</link>        (<link linkend="GnomeVFSXferProgressCallback">*GnomeVFSXferProgressCallback</link>) (<link linkend="GnomeVFSXferProgressInfo">GnomeVFSXferProgressInfo</link> *info,
                                             <link linkend="gpointer">gpointer</link> data);
<link linkend="GnomeVFSResult">GnomeVFSResult</link> <link linkend="gnome-vfs-xfer-uri-list">gnome_vfs_xfer_uri_list</link>      (const <link linkend="GList">GList</link> *source_uri_list,
                                             const <link linkend="GList">GList</link> *target_uri_list,
                                             <link linkend="GnomeVFSXferOptions">GnomeVFSXferOptions</link> xfer_options,
                                             <link linkend="GnomeVFSXferErrorMode">GnomeVFSXferErrorMode</link> error_mode,
                                             <link linkend="GnomeVFSXferOverwriteMode">GnomeVFSXferOverwriteMode</link> overwrite_mode,
                                             <link linkend="GnomeVFSXferProgressCallback">GnomeVFSXferProgressCallback</link> progress_callback,
                                             <link linkend="gpointer">gpointer</link> data);
<link linkend="GnomeVFSResult">GnomeVFSResult</link> <link linkend="gnome-vfs-xfer-uri">gnome_vfs_xfer_uri</link>           (const <link linkend="GnomeVFSURI">GnomeVFSURI</link> *source_uri,
                                             const <link linkend="GnomeVFSURI">GnomeVFSURI</link> *target_uri,
                                             <link linkend="GnomeVFSXferOptions">GnomeVFSXferOptions</link> xfer_options,
                                             <link linkend="GnomeVFSXferErrorMode">GnomeVFSXferErrorMode</link> error_mode,
                                             <link linkend="GnomeVFSXferOverwriteMode">GnomeVFSXferOverwriteMode</link> overwrite_mode,
                                             <link linkend="GnomeVFSXferProgressCallback">GnomeVFSXferProgressCallback</link> progress_callback,
                                             <link linkend="gpointer">gpointer</link> data);
<link linkend="GnomeVFSResult">GnomeVFSResult</link> <link linkend="gnome-vfs-xfer-delete-list">gnome_vfs_xfer_delete_list</link>   (const <link linkend="GList">GList</link> *source_uri_list,
                                             <link linkend="GnomeVFSXferErrorMode">GnomeVFSXferErrorMode</link> error_mode,
                                             <link linkend="GnomeVFSXferOptions">GnomeVFSXferOptions</link> xfer_options,
                                             <link linkend="GnomeVFSXferProgressCallback">GnomeVFSXferProgressCallback</link> progress_callback,
                                             <link linkend="gpointer">gpointer</link> data);
</synopsis>
</refsynopsisdiv>









<refsect1 id="desc">
<title id="desc.title">Description</title>
<para>

</para>
</refsect1>

<refsect1 id="details">
<title id="details.title">Details</title>
<refsect2>
<title><anchor id="GnomeVFSXferOptions" role="enum"/>enum GnomeVFSXferOptions</title>
<indexterm><primary>GnomeVFSXferOptions</primary></indexterm><programlisting>typedef enum {
	GNOME_VFS_XFER_DEFAULT = 0,
	GNOME_VFS_XFER_UNUSED_1 = 1 &lt;&lt; 0,
	GNOME_VFS_XFER_FOLLOW_LINKS = 1 &lt;&lt; 1,
	GNOME_VFS_XFER_UNUSED_2 = 1 &lt;&lt; 2,
	GNOME_VFS_XFER_RECURSIVE = 1 &lt;&lt; 3,
	GNOME_VFS_XFER_SAMEFS = 1 &lt;&lt; 4,
	GNOME_VFS_XFER_DELETE_ITEMS = 1 &lt;&lt; 5,
	GNOME_VFS_XFER_EMPTY_DIRECTORIES = 1 &lt;&lt; 6,
	GNOME_VFS_XFER_NEW_UNIQUE_DIRECTORY = 1 &lt;&lt; 7,
	GNOME_VFS_XFER_REMOVESOURCE = 1 &lt;&lt; 8,
	GNOME_VFS_XFER_USE_UNIQUE_NAMES = 1 &lt;&lt; 9,
	GNOME_VFS_XFER_LINK_ITEMS = 1 &lt;&lt; 10,
	GNOME_VFS_XFER_FOLLOW_LINKS_RECURSIVE = 1 &lt;&lt; 11,
	GNOME_VFS_XFER_TARGET_DEFAULT_PERMS = 1 &lt;&lt; 12
} GnomeVFSXferOptions;
</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="GnomeVFSXferProgressStatus" role="enum"/>enum GnomeVFSXferProgressStatus</title>
<indexterm><primary>GnomeVFSXferProgressStatus</primary></indexterm><programlisting>typedef enum {
	GNOME_VFS_XFER_PROGRESS_STATUS_OK = 0,
	GNOME_VFS_XFER_PROGRESS_STATUS_VFSERROR = 1,
	GNOME_VFS_XFER_PROGRESS_STATUS_OVERWRITE = 2,
	/* during the duplicate status the progress callback is asked to
	   supply a new unique name */
	GNOME_VFS_XFER_PROGRESS_STATUS_DUPLICATE = 3
} GnomeVFSXferProgressStatus;
</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="GnomeVFSXferOverwriteMode" role="enum"/>enum GnomeVFSXferOverwriteMode</title>
<indexterm><primary>GnomeVFSXferOverwriteMode</primary></indexterm><programlisting>typedef enum {
	/* Interrupt transferring with an error (GNOME_VFS_ERROR_FILEEXISTS).  */
	GNOME_VFS_XFER_OVERWRITE_MODE_ABORT = 0,
	/* Invoke the progress callback with a
	   `GNOME_VFS_XFER_PROGRESS_STATUS_OVERWRITE' status code. */
	GNOME_VFS_XFER_OVERWRITE_MODE_QUERY = 1,
	/* Overwrite files silently.  */
	GNOME_VFS_XFER_OVERWRITE_MODE_REPLACE = 2,
	/* Ignore files silently.  */
	GNOME_VFS_XFER_OVERWRITE_MODE_SKIP = 3
} GnomeVFSXferOverwriteMode;
</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="GnomeVFSXferOverwriteAction" role="enum"/>enum GnomeVFSXferOverwriteAction</title>
<indexterm><primary>GnomeVFSXferOverwriteAction</primary></indexterm><programlisting>typedef enum {
	GNOME_VFS_XFER_OVERWRITE_ACTION_ABORT = 0,
	GNOME_VFS_XFER_OVERWRITE_ACTION_REPLACE = 1,
	GNOME_VFS_XFER_OVERWRITE_ACTION_REPLACE_ALL = 2,
	GNOME_VFS_XFER_OVERWRITE_ACTION_SKIP = 3,
	GNOME_VFS_XFER_OVERWRITE_ACTION_SKIP_ALL = 4
} GnomeVFSXferOverwriteAction;
</programlisting>
<para>
This defines the actions to perform before a file is being overwritten
(i.e., these are the answers that can be given to a replace query).</para>
<para>

</para><variablelist role="enum">
<varlistentry>
<term><literal>GNOME_VFS_XFER_OVERWRITE_ACTION_ABORT</literal></term>
<listitem><simpara> abort the transfer
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><literal>GNOME_VFS_XFER_OVERWRITE_ACTION_REPLACE</literal></term>
<listitem><simpara> replace the existing file
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><literal>GNOME_VFS_XFER_OVERWRITE_ACTION_REPLACE_ALL</literal></term>
<listitem><simpara> replace the existing file, and all future files
without prompting the callback.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><literal>GNOME_VFS_XFER_OVERWRITE_ACTION_SKIP</literal></term>
<listitem><simpara> don't copy over the existing file
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><literal>GNOME_VFS_XFER_OVERWRITE_ACTION_SKIP_ALL</literal></term>
<listitem><simpara> don't copy over the existing file, and all future
files without prompting the callback.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="GnomeVFSXferErrorMode" role="enum"/>enum GnomeVFSXferErrorMode</title>
<indexterm><primary>GnomeVFSXferErrorMode</primary></indexterm><programlisting>typedef enum {
	/* Interrupt transferring with an error (code returned is code of the
           operation that has caused the error).  */
	GNOME_VFS_XFER_ERROR_MODE_ABORT = 0,
	/* Invoke the progress callback with a
	   `GNOME_VFS_XFER_PROGRESS_STATUS_VFSERROR' status code. */
	GNOME_VFS_XFER_ERROR_MODE_QUERY = 1
} GnomeVFSXferErrorMode;
</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="GnomeVFSXferErrorAction" role="enum"/>enum GnomeVFSXferErrorAction</title>
<indexterm><primary>GnomeVFSXferErrorAction</primary></indexterm><programlisting>typedef enum {
	/* Interrupt operation and return `GNOME_VFS_ERROR_INTERRUPTED'.  */
	GNOME_VFS_XFER_ERROR_ACTION_ABORT = 0,
	/* Try the same operation again.  */
	GNOME_VFS_XFER_ERROR_ACTION_RETRY = 1,
	/* Skip this file and continue normally.  */
	GNOME_VFS_XFER_ERROR_ACTION_SKIP = 2
} GnomeVFSXferErrorAction;
</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="GnomeVFSXferPhase" role="enum"/>enum GnomeVFSXferPhase</title>
<indexterm><primary>GnomeVFSXferPhase</primary></indexterm><programlisting>typedef enum {
	/* Initial phase */
	GNOME_VFS_XFER_PHASE_INITIAL,
	/* Checking if destination can handle move/copy */
	GNOME_VFS_XFER_CHECKING_DESTINATION,
	/* Collecting file list */
	GNOME_VFS_XFER_PHASE_COLLECTING,
	/* File list collected (*) */
	GNOME_VFS_XFER_PHASE_READYTOGO,
	/* Opening source file for reading */
	GNOME_VFS_XFER_PHASE_OPENSOURCE,
	/* Creating target file for copy */
	GNOME_VFS_XFER_PHASE_OPENTARGET,
	/* Copying data from source to target (*) */
	GNOME_VFS_XFER_PHASE_COPYING,
	/* Moving file from source to target (*) */
	GNOME_VFS_XFER_PHASE_MOVING,
	/* Reading data from source file */
	GNOME_VFS_XFER_PHASE_READSOURCE,
	/* Writing data to target file */
	GNOME_VFS_XFER_PHASE_WRITETARGET,
	/* Closing source file */
	GNOME_VFS_XFER_PHASE_CLOSESOURCE,
	/* Closing target file */
	GNOME_VFS_XFER_PHASE_CLOSETARGET,
	/* Deleting source file */
	GNOME_VFS_XFER_PHASE_DELETESOURCE,
	/* Setting attributes on target file */
	GNOME_VFS_XFER_PHASE_SETATTRIBUTES,
	/* Go to the next file (*) */
	GNOME_VFS_XFER_PHASE_FILECOMPLETED,
	/* cleaning up after a move (removing source files, etc.) */
	GNOME_VFS_XFER_PHASE_CLEANUP,
	/* Operation finished (*) */
	GNOME_VFS_XFER_PHASE_COMPLETED,
	GNOME_VFS_XFER_NUM_PHASES
} GnomeVFSXferPhase;
</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="GnomeVFSXferProgressInfo" role="struct"/>GnomeVFSXferProgressInfo</title>
<indexterm><primary>GnomeVFSXferProgressInfo</primary></indexterm><programlisting>typedef struct {
	/* Progress status (see above for a description).  */
	GnomeVFSXferProgressStatus status;

	/* VFS status code.  If `status' is
           `GNOME_VFS_XFER_PROGRESS_STATUS_VFSERROR', you should look at this
           member to know what has happened.  */
	GnomeVFSResult vfs_status;

	/* Current phase in the transferring process.  */
	GnomeVFSXferPhase phase;

	/* Source URI. FIXME bugzilla.eazel.com 1206: change name? */
	gchar *source_name;

	/* Destination URI. FIXME bugzilla.eazel.com 1206: change name? */
	gchar *target_name;

	/* Index of file being copied. */
	gulong file_index;

	/* Total number of files to be copied.  */
	gulong files_total;

	/* Total number of bytes to be copied.  */
	GnomeVFSFileSize bytes_total;

	/* Total size of this file (in bytes).  */
	GnomeVFSFileSize file_size;

	/* Bytes copied for this file so far.  */
	GnomeVFSFileSize bytes_copied;

	/* Total amount of data copied from the beginning.  */
	GnomeVFSFileSize total_bytes_copied;
	
	/* Target unique name used when duplicating, etc. to avoid collisions */ 
	gchar *duplicate_name;

	/* Count used in the unique name e.g. (copy 2), etc. */
	int duplicate_count;

	gboolean top_level_item;
	/* indicates that the copied/moved/deleted item is an actual item
	 * passed in the uri list rather than one encountered by recursively
	 * traversing directories. Used by metadata copying.
	 */

	/* Reserved for future expansions to GnomeVFSXferProgressInfo
	 * without having to break ABI compatibility */
	void *reserved1;
	void *reserved2;
} GnomeVFSXferProgressInfo;
</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="GnomeVFSXferProgressCallback" role="function"/>GnomeVFSXferProgressCallback ()</title>
<indexterm><primary>GnomeVFSXferProgressCallback</primary></indexterm><programlisting><link linkend="gint">gint</link>        (*GnomeVFSXferProgressCallback) (<link linkend="GnomeVFSXferProgressInfo">GnomeVFSXferProgressInfo</link> *info,
                                             <link linkend="gpointer">gpointer</link> data);</programlisting>
<para>
This is the prototype for functions called during a transfer operation to
report progress.  If the return value is `FALSE' (0), the operation is
interrupted immediately: the transfer function returns with the value of
`vfs_status' if it is different from `GNOME_VFS_OK', or with
`GNOME_VFS_ERROR_INTERRUPTED' otherwise.  The effect of other values depend
on the value of `info->status':

 - If the status is `GNOME_VFS_XFER_PROGRESS_STATUS_OK', the transfer
   operation is resumed normally.

 - If the status is `GNOME_VFS_XFER_PROGRESS_STATUS_VFSERROR', the return
   value is interpreted as a `GnomeVFSXferErrorAction' and operation is
   interrupted, continued or retried accordingly.

 - If the status is `GNOME_VFS_XFER_PROGRESS_STATUS_OVERWRITE', the return
   value is interpreted as a `GnomeVFSXferOverwriteAction'. 
</para><variablelist role="params">
<varlistentry><term><parameter>info</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="gnome-vfs-xfer-uri-list" role="function"/>gnome_vfs_xfer_uri_list ()</title>
<indexterm><primary>gnome_vfs_xfer_uri_list</primary></indexterm><programlisting><link linkend="GnomeVFSResult">GnomeVFSResult</link> gnome_vfs_xfer_uri_list      (const <link linkend="GList">GList</link> *source_uri_list,
                                             const <link linkend="GList">GList</link> *target_uri_list,
                                             <link linkend="GnomeVFSXferOptions">GnomeVFSXferOptions</link> xfer_options,
                                             <link linkend="GnomeVFSXferErrorMode">GnomeVFSXferErrorMode</link> error_mode,
                                             <link linkend="GnomeVFSXferOverwriteMode">GnomeVFSXferOverwriteMode</link> overwrite_mode,
                                             <link linkend="GnomeVFSXferProgressCallback">GnomeVFSXferProgressCallback</link> progress_callback,
                                             <link linkend="gpointer">gpointer</link> data);</programlisting>
<para>
This function will transfer multiple files to a multiple targets.  Given
source uri(s) and destination uri(s).   There are a list of options that
your application can use to control how the transfer is done.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>source_uri_list</parameter>&nbsp;:</term>
<listitem><simpara> a <link linkend="GList"><type>GList</type></link> of uris  (ie file://).
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>target_uri_list</parameter>&nbsp;:</term>
<listitem><simpara> a <link linkend="GList"><type>GList</type></link> of uris.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>xfer_options</parameter>&nbsp;:</term>
<listitem><simpara> These are options you wish to set for the transfer. For
instance by setting the xfer behavior you can either make a copy or a 
move.  
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>error_mode</parameter>&nbsp;:</term>
<listitem><simpara>  Decide how to behave if the xfer is interrupted.  For instance
you could set your application to return an error code in case of an
interruption.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>overwrite_mode</parameter>&nbsp;:</term>
<listitem><simpara> How to react if a file is being overwritten.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>progress_callback</parameter>&nbsp;:</term>
<listitem><simpara>  This is used to monitor the progress of a transfer.
Common use would be to check to see if the transfer is asking for permission
to overwrite a file.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
<listitem><simpara> Data to be passed back in callbacks from the xfer engine.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> If all goes well it returns <literal>GNOME_VFS_OK</literal>.  Check <link linkend="GnomeVFSResult"><type>GnomeVFSResult</type></link> for
other values.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="gnome-vfs-xfer-uri" role="function"/>gnome_vfs_xfer_uri ()</title>
<indexterm><primary>gnome_vfs_xfer_uri</primary></indexterm><programlisting><link linkend="GnomeVFSResult">GnomeVFSResult</link> gnome_vfs_xfer_uri           (const <link linkend="GnomeVFSURI">GnomeVFSURI</link> *source_uri,
                                             const <link linkend="GnomeVFSURI">GnomeVFSURI</link> *target_uri,
                                             <link linkend="GnomeVFSXferOptions">GnomeVFSXferOptions</link> xfer_options,
                                             <link linkend="GnomeVFSXferErrorMode">GnomeVFSXferErrorMode</link> error_mode,
                                             <link linkend="GnomeVFSXferOverwriteMode">GnomeVFSXferOverwriteMode</link> overwrite_mode,
                                             <link linkend="GnomeVFSXferProgressCallback">GnomeVFSXferProgressCallback</link> progress_callback,
                                             <link linkend="gpointer">gpointer</link> data);</programlisting>
<para>
This function will allow a person to transfer data from one location to another.
The locations are specified using URIs. Several options can be set for the operation.
These can be set using the <parameter>xfer_options</parameter>. In addition, there are callback
mechanisms and error codes to provide feedback in the transfer process.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>source_uri</parameter>&nbsp;:</term>
<listitem><simpara> This is the location of where your data resides.  
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>target_uri</parameter>&nbsp;:</term>
<listitem><simpara> This is the location of where you want your data to go.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>xfer_options</parameter>&nbsp;:</term>
<listitem><simpara> Set the kind of transfers you want.  These are:
GNOME_VFS_XFER_DEFAULT:  Default behavior.  Which is to do a straight one to
one copy.
GNOME_VFS_XFER_FOLLOW_LINKS:  This means follow the value of the symbolic
link when copying.  (ie treat a symbolic link as a directory)
GNOME_VFS_RECURSIVE:  Do a recursive copy of the source to the destination.
Equivalent to the cp -r option in GNU cp.
GNOME_VFS_XFER_SAME_FS:  This only allows copying onto the same filesystem.
GNOME_VFS_DELETE_ITEM: This is equivalent to a mv.  Where you will copy the
contents of the source to the destination and then remove data from the
source URI.
GNOME_VFS_XFER_EMPTY_DIRECTORIES: &lt;TBA&gt;
GNOME_VFS_XFER_NEW_UNIQUE_DIRECTORY:  This will create a directory if it
doesn't exist in the destination area.  Useful with the
GNOME_VFS_XFER_RECURSIVE xfer option.
GNOME_VFS_XFER_REMOVESOURCE: This option will remove the source data after
whatever xfer option has been taken.
GNOME_VFS_USE_UNIQUE_NAMES:  This is a check to make sure that what you copy
onto the destination is not overwritten.  It will only copy the unique items
from the source to the destination.
GNOME_VFS_XFER_LINK_ITEMS: &lt;TBA&gt;
GNOME_VFS_XFER_TARGET_DEFAULT_PERMS: This means that the target file will
not have the same permissions as of the source file, but will instead have the 
default permissions of the destination location.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>error_mode</parameter>&nbsp;:</term>
<listitem><simpara>  When this function returns you need to check the error code
for the results of the copy.  The results are generally:
GNOME_VFS_XFER_ERROR_MODE_ABORT: This means that the operation was aborted
by some sort of signal that interrupted the transfer.
GNOME_VFS_ERROR_MODE_QUERY: This means that no error has occured and that
you should query with the GNOME_VFS_XFER_PROGRESS_STATUS_VFSERROR.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>overwrite_mode</parameter>&nbsp;:</term>
<listitem><simpara>  This sets the options to deal with data that are duplicate
between the source and the destination.  Your choices are:
GNOME_VFS_XFER_OVERWRITE_MODE_ABORT:  This means abort the transfer if you
see duplicate data.
GNOME_VFS_XFER_OVERWRITE_MODE_REPLACE: Replace the files silently.  Don't
worry be happy.
GNOME_VFS_XFER_OVERWRITE_MODE_SKIP: Skip duplicate files silenty.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>progress_callback</parameter>&nbsp;:</term>
<listitem><simpara>  This is an important callback because this is how you
communicate with your transfer process.  
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
<listitem><simpara> Data to be passed back to callbacks from the xfer engine.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> an integer representing the result of the operation.

</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="gnome-vfs-xfer-delete-list" role="function"/>gnome_vfs_xfer_delete_list ()</title>
<indexterm><primary>gnome_vfs_xfer_delete_list</primary></indexterm><programlisting><link linkend="GnomeVFSResult">GnomeVFSResult</link> gnome_vfs_xfer_delete_list   (const <link linkend="GList">GList</link> *source_uri_list,
                                             <link linkend="GnomeVFSXferErrorMode">GnomeVFSXferErrorMode</link> error_mode,
                                             <link linkend="GnomeVFSXferOptions">GnomeVFSXferOptions</link> xfer_options,
                                             <link linkend="GnomeVFSXferProgressCallback">GnomeVFSXferProgressCallback</link> progress_callback,
                                             <link linkend="gpointer">gpointer</link> data);</programlisting>
<para>
Unlinks items in the <parameter>source_uri_list</parameter> from their filesystems.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>source_uri_list</parameter>&nbsp;:</term>
<listitem><simpara> This is a list containing uris.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>error_mode</parameter>&nbsp;:</term>
<listitem><simpara> Decide how you want to deal with interruptions.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>xfer_options</parameter>&nbsp;:</term>
<listitem><simpara> Set whatever transfer options you need.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>progress_callback</parameter>&nbsp;:</term>
<listitem><simpara> Callback to check on progress of transfer.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
<listitem><simpara> Data to be passed back in callbacks from the xfer engine.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <literal>GNOME_VFS_OK</literal> if successful, or the appropriate error code otherwise.
</simpara></listitem></varlistentry>
</variablelist></refsect2>

</refsect1>




</refentry>
