## GMimeStream

GMimeStream — Abstract stream class

## Functions

void | g_mime_stream_construct ()
ssize_t | g_mime_stream_read ()
ssize_t | g_mime_stream_write ()
int | g_mime_stream_flush ()
gint64 | g_mime_stream_seek ()
gint64 | g_mime_stream_tell ()
int | g_mime_stream_reset ()
gboolean | g_mime_stream_eos ()
int | g_mime_stream_close ()
gint64 | g_mime_stream_length ()
GMimeStream * | g_mime_stream_substream ()
void | g_mime_stream_set_bounds ()
ssize_t | g_mime_stream_write_string ()
ssize_t | g_mime_stream_printf ()
gint64 | g_mime_stream_write_to_stream ()
gint64 | g_mime_stream_writev ()

## Types and Values

enum | GMimeSeekWhence
| GMimeStreamIOVector
struct | GMimeStream

## Object Hierarchy

        GObject
        ╰── GMimeStream
            ├── GMimeStreamBuffer
            ├── GMimeStreamCat
            ├── GMimeStreamFile
            ├── GMimeStreamFilter
            ├── GMimeStreamFs
            ├── GMimeStreamGIO
            ├── GMimeStreamMem
            ├── GMimeStreamMmap
            ├── GMimeStreamNull
            ╰── GMimeStreamPipe

## Description

Streams are the fundamental method for reading and writing data used by GMime. You'll probably notice that the basic API is similar to that of the low-level Unix I/O layer (`read()`, `write()`, `lseek()`, etc) with some additional nicities such as a printf-like function.

## Functions

### g_mime_stream_construct ()

    void
    g_mime_stream_construct (GMimeStream *stream,
                             gint64 start,
                             gint64 end);

Initializes a new stream with bounds `start` and `end` .

#### Parameters

stream | a GMimeStream |
start | start boundary |
end | end boundary |

### g_mime_stream_read ()

    ssize_t
    g_mime_stream_read (GMimeStream *stream,
                        char *buf,
                        size_t len);

Attempts to read up to `len` bytes from `stream` into `buf` .

#### Parameters

stream | a GMimeStream |
buf | buffer. | [array length=len][element-type guint8]
len | buffer length |

#### Returns

the number of bytes read or `-1` on fail.

### g_mime_stream_write ()

    ssize_t
    g_mime_stream_write (GMimeStream *stream,
                         const char *buf,
                         size_t len);

Attempts to write up to `len` bytes of `buf` to `stream` .

#### Parameters

stream | a GMimeStream |
buf | buffer. | [array length=len][element-type guint8]
len | buffer length |

#### Returns

the number of bytes written or `-1` on fail.

### g_mime_stream_flush ()

    int
    g_mime_stream_flush (GMimeStream *stream);

Sync's the stream to disk.

#### Parameters

stream | a GMimeStream |

#### Returns

`0` on success or `-1` on fail.

### g_mime_stream_seek ()

    gint64
    g_mime_stream_seek (GMimeStream *stream,
                        gint64 offset,
                        GMimeSeekWhence whence);

Repositions the offset of the stream `stream` to the argument `offset` according to the directive `whence` as follows:

GMIME_STREAM_SEEK_SET: Seek `offset` bytes relative to the beginning (bound_start) of the stream.

GMIME_STREAM_SEEK_CUR: Seek `offset` bytes relative to the current offset of the stream.

GMIME_STREAM_SEEK_END: Seek `offset` bytes relative to the end of the stream (bound_end if non-negative).

#### Parameters

stream | a GMimeStream |
offset | positional offset |
whence | seek directive |

#### Returns

the resultant position on success or `-1` on fail.

### g_mime_stream_tell ()

    gint64
    g_mime_stream_tell (GMimeStream *stream);

Gets the current offset within the stream.

#### Parameters

stream | a GMimeStream |

#### Returns

the current position within the stream or `-1` on fail.

### g_mime_stream_reset ()

    int
    g_mime_stream_reset (GMimeStream *stream);

Resets the stream.

#### Parameters

stream | a GMimeStream |

#### Returns

`0` on success or `-1` on fail.

### g_mime_stream_eos ()

    gboolean
    g_mime_stream_eos (GMimeStream *stream);

Tests the end-of-stream indicator for `stream` .

#### Parameters

stream | a GMimeStream |

#### Returns

`TRUE` on EOS or `FALSE` otherwise.

### g_mime_stream_close ()

    int
    g_mime_stream_close (GMimeStream *stream);

Closes the stream.

#### Parameters

stream | a GMimeStream |

#### Returns

`0` on success or `-1` on fail.

### g_mime_stream_length ()

    gint64
    g_mime_stream_length (GMimeStream *stream);

Gets the length of the stream.

#### Parameters

stream | a GMimeStream |

#### Returns

the length of the stream or `-1` if unknown.

### g_mime_stream_substream ()

    GMimeStream *
    g_mime_stream_substream (GMimeStream *stream,
                             gint64 start,
                             gint64 end);

Creates a new substream of `stream` with bounds `start` and `end` .

#### Parameters

stream | a GMimeStream |
start | start boundary |
end | end boundary |

#### Returns

a substream of `stream` with bounds `start` and `end` .

[transfer full]

### g_mime_stream_set_bounds ()

    void
    g_mime_stream_set_bounds (GMimeStream *stream,
                              gint64 start,
                              gint64 end);

Set the bounds on a stream.

#### Parameters

stream | a GMimeStream |
start | start boundary |
end | end boundary |

### g_mime_stream_write_string ()

    ssize_t
    g_mime_stream_write_string (GMimeStream *stream,
                                const char *str);

Writes `string` to `stream` .

#### Parameters

stream | a GMimeStream |
str | string to write |

#### Returns

the number of bytes written or `-1` on fail.

### g_mime_stream_printf ()

    ssize_t
    g_mime_stream_printf (GMimeStream *stream,
                          const char *fmt,
                          ...);

Write formatted output to a stream.

#### Parameters

stream | a GMimeStream |
fmt | format |
... | arguments |

#### Returns

the number of bytes written or `-1` on fail.

### g_mime_stream_write_to_stream ()

    gint64
    g_mime_stream_write_to_stream (GMimeStream *src,
                                   GMimeStream *dest);

Attempts to write the source stream to the destination stream.

#### Parameters

src | source stream |
dest | destination stream |

#### Returns

the number of bytes written or `-1` on fail.

### g_mime_stream_writev ()

    gint64
    g_mime_stream_writev (GMimeStream *stream,
                          GMimeStreamIOVector *vector,
                          size_t count);

Writes at most `count` blocks described by `vector` to `stream` .

#### Parameters

stream | a GMimeStream |
vector | a GMimeStreamIOVector. | [array length=count]
count | number of vector elements |

#### Returns

the number of bytes written or `-1` on fail.

## Types and Values

### enum GMimeSeekWhence

Relative seek position.

#### Members

GMIME_STREAM_SEEK_SET | Seek relative to the beginning of the stream. |
GMIME_STREAM_SEEK_CUR | Seek relative to the current position in the stream. |
GMIME_STREAM_SEEK_END | Seek relative to the end of the stream. |

### GMimeStreamIOVector

    typedef struct {
    	void *data;
    	size_t len;
    } GMimeStreamIOVector;

An I/O vector for use with `g_mime_stream_writev()`.

#### Members

void *`data`; | data to pass to the I/O function. |
size_t `len`; | length of the data, in bytes. |

### struct GMimeStream

    struct GMimeStream;

Abstract I/O stream class.

#### Members