## MS OLE2 MS OLE2 |

## Synopsis

                        GsfInfileMSOle;
    GsfInfile*          gsf_infile_msole_new                (GsfInput *source,
                                                             GError **err);
    gboolean            gsf_infile_msole_get_class_id       (GsfInfileMSOle const *ole,
                                                             guint8 *res);
                        GsfOutfileMSOle;
    GsfOutfile*         gsf_outfile_msole_new               (GsfOutput *sink);
    GsfOutfile*         gsf_outfile_msole_new_full          (GsfOutput *sink,
                                                             guint bb_size,
                                                             guint sb_size);
    gboolean            gsf_outfile_msole_set_class_id      (GsfOutfileMSOle *ole,
                                                             guint8 const *clsid);
    GError*             gsf_msole_metadata_read             (GsfInput *in,
                                                             GsfDocMetaData *accum);
    gboolean            gsf_msole_metadata_write            (GsfOutput *out,
                                                             GsfDocMetaData const *meta_data,
                                                             gboolean doc_not_component);
    GIConv              gsf_msole_iconv_open_codepages_for_export
                                                            (int codepage_to,
                                                             char const *from);
    GIConv              gsf_msole_iconv_open_codepage_for_import
                                                            (char const *to,
                                                             int codepage);
    GIConv              gsf_msole_iconv_open_for_export     (void);
    GIConv              gsf_msole_iconv_open_codepage_for_export
                                                            (int codepage_to);
    GIConv              gsf_msole_iconv_open_for_import     (int codepage);
    int                 gsf_msole_iconv_win_codepage        (void);
    guint               gsf_msole_codepage_to_lid           (int codepage);
    int                 gsf_msole_lid_to_codepage           (guint lid);
    gchar*              gsf_msole_lid_to_codepage_str       (guint lid);
    guint               gsf_msole_lid_for_language          (char const *lang);
    charconst *         gsf_msole_language_for_lid          (guint lid);
    GByteArray*         gsf_msole_inflate                   (GsfInput *input,
                                                             gsf_off_t offset);

## Object Hierarchy

      GObject
       +----GsfInput
             +----GsfInfile
                   +----GsfInfileMSOle

      GObject
       +----GsfOutput
             +----GsfOutfile
                   +----GsfOutfileMSOle

## Description

## Details

### GsfInfileMSOle

    typedef struct _GsfInfileMSOle GsfInfileMSOle;

### gsf_infile_msole_new ()

    GsfInfile*          gsf_infile_msole_new                (GsfInput *source,
                                                             GError **err);

Opens the root directory of an MS OLE file.

### Note

This adds a reference to `source`.

`source` : | GsfInput
`err` : | optional place to store an error
Returns : | the new ole file handler

### gsf_infile_msole_get_class_id ()

    gboolean            gsf_infile_msole_get_class_id       (GsfInfileMSOle const *ole,
                                                             guint8 *res);

Retrieves the 16 byte indentifier (often a GUID in MS Windows apps) stored within the directory associated with `ole` and stores it in `res`.

`ole` : | a GsfInfileMSOle
`res` : | 16 byte identifier (often a GUID in MS Windows apps)
Returns : | TRUE on success

### GsfOutfileMSOle

    typedef struct _GsfOutfileMSOle GsfOutfileMSOle;

### gsf_outfile_msole_new ()

    GsfOutfile*         gsf_outfile_msole_new               (GsfOutput *sink);

Creates the root directory of an MS OLE file and manages the addition of children.

### Note

This adds a reference to `sink`.

`sink` : | a GsfOutput to hold the OLE2 file
Returns : | the new ole file handler.

### gsf_outfile_msole_new_full ()

    GsfOutfile*         gsf_outfile_msole_new_full          (GsfOutput *sink,
                                                             guint bb_size,
                                                             guint sb_size);

Creates the root directory of an MS OLE file and manages the addition of children.

### Note

This adds a reference to `sink`.

`sink` : | a GsfOutput to hold the OLE2 file.
`bb_size` : | size of large blocks.
`sb_size` : | size of small blocks.
Returns : | the new ole file handler.

