## 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);
    char const *        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

## Properties

      "big-block-size"           guint                 : Read / Write / Construct Only
      "sink"                     GsfOutput*            : Read / Write / Construct Only
      "small-block-size"         guint                 : Read / Write / Construct Only

## 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` : | Identifier (often a GUID in MS Windows apps). [array fixed-size=16]
Returns : | `TRUE` on success.

### gsf_msole_metadata_read ()

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

### Warning

`gsf_msole_metadata_read` is deprecated and should not be used in newly-written code. 1.14.24, use gsf_doc_meta_data_read_from_msole

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

`in` : | GsfInput
`accum` : | GsfDocMetaData
Returns : | A GError if there was an error. [transfer full]

### gsf_msole_metadata_write ()

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

### Warning

`gsf_msole_metadata_write` is deprecated and should not be used in newly-written code. 1.14.24, use gsf_doc_meta_data_write_to_msole

`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);

NOTE: skipped since GIConv is not exported to introspection.

`codepage_to` : | the target code page.
`from` : | the source encoding.
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);

NOTE: skipped since GIConv is not exported to introspection.

`to` : | the target encoding.
`codepage` : | the source code page.
Returns : | an iconv converter for `codepage` -> utf8.

### gsf_msole_iconv_open_for_export ()

    GIConv              gsf_msole_iconv_open_for_export     (void);

NOTE: skipped since GIConv is not exported to introspection.

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);

NOTE: skipped since GIConv is not exported to introspection.

`codepage_to` : | the target code page.
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);

NOTE: skipped since GIConv is not exported to introspection.

`codepage` : | the source code page.
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);

### gsf_msole_lid_to_codepage ()

    int                 gsf_msole_lid_to_codepage           (guint lid);

`lid` : | numerical language id
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` : | numerical language id
Returns : | the Iconv codepage string for the given LID. [transfer full]

### gsf_msole_lid_for_language ()

    guint               gsf_msole_lid_for_language          (char const *lang);

`lang` : | Language id, i.e., locale name. [allow-none]
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 ()

    char const *        gsf_msole_language_for_lid          (guint lid);

`lid` : | numerical language id
Returns : | the xx_YY style string (can be just xx or xxx) for the given LID. If the LID is not found, is set to 0x0400, or is set to 0x0000, will return "-none-". [transfer 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. [transfer full]

## Property Details

### The `"big-block-size"` property

      "big-block-size"           guint                 : Read / Write / Construct Only

The size of the OLE's big blocks.

Allowed values: [128,4096]

Default value: 512

### The `"sink"` property

      "sink"                     GsfOutput*            : Read / Write / Construct Only

The destination for writes.

### The `"small-block-size"` property

      "small-block-size"         guint                 : Read / Write / Construct Only

The size of the OLE's small blocks.

Allowed values: [8,4096]

Default value: 64