Input from unstructured files

## Input from unstructured files Input from unstructured files — |

## Synopsis

                GsfInput;
    GsfInfile*  gsf_input_container             (GsfInput *input);
    GsfInput*   gsf_input_dup                   (GsfInput *input,
                                                 GError **err);
    gsf_off_t   gsf_input_size                  (GsfInput *input);
    gboolean    gsf_input_eof                   (GsfInput *input);
    gsf_off_t   gsf_input_remaining             (GsfInput *input);
    gsf_off_t   gsf_input_tell                  (GsfInput *input);
    gboolean    gsf_input_seek                  (GsfInput *input,
                                                 gsf_off_t offset,
                                                 GSeekType whence);
    GQuark      gsf_input_error                 (void);
    GsfInput*   gsf_input_sibling               (GsfInput const *input,
                                                 char const *name,
                                                 GError **err);

    gboolean    gsf_input_copy                  (GsfInput *input,
                                                 GsfOutput *output);
    GsfInput*   gsf_input_uncompress            (GsfInput *src);

    gboolean    gsf_input_set_name              (GsfInput *input,
                                                 char const *name);
    gboolean    gsf_input_set_container         (GsfInput *input,
                                                 GsfInfile *container);
    gboolean    gsf_input_set_size              (GsfInput *input,
                                                 gsf_off_t size);
    gboolean    gsf_input_seek_emulate          (GsfInput *input,
                                                 gsf_off_t pos);

## Object Hierarchy

      GObject
       +----GsfInput
             +----GsfInfile
             +----GsfInputGZip
             +----GsfInputMemory
             +----GsfInputStdio
             +----GsfInputTextline

## Properties

      "eof"                  gboolean              : Read
      "name"                 gchararray            : Read
      "position"             gint64                : Read
      "remaining"            gint64                : Read
      "size"                 gint64                : Read

## Description

## Details

### GsfInput

    typedef struct _GsfInput GsfInput;

### gsf_input_container ()

    GsfInfile*  gsf_input_container             (GsfInput *input);

`input` : | the input stream
Returns : | , but does not add a reference to `input`'s container. Potentially NULL

### gsf_input_dup ()

    GsfInput*   gsf_input_dup                   (GsfInput *input,
                                                 GError **err);

Duplicates input `src` leaving the new one at the same offset.

`input` : | The input to duplicate
`err` : | optionally NULL
Returns : | : the duplicate, or NULL on error

### gsf_input_size ()

    gsf_off_t   gsf_input_size                  (GsfInput *input);

Looks up and caches the number of bytes in the input

`input` : | The input
Returns : | : the size or -1 on error

### gsf_input_eof ()

    gboolean    gsf_input_eof                   (GsfInput *input);

Are we at the end of the file ?

`input` : | the input
Returns : | : TRUE if the input is at the eof.

### gsf_input_remaining ()

    gsf_off_t   gsf_input_remaining             (GsfInput *input);

`input` : | the input stream
Returns : | the number of bytes left in the file.

### gsf_input_tell ()

    gsf_off_t   gsf_input_tell                  (GsfInput *input);

`input` : | the input stream
Returns : | the current offset in the file.

### gsf_input_seek ()

    gboolean    gsf_input_seek                  (GsfInput *input,
                                                 gsf_off_t offset,
                                                 GSeekType whence);

`input` : | the input stream
`offset` : | target offset
`whence` : | determines whether the offset is relative to the beginning or the end of the stream, or to the current location.
Returns : | TRUE on error.

### gsf_input_error ()

    GQuark      gsf_input_error                 (void);

Returns : | : A utility quark to flag a GError as being an input problem.

### gsf_input_sibling ()

    GsfInput*   gsf_input_sibling               (GsfInput const *input,
                                                 char const *name,
                                                 GError **err);

`input` : |
`name` : |
`err` : |
Returns : |

### gsf_input_copy ()

    gboolean    gsf_input_copy                  (GsfInput *input,
                                                 GsfOutput *output);

Copy the contents from `input` to `output` from their respective current positions. So if you want to be sure to copy *everything*, make sure to call gsf_input_seek (input, 0, G_SEEK_SET) and gsf_output_seek (output, 0, G_SEEK_SET) first, if applicable.

`input` : | a non-null GsfInput
`output` : | a non-null GsfOutput
Returns : | : TRUE on Success

### gsf_input_uncompress ()

    GsfInput*   gsf_input_uncompress            (GsfInput *src);

`src` : | stream to be uncompressed.
Returns : | A stream equivalent to the source stream, but uncompressed if the source was compressed. This functions takes ownership of the incoming reference and yields a new one as its output.

### gsf_input_set_name ()

    gboolean    gsf_input_set_name              (GsfInput *input,
                                                 char const *name);

protected.

`input` : | the input stream
`name` : | the new name of the stream, or NULL.
Returns : | : TRUE if the assignment was ok.

### gsf_input_set_container ()

    gboolean    gsf_input_set_container         (GsfInput *input,
                                                 GsfInfile *container);

`input` : | the input stream
`container` : |
Returns : | : TRUE if the assignment was ok.

### gsf_input_set_size ()

    gboolean    gsf_input_set_size              (GsfInput *input,
                                                 gsf_off_t size);

`input` : | the input stream
`size` : | the size of the stream
Returns : | : TRUE if the assignment was ok.

### gsf_input_seek_emulate ()

    gboolean    gsf_input_seek_emulate          (GsfInput *input,
                                                 gsf_off_t pos);

`input` : | stream to emulate seek for
`pos` : | absolute position to seek to
Returns : | : TRUE if the emulation failed.

## Properties

### The "`eof`" property

      "eof"                  gboolean              : Read

End Of File.

Default value: FALSE

### The "`name`" property

      "name"                 gchararray            : Read

The Input's Name.

Default value: NULL

### The "`position`" property

      "position"             gint64                : Read

The Output's Current Position.

Allowed values: >= 0

Default value: 0

### The "`remaining`" property

      "remaining"            gint64                : Read

Amount of Data Remaining.

Allowed values: >= 0

Default value: 0

### The "`size`" property

      "size"                 gint64                : Read

The Input's Size.

Allowed values: >= 0

Default value: 0