## 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` : | optionally NULL.
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`. If `keep_open` is true, ownership reverts to caller when the GsfObject is closed.

`filename` : | The filename corresponding to `file`.
`file` : | an existing stdio FILE *
`keep_open` : | Should `file` be closed when the wrapper is closed
Returns : | a new GsfInput wrapper for `file`. Note: the file must be seekable, so this will not work for stdin when that is a tty or pipe.

### 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` : | optionally `NULL`.
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` : | optionally `NULL`.
`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);

`filename` : |
`err` : |
`first_property_name` : |
`var_args` : |
Returns : |

### 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 GsfObject is closed.

`filename` : | The filename corresponding to `file`.
`file` : | an existing stdio FILE *
`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` : | optionally NULL.
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` : | optionally NULL.
`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.

### 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` : | optionally NULL.
`first_property_name` : | name of first property to set
`var_args` : | a `NULL`-terminated va_list
Returns : | a new outfile or NULL.

### 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`.