## Reading and Writing

Reading and Writing —

## Synopsis

    enum        GnomeVFSSeekPosition;
    GnomeVFSResult gnome_vfs_read               (GnomeVFSHandle *handle,
                                                 gpointer buffer,
                                                 GnomeVFSFileSize bytes,
                                                 GnomeVFSFileSize *bytes_read);
    GnomeVFSResult gnome_vfs_write              (GnomeVFSHandle *handle,
                                                 gconstpointer buffer,
                                                 GnomeVFSFileSize bytes,
                                                 GnomeVFSFileSize *bytes_written);
    GnomeVFSResult gnome_vfs_seek               (GnomeVFSHandle *handle,
                                                 GnomeVFSSeekPosition whence,
                                                 GnomeVFSFileOffset offset);
    GnomeVFSResult gnome_vfs_tell               (GnomeVFSHandle *handle,
                                                 GnomeVFSFileSize *offset_return);

## Description

Reading and writing operations are explained, also `gnome_vfs_seek`, which is used to move the file pointer inside the file.

## Details

### enum GnomeVFSSeekPosition

    typedef enum {
            GNOME_VFS_SEEK_START,
            GNOME_VFS_SEEK_CURRENT,
            GNOME_VFS_SEEK_END
    } GnomeVFSSeekPosition;

This is used to specify the start position for seek operations.

`GNOME_VFS_SEEK_START` | Start of the file.
`GNOME_VFS_SEEK_CURRENT` | Current position.
`GNOME_VFS_SEEK_END` | End of the file.

### gnome_vfs_read ()

    GnomeVFSResult gnome_vfs_read               (GnomeVFSHandle *handle,
                                                 gpointer buffer,
                                                 GnomeVFSFileSize bytes,
                                                 GnomeVFSFileSize *bytes_read);

Read `bytes` from `handle`. As with Unix system calls, the number of bytes read can effectively be less than `bytes` on return and will be stored in `bytes_read`.

`handle` : | Handle of the file to read data from
`buffer` : | Pointer to a buffer that must be at least `bytes` bytes large
`bytes` : | Number of bytes to read
`bytes_read` : | Pointer to a variable that will hold the number of bytes effectively read on return.
Returns : | An integer representing the result of the operation

### gnome_vfs_write ()

    GnomeVFSResult gnome_vfs_write              (GnomeVFSHandle *handle,
                                                 gconstpointer buffer,
                                                 GnomeVFSFileSize bytes,
                                                 GnomeVFSFileSize *bytes_written);

Write `bytes` into the file opened through `handle`. As with Unix system calls, the number of bytes written can effectively be less than `bytes` on return and will be stored in `bytes_written`.

`handle` : | Handle of the file to write data to
`buffer` : | Pointer to the buffer containing the data to be written
`bytes` : | Number of bytes to write
`bytes_written` : | Pointer to a variable that will hold the number of bytes effectively written on return.
Returns : | An integer representing the result of the operation

### gnome_vfs_seek ()

    GnomeVFSResult gnome_vfs_seek               (GnomeVFSHandle *handle,
                                                 GnomeVFSSeekPosition whence,
                                                 GnomeVFSFileOffset offset);

Set the current position for reading/writing through `handle`.

`handle` : | Handle for which the current position must be changed
`whence` : | Integer value representing the starting position
`offset` : | Number of bytes to skip from the position specified by `whence` (a positive value means to move forward; a negative one to move backwards)
Returns : |

### gnome_vfs_tell ()

    GnomeVFSResult gnome_vfs_tell               (GnomeVFSHandle *handle,
                                                 GnomeVFSFileSize *offset_return);

Return the current position on `handle`. This is the point in the file pointed to by handle that reads and writes will occur on.

`handle` : | Handle for which the current position must be retrieved
`offset_return` : | Pointer to a variable that will contain the current position on return
Returns : | An integer representing the result of the operation