## Reading and Writing from local files and directories Reading and Writing from local files and directories |

## Synopsis

                        GsfInputStdio;
    GsfInput *          gsf_input_stdio_new                 (char const *filename,
                                                             GError **err);
    GsfInput *          gsf_input_stdio_new_FILE            (char const *filename,
                                                             FILE *file,
                                                             gboolean keep_open);
                        GsfOutputStdio;
    GsfOutput *         gsf_output_stdio_new                (char const *filename,
                                                             GError **err);
    GsfOutput *         gsf_output_stdio_new_full           (char const *filename,
                                                             GError **err,
                                                             char const *first_property_name,
                                                             ...);
    GsfOutput *         gsf_output_stdio_new_valist         (char const *filename,
                                                             GError **err,
                                                             char const *first_property_name,
                                                             va_list var_args);
    GsfOutput *         gsf_output_stdio_new_FILE           (char const *filename,
                                                             FILE *file,
                                                             gboolean keep_open);
                        GsfOutfileStdio;
    GsfOutfile *        gsf_outfile_stdio_new               (char const *root,
                                                             GError **err);
    GsfOutfile *        gsf_outfile_stdio_new_full          (char const *root,
                                                             GError **err,
                                                             char const *first_property_name,
                                                             ...);
    GsfOutfile *        gsf_outfile_stdio_new_valist        (char const *root,
                                                             GError **err,
                                                             char const *first_property_name,
                                                             va_list var_args);
                        GsfInfileStdio;
    GsfInfile *         gsf_infile_stdio_new                (char const *root,
                                                             GError **err);

## Object Hierarchy

      GObject
       +----GsfInput
             +----GsfInputStdio

      GObject
       +----GsfOutput
             +----GsfOutputStdio

      GObject
       +----GsfOutput
             +----GsfOutfile
                   +----GsfOutfileStdio

      GObject
       +----GsfInput
             +----GsfInfile
                   +----GsfInfileStdio

## Description

## Details

### GsfInputStdio

    typedef struct _GsfInputStdio GsfInputStdio;

### gsf_input_stdio_new ()

    GsfInput *          gsf_input_stdio_new                 (char const *filename,
                                                             GError **err);

`filename` : | in utf8.
`err` : | place to store a GError if anything goes wrong. [allow-none]
Returns : | a new file or `NULL`.

### gsf_input_stdio_new_FILE ()

    GsfInput *          gsf_input_stdio_new_FILE            (char const *filename,
                                                             FILE *file,
                                                             gboolean keep_open);

Assumes ownership of `file` when succeeding. If `keep_open` is true, ownership reverts to caller when the GsfInput is closed.

`filename` : | The filename corresponding to `file`.
`file` : | an existing stdio FILE *. [transfer full]
`keep_open` : | Should `file` be closed when the wrapper is closed
Returns : | a new GsfInput wrapper for `file`. Note that if the file is not seekable, this function will make a local copy of the entire file.

### GsfOutputStdio

    typedef struct _GsfOutputStdio GsfOutputStdio;

### gsf_output_stdio_new ()

    GsfOutput *         gsf_output_stdio_new                (char const *filename,
                                                             GError **err);

`filename` : | name of file to create or replace.
`err` : | place to store a GError if anything goes wrong. [allow-none]
Returns : | a new file or `NULL`.

### gsf_output_stdio_new_full ()

    GsfOutput *         gsf_output_stdio_new_full           (char const *filename,
                                                             GError **err,
                                                             char const *first_property_name,
                                                             ...);

`filename` : | name of file to create or replace.
`err` : | place to store a GError if anything goes wrong. [allow-none]
`first_property_name` : | `NULL` terminated list of properties
Returns : | a new file or `NULL`.

### gsf_output_stdio_new_valist ()

    GsfOutput *         gsf_output_stdio_new_valist         (char const *filename,
                                                             GError **err,
                                                             char const *first_property_name,
                                                             va_list var_args);

### gsf_output_stdio_new_FILE ()

    GsfOutput *         gsf_output_stdio_new_FILE           (char const *filename,
                                                             FILE *file,
                                                             gboolean keep_open);

Assumes ownership of `file`. If `keep_open` is true, ownership reverts to caller when the GsfOutput is closed.

`filename` : | The filename corresponding to `file`.
`file` : | an existing stdio FILE *. [transfer full]
`keep_open` : | Should `file` be closed when the wrapper is closed
Returns : | a new GsfOutput wrapper for `file`. Warning: the result will be seekable only if `file` is seekable. If it is seekable, the resulting GsfOutput object will seek relative to `file`'s beginning, not its current location at the time the GsfOutput object is created.

### GsfOutfileStdio

    typedef struct _GsfOutfileStdio GsfOutfileStdio;

### gsf_outfile_stdio_new ()

    GsfOutfile *        gsf_outfile_stdio_new               (char const *root,
                                                             GError **err);

`root` : | root directory in utf8.
`err` : | place to store a GError if anything goes wrong. [allow-none]
Returns : | a new outfile or `NULL`.

### gsf_outfile_stdio_new_full ()

    GsfOutfile *        gsf_outfile_stdio_new_full          (char const *root,
                                                             GError **err,
                                                             char const *first_property_name,
                                                             ...);

`root` : | root directory in utf8.
`err` : | place to store a GError if anything goes wrong. [allow-none]
`first_property_name` : | name of first property to set
`...` : | value of first property, followed by more properties, `NULL`-terminated
Returns : | a new outfile or `NULL`. [transfer full]

### gsf_outfile_stdio_new_valist ()

    GsfOutfile *        gsf_outfile_stdio_new_valist        (char const *root,
                                                             GError **err,
                                                             char const *first_property_name,
                                                             va_list var_args);

`root` : | root directory in utf8.
`err` : | place to store a GError if anything goes wrong. [allow-none]
`first_property_name` : | name of first property to set
`var_args` : | a `NULL`-terminated va_list
Returns : | a new outfile or `NULL`. [transfer full]

### GsfInfileStdio

    typedef struct _GsfInfileStdio GsfInfileStdio;

### gsf_infile_stdio_new ()

    GsfInfile *         gsf_infile_stdio_new                (char const *root,
                                                             GError **err);

`root` : | in locale dependent encoding
`err` : | optionally `NULL`.
Returns : | a new file or `NULL`.