### gsf_outfile_msole_set_class_id ()

    gboolean            gsf_outfile_msole_set_class_id      (GsfOutfileMSOle *ole,
                                                             guint8 const *clsid);

Write `clsid` to the directory associated with `ole`.

`ole` : | a GsfOutfileMSOle
`clsid` : | 16 byte identifier (often a GUID in MS Windows apps)
Returns : | TRUE on success.

### gsf_msole_metadata_read ()

    GError*             gsf_msole_metadata_read             (GsfInput *in,
                                                             GsfDocMetaData *accum);

Read a stream formated as a set of MS OLE properties from `in` and store the results in `accum`.

`in` : | GsfInput
`accum` : | GsfDocMetaData
Returns : | GError which the caller must free on error.

### gsf_msole_metadata_write ()

    gboolean            gsf_msole_metadata_write            (GsfOutput *out,
                                                             GsfDocMetaData const *meta_data,
                                                             gboolean doc_not_component);

`out` : | GsfOutput
`meta_data` : | GsfDocMetaData
`doc_not_component` : | a kludge to differentiate DocumentSummary from Summary
Returns : | `TRUE` on success;

### gsf_msole_iconv_open_codepages_for_export ()

    GIConv              gsf_msole_iconv_open_codepages_for_export
                                                            (int codepage_to,
                                                             char const *from);

`codepage_to` : |
`from` : |
Returns : | an iconv converter to go from utf8 -> to our best guess at a useful windows codepage.

### gsf_msole_iconv_open_codepage_for_import ()

    GIConv              gsf_msole_iconv_open_codepage_for_import
                                                            (char const *to,
                                                             int codepage);

`to` : |
`codepage` : |
Returns : | an iconv converter for `codepage` -> utf8.

### gsf_msole_iconv_open_for_export ()

    GIConv              gsf_msole_iconv_open_for_export     (void);

Returns : | an iconv convert to go from utf8 -> to our best guess at a useful windows codepage.

### gsf_msole_iconv_open_codepage_for_export ()

    GIConv              gsf_msole_iconv_open_codepage_for_export
                                                            (int codepage_to);

`codepage_to` : |
Returns : | an iconv converter to go from utf8 -> to our best guess at a useful windows codepage.

### gsf_msole_iconv_open_for_import ()

    GIConv              gsf_msole_iconv_open_for_import     (int codepage);

`codepage` : |
Returns : | an iconv converter for single byte encodings `codepage` -> utf8. Attempt to handle the semantics of a specification for multibyte encodings since this is only supposed to be used for single bytes.

### gsf_msole_iconv_win_codepage ()

    int                 gsf_msole_iconv_win_codepage        (void);

Returns : | our best guess at the applicable windows code page based on an environment variable or the current locale.

### gsf_msole_codepage_to_lid ()

    guint               gsf_msole_codepage_to_lid           (int codepage);

`codepage` : |
Returns : |

### gsf_msole_lid_to_codepage ()

    int                 gsf_msole_lid_to_codepage           (guint lid);

`lid` : |
Returns : | our best guess at the codepage for the given language id

### gsf_msole_lid_to_codepage_str ()

    gchar*              gsf_msole_lid_to_codepage_str       (guint lid);

`lid` : |
Returns : | the Iconv codepage string for the given LID. Return value must be `g_free()`'d

### gsf_msole_lid_for_language ()

    guint               gsf_msole_lid_for_language          (char const *lang);

`lang` : |
Returns : | the LID (Language Identifier) for the input language. If lang is `null`, return 0x0400 ("-none-"), and not 0x0000 ("no proofing")

### gsf_msole_language_for_lid ()

    charconst *         gsf_msole_language_for_lid          (guint lid);

`lid` : |
Returns : | the xx_YY style string (can be just xx or xxx) for the given LID. Return value must not be freed. If the LID is not found, is set to 0x0400, or is set to 0x0000, will return "-none-"

### gsf_msole_inflate ()

    GByteArray*         gsf_msole_inflate                   (GsfInput *input,
                                                             gsf_off_t offset);

Decompresses an LZ compressed stream.

`input` : | stream to read from
`offset` : | offset into it for start byte of compresse stream
Returns : | A GByteArray that the caller is responsible for freeing