## Output to unstructured files

Output to unstructured files

## Synopsis

                        GsfOutput;
    gsf_off_t           gsf_output_size                     (GsfOutput *output);
    gboolean            gsf_output_close                    (GsfOutput *output);
    gsf_off_t           gsf_output_tell                     (GsfOutput *output);
    gboolean            gsf_output_seek                     (GsfOutput *output,
                                                             gsf_off_t offset,
                                                             GSeekType whence);
    gboolean            gsf_output_write                    (GsfOutput *output,
                                                             size_t num_bytes,
                                                             guint8 const *data);
    gboolean            gsf_output_puts                     (GsfOutput *output,
                                                             char const *line);
    gboolean            gsf_output_printf                   (GsfOutput *output,
                                                             char const *format,
                                                             ...);
    gsf_off_t           gsf_output_vprintf                  (GsfOutput *output,
                                                             char const *format,
                                                             va_list args);
    GsfOutfile *        gsf_output_container                (GsfOutput const *output);
    char const   *      gsf_output_name                     (GsfOutput const *output);
    gboolean            gsf_output_set_name_from_filename   (GsfOutput *output,
                                                             char const *filename);
    GQuark              gsf_output_error_id                 (void);
    gboolean            gsf_output_set_error                (GsfOutput *output,
                                                             gint code,
                                                             char const *format,
                                                             ...);
    GError const *      gsf_output_error                    (GsfOutput const *output);
    gboolean            gsf_output_is_closed                (GsfOutput const *output);
    gboolean            gsf_output_wrap                     (GObject *wrapper,
                                                             GsfOutput *wrapee);
    gboolean            gsf_output_unwrap                   (GObject *wrapper,
                                                             GsfOutput *wrapee);

## Object Hierarchy

      GObject
       +----GsfOutput
             +----GsfOutfile
             +----GsfOutputBzip
             +----GsfOutputCsv
             +----GsfOutputGZip
             +----GsfOutputIconv
             +----GsfOutputIOChannel
             +----GsfOutputMemory
             +----GsfOutputStdio

## Properties

      "is-closed"                gboolean              : Read
      "name"                     gchar*                : Read
      "position"                 gint64                : Read
      "size"                     gint64                : Read

## Description

## Details

### GsfOutput

    typedef struct _GsfOutput GsfOutput;

Class representing an output stream, counterpart to GsfInput.

### gsf_output_size ()

    gsf_off_t           gsf_output_size                     (GsfOutput *output);

Determine the size of the output stream `output`.

`output` : | GsfOutput
Returns : | the size of the output, or -1 if it does not have a size.

### gsf_output_close ()

    gboolean            gsf_output_close                    (GsfOutput *output);

Close a stream.

`output` : | GsfOutput
Returns : | `FALSE` on error

### gsf_output_tell ()

    gsf_off_t           gsf_output_tell                     (GsfOutput *output);

Tell the current position in `output`, similar to ftell(3).

`output` : | GsfOutput
Returns : | the current position in the file

### gsf_output_seek ()

    gboolean            gsf_output_seek                     (GsfOutput *output,
                                                             gsf_off_t offset,
                                                             GSeekType whence);

Reposition in output stream `output`. `whence` specifies what the offset is relative to: the beginning of the stream (`G_SEEK_SET`), current position in the stream (`G_SEEK_CUR`) or the end of the stream (`G_SEEK_END`). This function is similar to fseek(3).

`output` : | GsfOutput
`offset` : | Relative amount to reposition
`whence` : | What the offset is relative to.
Returns : | `FALSE` on error.

### gsf_output_write ()

    gboolean            gsf_output_write                    (GsfOutput *output,
                                                             size_t num_bytes,
                                                             guint8 const *data);

Write `num_bytes` of `data` to `output`.

`output` : | Output stream
`num_bytes` : | Number of bytes to write
`data` : | Data to write.
Returns : | `FALSE` on error.

### gsf_output_puts ()

    gboolean            gsf_output_puts                     (GsfOutput *output,
                                                             char const *line);

Like fputs, this assumes that the line already ends with a newline

`output` : | A GsfOutput
`line` : | `null` terminated string to write
Returns : | `TRUE` if successful, `FALSE` if not

### gsf_output_printf ()

    gboolean            gsf_output_printf                   (GsfOutput *output,
                                                             char const *format,
                                                             ...);

Output `Varargs` to `output` using the format string `format`, similar to printf(3).

`output` : | A GsfOutput
`format` : | The printf-style format string
`...` : | the arguments for `format`
Returns : | `TRUE` if successful, `FALSE` if not

### gsf_output_vprintf ()

    gsf_off_t           gsf_output_vprintf                  (GsfOutput *output,
                                                             char const *format,
                                                             va_list args);

Output `args` to `output` using the format string `format`, similar to vprintf(3).

`output` : | A GsfOutput
`format` : | The printf-style format string
`args` : | the arguments for `format`
Returns : | number of bytes printed, a negative value if not successful

### gsf_output_container ()

    GsfOutfile *        gsf_output_container                (GsfOutput const *output);

Returns : | but does not add a reference to `output`'s container. Potentially `NULL`. [transfer none]

### gsf_output_name ()

    char const   *      gsf_output_name                     (GsfOutput const *output);

Give the name of `output`.

`output` : | GsfOutput
Returns : | `output`'s name in utf8 form, DO NOT FREE THIS STRING

### gsf_output_set_name_from_filename ()

    gboolean            gsf_output_set_name_from_filename   (GsfOutput *output,
                                                             char const *filename);

### Note

This is a utility routine that should only be used by derived outputs.

`output` : | the output stream
`filename` : | the (fs-sys encoded) filename
Returns : | `TRUE` if the assignment was ok.

### gsf_output_error_id ()

    GQuark              gsf_output_error_id                 (void);

### gsf_output_set_error ()

    gboolean            gsf_output_set_error                (GsfOutput *output,
                                                             gint code,
                                                             char const *format,
                                                             ...);

### Note

This is a utility routine that should only be used by derived outputs.

`output` : | GsfOutput
`code` : | The error id
`format` : | printf style format string
`...` : | arguments for `format`
Returns : | Always returns `FALSE` to facilitate its use.

### gsf_output_error ()

    GError const *      gsf_output_error                    (GsfOutput const *output);

Returns : | the last error logged on the output, or `NULL`.

### gsf_output_is_closed ()

    gboolean            gsf_output_is_closed                (GsfOutput const *output);

`output` : | GsfOutput
Returns : | `TRUE` if `output` has already been closed.

### gsf_output_wrap ()

    gboolean            gsf_output_wrap                     (GObject *wrapper,
                                                             GsfOutput *wrapee);

Returns : | `TRUE` if the wrapping succeeded.

### gsf_output_unwrap ()

    gboolean            gsf_output_unwrap                   (GObject *wrapper,
                                                             GsfOutput *wrapee);

Returns : | `TRUE` if the unwrapping succeeded.

## Property Details

### The `"is-closed"` property

      "is-closed"                gboolean              : Read

Whether the Output is Closed.

Default value: FALSE

### The `"name"` property

      "name"                     gchar*                : Read

The Output's Name.

Default value: NULL

### The `"position"` property

      "position"                 gint64                : Read

The Output's Current Position.

Allowed values: >= 0

Default value: 0

### The `"size"` property

      "size"                     gint64                : Read

The Output's Size.

Allowed values: >= 0

Default value: 0