blob: a1a9056f2f91dee2332c7fbda61c991552a7af9a [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>IO Channels</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="index.html" title="GLib Reference Manual">
<link rel="up" href="glib-core.html" title="GLib Core Application Support">
<link rel="prev" href="glib-Memory-Allocation.html" title="Memory Allocation">
<link rel="next" href="glib-Error-Reporting.html" title="Error Reporting">
<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="p" href="glib-Memory-Allocation.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="glib-core.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">GLib Reference Manual</th>
<td><a accesskey="n" href="glib-Error-Reporting.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts">
<a href="#glib-IO-Channels.synopsis" class="shortcut">Top</a>
 | 
<a href="#glib-IO-Channels.description" class="shortcut">Description</a>
</td></tr>
</table>
<div class="refentry" title="IO Channels">
<a name="glib-IO-Channels"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="glib-IO-Channels.top_of_page"></a>IO Channels</span></h2>
<p>IO Channels — portable support for using files, pipes and
sockets</p>
</td>
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsynopsisdiv" title="Synopsis">
<a name="glib-IO-Channels.synopsis"></a><h2>Synopsis</h2>
<pre class="synopsis">
#include &lt;glib.h&gt;
<a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel">GIOChannel</a>;
<a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="returnvalue">GIOChannel</span></a>* <a class="link" href="glib-IO-Channels.html#g-io-channel-unix-new" title="g_io_channel_unix_new ()">g_io_channel_unix_new</a> (<em class="parameter"><code><span class="type">int</span> fd</code></em>);
<a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="returnvalue">gint</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-unix-get-fd" title="g_io_channel_unix_get_fd ()">g_io_channel_unix_get_fd</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);
<a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="returnvalue">GIOChannel</span></a>* <a class="link" href="glib-IO-Channels.html#g-io-channel-win32-new-fd" title="g_io_channel_win32_new_fd ()">g_io_channel_win32_new_fd</a> (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> fd</code></em>);
<a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="returnvalue">GIOChannel</span></a> * <a class="link" href="glib-IO-Channels.html#g-io-channel-win32-new-socket" title="g_io_channel_win32_new_socket ()">g_io_channel_win32_new_socket</a> (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> socket</code></em>);
<a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="returnvalue">GIOChannel</span></a> * <a class="link" href="glib-IO-Channels.html#g-io-channel-win32-new-messages" title="g_io_channel_win32_new_messages ()">g_io_channel_win32_new_messages</a> (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> hwnd</code></em>);
<span class="returnvalue">void</span> <a class="link" href="glib-IO-Channels.html#g-io-channel-init" title="g_io_channel_init ()">g_io_channel_init</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);
<a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="returnvalue">GIOChannel</span></a>* <a class="link" href="glib-IO-Channels.html#g-io-channel-new-file" title="g_io_channel_new_file ()">g_io_channel_new_file</a> (<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *filename</code></em>,
<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *mode</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);
<a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-read-chars" title="g_io_channel_read_chars ()">g_io_channel_read_chars</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *buf</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> count</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> *bytes_read</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);
<a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-read-unichar" title="g_io_channel_read_unichar ()">g_io_channel_read_unichar</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Unicode-Manipulation.html#gunichar" title="gunichar"><span class="type">gunichar</span></a> *thechar</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);
<a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-read-line" title="g_io_channel_read_line ()">g_io_channel_read_line</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> **str_return</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> *length</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> *terminator_pos</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);
<a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-read-line-string" title="g_io_channel_read_line_string ()">g_io_channel_read_line_string</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Strings.html#GString" title="GString"><span class="type">GString</span></a> *buffer</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> *terminator_pos</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);
<a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-read-to-end" title="g_io_channel_read_to_end ()">g_io_channel_read_to_end</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> **str_return</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> *length</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);
<a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-write-chars" title="g_io_channel_write_chars ()">g_io_channel_write_chars</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *buf</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gssize" title="gssize"><span class="type">gssize</span></a> count</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> *bytes_written</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);
<a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-write-unichar" title="g_io_channel_write_unichar ()">g_io_channel_write_unichar</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Unicode-Manipulation.html#gunichar" title="gunichar"><span class="type">gunichar</span></a> thechar</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);
<a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-flush" title="g_io_channel_flush ()">g_io_channel_flush</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);
<a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-seek-position" title="g_io_channel_seek_position ()">g_io_channel_seek_position</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint64" title="gint64"><span class="type">gint64</span></a> offset</code></em>,
<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GSeekType" title="enum GSeekType"><span class="type">GSeekType</span></a> type</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);
enum <a class="link" href="glib-IO-Channels.html#GSeekType" title="enum GSeekType">GSeekType</a>;
<a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-shutdown" title="g_io_channel_shutdown ()">g_io_channel_shutdown</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="type">gboolean</span></a> flush</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **err</code></em>);
enum <a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus">GIOStatus</a>;
enum <a class="link" href="glib-IO-Channels.html#GIOChannelError" title="enum GIOChannelError">GIOChannelError</a>;
#define <a class="link" href="glib-IO-Channels.html#G-IO-CHANNEL-ERROR:CAPS" title="G_IO_CHANNEL_ERROR">G_IO_CHANNEL_ERROR</a>
<a class="link" href="glib-IO-Channels.html#GIOChannelError" title="enum GIOChannelError"><span class="returnvalue">GIOChannelError</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-error-from-errno" title="g_io_channel_error_from_errno ()">g_io_channel_error_from_errno</a> (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> en</code></em>);
<a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="returnvalue">GIOChannel</span></a> * <a class="link" href="glib-IO-Channels.html#g-io-channel-ref" title="g_io_channel_ref ()">g_io_channel_ref</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);
<span class="returnvalue">void</span> <a class="link" href="glib-IO-Channels.html#g-io-channel-unref" title="g_io_channel_unref ()">g_io_channel_unref</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);
<a class="link" href="glib-The-Main-Event-Loop.html#GSource" title="GSource"><span class="returnvalue">GSource</span></a> * <a class="link" href="glib-IO-Channels.html#g-io-create-watch" title="g_io_create_watch ()">g_io_create_watch</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOCondition" title="enum GIOCondition"><span class="type">GIOCondition</span></a> condition</code></em>);
<a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a> <a class="link" href="glib-IO-Channels.html#g-io-add-watch" title="g_io_add_watch ()">g_io_add_watch</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOCondition" title="enum GIOCondition"><span class="type">GIOCondition</span></a> condition</code></em>,
<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOFunc" title="GIOFunc ()"><span class="type">GIOFunc</span></a> func</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
<a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a> <a class="link" href="glib-IO-Channels.html#g-io-add-watch-full" title="g_io_add_watch_full ()">g_io_add_watch_full</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> priority</code></em>,
<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOCondition" title="enum GIOCondition"><span class="type">GIOCondition</span></a> condition</code></em>,
<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOFunc" title="GIOFunc ()"><span class="type">GIOFunc</span></a> func</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
<em class="parameter"><code><a class="link" href="glib-Datasets.html#GDestroyNotify" title="GDestroyNotify ()"><span class="type">GDestroyNotify</span></a> notify</code></em>);
enum <a class="link" href="glib-IO-Channels.html#GIOCondition" title="enum GIOCondition">GIOCondition</a>;
<a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> (<a class="link" href="glib-IO-Channels.html#GIOFunc" title="GIOFunc ()">*GIOFunc</a>) (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *source</code></em>,
<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOCondition" title="enum GIOCondition"><span class="type">GIOCondition</span></a> condition</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="type">gpointer</span></a> data</code></em>);
<a class="link" href="glib-IO-Channels.html#GIOFuncs" title="GIOFuncs">GIOFuncs</a>;
<a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="returnvalue">gsize</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-get-buffer-size" title="g_io_channel_get_buffer_size ()">g_io_channel_get_buffer_size</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);
<span class="returnvalue">void</span> <a class="link" href="glib-IO-Channels.html#g-io-channel-set-buffer-size" title="g_io_channel_set_buffer_size ()">g_io_channel_set_buffer_size</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> size</code></em>);
<a class="link" href="glib-IO-Channels.html#GIOCondition" title="enum GIOCondition"><span class="returnvalue">GIOCondition</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-get-buffer-condition" title="g_io_channel_get_buffer_condition ()">g_io_channel_get_buffer_condition</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);
<a class="link" href="glib-IO-Channels.html#GIOFlags" title="enum GIOFlags"><span class="returnvalue">GIOFlags</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-get-flags" title="g_io_channel_get_flags ()">g_io_channel_get_flags</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);
<a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-set-flags" title="g_io_channel_set_flags ()">g_io_channel_set_flags</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOFlags" title="enum GIOFlags"><span class="type">GIOFlags</span></a> flags</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);
enum <a class="link" href="glib-IO-Channels.html#GIOFlags" title="enum GIOFlags">GIOFlags</a>;
const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a>* <a class="link" href="glib-IO-Channels.html#g-io-channel-get-line-term" title="g_io_channel_get_line_term ()">g_io_channel_get_line_term</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> *length</code></em>);
<span class="returnvalue">void</span> <a class="link" href="glib-IO-Channels.html#g-io-channel-set-line-term" title="g_io_channel_set_line_term ()">g_io_channel_set_line_term</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *line_term</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> length</code></em>);
<a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-get-buffered" title="g_io_channel_get_buffered ()">g_io_channel_get_buffered</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);
<span class="returnvalue">void</span> <a class="link" href="glib-IO-Channels.html#g-io-channel-set-buffered" title="g_io_channel_set_buffered ()">g_io_channel_set_buffered</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="type">gboolean</span></a> buffered</code></em>);
const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a>* <a class="link" href="glib-IO-Channels.html#g-io-channel-get-encoding" title="g_io_channel_get_encoding ()">g_io_channel_get_encoding</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);
<a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-set-encoding" title="g_io_channel_set_encoding ()">g_io_channel_set_encoding</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *encoding</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);
<a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-get-close-on-unref" title="g_io_channel_get_close_on_unref ()">g_io_channel_get_close_on_unref</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);
<span class="returnvalue">void</span> <a class="link" href="glib-IO-Channels.html#g-io-channel-set-close-on-unref" title="g_io_channel_set_close_on_unref ()">g_io_channel_set_close_on_unref</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="type">gboolean</span></a> do_close</code></em>);
<a class="link" href="glib-IO-Channels.html#GIOError" title="enum GIOError"><span class="returnvalue">GIOError</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-read" title="g_io_channel_read ()">g_io_channel_read</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *buf</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> count</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> *bytes_read</code></em>);
enum <a class="link" href="glib-IO-Channels.html#GIOError" title="enum GIOError">GIOError</a>;
<a class="link" href="glib-IO-Channels.html#GIOError" title="enum GIOError"><span class="returnvalue">GIOError</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-write" title="g_io_channel_write ()">g_io_channel_write</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *buf</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> count</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> *bytes_written</code></em>);
<a class="link" href="glib-IO-Channels.html#GIOError" title="enum GIOError"><span class="returnvalue">GIOError</span></a> <a class="link" href="glib-IO-Channels.html#g-io-channel-seek" title="g_io_channel_seek ()">g_io_channel_seek</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint64" title="gint64"><span class="type">gint64</span></a> offset</code></em>,
<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GSeekType" title="enum GSeekType"><span class="type">GSeekType</span></a> type</code></em>);
<span class="returnvalue">void</span> <a class="link" href="glib-IO-Channels.html#g-io-channel-close" title="g_io_channel_close ()">g_io_channel_close</a> (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);
</pre>
</div>
<div class="refsect1" title="Description">
<a name="glib-IO-Channels.description"></a><h2>Description</h2>
<p>
The <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> data type aims to provide a portable method for
using file descriptors, pipes, and sockets, and integrating them
into the <a class="link" href="glib-The-Main-Event-Loop.html" title="The Main Event Loop">main event
loop</a>. Currently full support is available on UNIX platforms,
support for Windows is only partially complete.
</p>
<p>
To create a new <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> on UNIX systems use
<a class="link" href="glib-IO-Channels.html#g-io-channel-unix-new" title="g_io_channel_unix_new ()"><code class="function">g_io_channel_unix_new()</code></a>. This works for plain file descriptors,
pipes and sockets. Alternatively, a channel can be created for a
file in a system independent manner using <a class="link" href="glib-IO-Channels.html#g-io-channel-new-file" title="g_io_channel_new_file ()"><code class="function">g_io_channel_new_file()</code></a>.
</p>
<p>
Once a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> has been created, it can be used in a generic
manner with the functions <a class="link" href="glib-IO-Channels.html#g-io-channel-read-chars" title="g_io_channel_read_chars ()"><code class="function">g_io_channel_read_chars()</code></a>,
<a class="link" href="glib-IO-Channels.html#g-io-channel-write-chars" title="g_io_channel_write_chars ()"><code class="function">g_io_channel_write_chars()</code></a>, <a class="link" href="glib-IO-Channels.html#g-io-channel-seek-position" title="g_io_channel_seek_position ()"><code class="function">g_io_channel_seek_position()</code></a>, and
<a class="link" href="glib-IO-Channels.html#g-io-channel-shutdown" title="g_io_channel_shutdown ()"><code class="function">g_io_channel_shutdown()</code></a>.
</p>
<p>
To add a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> to the <a class="link" href="glib-The-Main-Event-Loop.html" title="The Main Event Loop">main event loop</a> use
<a class="link" href="glib-IO-Channels.html#g-io-add-watch" title="g_io_add_watch ()"><code class="function">g_io_add_watch()</code></a> or <a class="link" href="glib-IO-Channels.html#g-io-add-watch-full" title="g_io_add_watch_full ()"><code class="function">g_io_add_watch_full()</code></a>. Here you specify which
events you are interested in on the <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>, and provide a
function to be called whenever these events occur.
</p>
<p>
<a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> instances are created with an initial reference count of
1. <a class="link" href="glib-IO-Channels.html#g-io-channel-ref" title="g_io_channel_ref ()"><code class="function">g_io_channel_ref()</code></a> and <a class="link" href="glib-IO-Channels.html#g-io-channel-unref" title="g_io_channel_unref ()"><code class="function">g_io_channel_unref()</code></a> can be used to
increment or decrement the reference count respectively. When the
reference count falls to 0, the <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> is freed. (Though it
isn't closed automatically, unless it was created using
<code class="function">g_io_channel_new_from_file()</code>.) Using <a class="link" href="glib-IO-Channels.html#g-io-add-watch" title="g_io_add_watch ()"><code class="function">g_io_add_watch()</code></a> or
<a class="link" href="glib-IO-Channels.html#g-io-add-watch-full" title="g_io_add_watch_full ()"><code class="function">g_io_add_watch_full()</code></a> increments a channel's reference count.
</p>
<p>
The new functions <a class="link" href="glib-IO-Channels.html#g-io-channel-read-chars" title="g_io_channel_read_chars ()"><code class="function">g_io_channel_read_chars()</code></a>,
<a class="link" href="glib-IO-Channels.html#g-io-channel-read-line" title="g_io_channel_read_line ()"><code class="function">g_io_channel_read_line()</code></a>, <a class="link" href="glib-IO-Channels.html#g-io-channel-read-line-string" title="g_io_channel_read_line_string ()"><code class="function">g_io_channel_read_line_string()</code></a>,
<a class="link" href="glib-IO-Channels.html#g-io-channel-read-to-end" title="g_io_channel_read_to_end ()"><code class="function">g_io_channel_read_to_end()</code></a>, <a class="link" href="glib-IO-Channels.html#g-io-channel-write-chars" title="g_io_channel_write_chars ()"><code class="function">g_io_channel_write_chars()</code></a>,
<a class="link" href="glib-IO-Channels.html#g-io-channel-seek-position" title="g_io_channel_seek_position ()"><code class="function">g_io_channel_seek_position()</code></a>, and <a class="link" href="glib-IO-Channels.html#g-io-channel-flush" title="g_io_channel_flush ()"><code class="function">g_io_channel_flush()</code></a> should not be
mixed with the deprecated functions <a class="link" href="glib-IO-Channels.html#g-io-channel-read" title="g_io_channel_read ()"><code class="function">g_io_channel_read()</code></a>,
<a class="link" href="glib-IO-Channels.html#g-io-channel-write" title="g_io_channel_write ()"><code class="function">g_io_channel_write()</code></a>, and <a class="link" href="glib-IO-Channels.html#g-io-channel-seek" title="g_io_channel_seek ()"><code class="function">g_io_channel_seek()</code></a> on the same channel.
</p>
</div>
<div class="refsect1" title="Details">
<a name="glib-IO-Channels.details"></a><h2>Details</h2>
<div class="refsect2" title="GIOChannel">
<a name="GIOChannel"></a><h3>GIOChannel</h3>
<pre class="programlisting">typedef struct {
} GIOChannel;
</pre>
<p>
A data structure representing an IO Channel. The fields should be
considered private and should only be accessed with the following
functions.
</p>
</div>
<hr>
<div class="refsect2" title="g_io_channel_unix_new ()">
<a name="g-io-channel-unix-new"></a><h3>g_io_channel_unix_new ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="returnvalue">GIOChannel</span></a>* g_io_channel_unix_new (<em class="parameter"><code><span class="type">int</span> fd</code></em>);</pre>
<p>
Creates a new <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> given a file descriptor. On UNIX systems
this works for plain files, pipes, and sockets.
</p>
<p>
The returned <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> has a reference count of 1.
</p>
<p>
The default encoding for <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> is UTF-8. If your application
is reading output from a command using via pipe, you may need to set
the encoding to the encoding of the current locale (see
<a class="link" href="glib-Character-Set-Conversion.html#g-get-charset" title="g_get_charset ()"><code class="function">g_get_charset()</code></a>) with the <a class="link" href="glib-IO-Channels.html#g-io-channel-set-encoding" title="g_io_channel_set_encoding ()"><code class="function">g_io_channel_set_encoding()</code></a> function.
</p>
<p>
If you want to read raw binary data without interpretation, then
call the <a class="link" href="glib-IO-Channels.html#g-io-channel-set-encoding" title="g_io_channel_set_encoding ()"><code class="function">g_io_channel_set_encoding()</code></a> function with <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> for the
encoding argument.
</p>
<p>
This function is available in GLib on Windows, too, but you should
avoid using it on Windows. The domain of file descriptors and
sockets overlap. There is no way for GLib to know which one you mean
in case the argument you pass to this function happens to be both a
valid file descriptor and socket. If that happens a warning is
issued, and GLib assumes that it is the file descriptor you mean.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>fd</code></em> :</span></p></td>
<td>a file descriptor.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>a new <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_unix_get_fd ()">
<a name="g-io-channel-unix-get-fd"></a><h3>g_io_channel_unix_get_fd ()</h3>
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="returnvalue">gint</span></a> g_io_channel_unix_get_fd (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);</pre>
<p>
Returns the file descriptor of the <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>.
</p>
<p>
On Windows this function returns the file descriptor or socket of
the <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>, created with <a class="link" href="glib-IO-Channels.html#g-io-channel-unix-new" title="g_io_channel_unix_new ()"><code class="function">g_io_channel_unix_new()</code></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>the file descriptor of the <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_win32_new_fd ()">
<a name="g-io-channel-win32-new-fd"></a><h3>g_io_channel_win32_new_fd ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="returnvalue">GIOChannel</span></a>* g_io_channel_win32_new_fd (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> fd</code></em>);</pre>
<p>
Creates a new <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> given a file descriptor on Windows. This
works for file descriptors from the C runtime.
</p>
<p>
This function works for file descriptors as returned by the <code class="function">open()</code>,
<code class="function">creat()</code>, <code class="function">pipe()</code> and <code class="function">fileno()</code> calls in the Microsoft C runtime. In
order to meaningfully use this function your code should use the
same C runtime as GLib uses, which is msvcrt.dll. Note that in
current Microsoft compilers it is near impossible to convince it to
build code that would use msvcrt.dll. The last Microsoft compiler
version that supported using msvcrt.dll as the C runtime was version
6. The GNU compiler and toolchain for Windows, also known as Mingw,
fully supports msvcrt.dll.
</p>
<p>
If you have created a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> for a file descriptor and started
watching (polling) it, you shouldn't call <code class="function">read()</code> on the file
descriptor. This is because adding polling for a file descriptor is
implemented in GLib on Windows by starting a thread that sits
blocked in a <code class="function">read()</code> from the file descriptor most of the time. All
reads from the file descriptor should be done by this internal GLib
thread. Your code should call only <a class="link" href="glib-IO-Channels.html#g-io-channel-read" title="g_io_channel_read ()"><code class="function">g_io_channel_read()</code></a>.
</p>
<p>
This function is available only in GLib on Windows.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>fd</code></em> :</span></p></td>
<td>a C library file descriptor.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>a new <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_win32_new_socket ()">
<a name="g-io-channel-win32-new-socket"></a><h3>g_io_channel_win32_new_socket ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="returnvalue">GIOChannel</span></a> * g_io_channel_win32_new_socket (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> socket</code></em>);</pre>
<p>
Creates a new <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> given a socket on Windows.
</p>
<p>
This function works for sockets created by Winsock. It's available
only in GLib on Windows.
</p>
<p>
Polling a <a class="link" href="glib-The-Main-Event-Loop.html#GSource" title="GSource"><span class="type">GSource</span></a> created to watch a channel for a socket puts the
socket in non-blocking mode. This is a side-effect of the
implementation and unavoidable.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>socket</code></em> :</span></p></td>
<td>a Winsock socket
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>a new <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_win32_new_messages ()">
<a name="g-io-channel-win32-new-messages"></a><h3>g_io_channel_win32_new_messages ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="returnvalue">GIOChannel</span></a> * g_io_channel_win32_new_messages (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> hwnd</code></em>);</pre>
<p>
Creates a new <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> given a window handle on Windows.
</p>
<p>
This function creates a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> that can be used to poll for
Windows messages for the window in question.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>hwnd</code></em> :</span></p></td>
<td>a window handle.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>a new <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_init ()">
<a name="g-io-channel-init"></a><h3>g_io_channel_init ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span> g_io_channel_init (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);</pre>
<p>
Initializes a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> struct.
</p>
<p>
This is called by each of the above functions when creating a
<a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>, and so is not often needed by the application
programmer (unless you are creating a new type of <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>).
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_new_file ()">
<a name="g-io-channel-new-file"></a><h3>g_io_channel_new_file ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="returnvalue">GIOChannel</span></a>* g_io_channel_new_file (<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *filename</code></em>,
<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *mode</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>
Open a file <em class="parameter"><code>filename</code></em> as a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> using mode <em class="parameter"><code>mode</code></em>. This
channel will be closed when the last reference to it is dropped,
so there is no need to call <a class="link" href="glib-IO-Channels.html#g-io-channel-close" title="g_io_channel_close ()"><code class="function">g_io_channel_close()</code></a> (though doing
so will not cause problems, as long as no attempt is made to
access the channel after it is closed).
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>filename</code></em> :</span></p></td>
<td>A string containing the name of a file
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>mode</code></em> :</span></p></td>
<td>One of "r", "w", "a", "r+", "w+", "a+". These have
the same meaning as in <code class="function">fopen()</code>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
<td>A location to return an error of type <a class="link" href="glib-File-Utilities.html#G-FILE-ERROR:CAPS" title="G_FILE_ERROR"><code class="literal">G_FILE_ERROR</code></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> A <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> on success, <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> on failure.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_read_chars ()">
<a name="g-io-channel-read-chars"></a><h3>g_io_channel_read_chars ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> g_io_channel_read_chars (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *buf</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> count</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> *bytes_read</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>
Replacement for <a class="link" href="glib-IO-Channels.html#g-io-channel-read" title="g_io_channel_read ()"><code class="function">g_io_channel_read()</code></a> with the new API.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
<td>a buffer to read data into
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>count</code></em> :</span></p></td>
<td>the size of the buffer. Note that the buffer may
not be complelely filled even if there is data
in the buffer if the remaining data is not a
complete character.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>bytes_read</code></em> :</span></p></td>
<td>The number of bytes read. This may be zero even on
success if count &lt; 6 and the channel's encoding is non-<a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>.
This indicates that the next UTF-8 character is too wide for
the buffer.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
<td>a location to return an error of type <a class="link" href="glib-Character-Set-Conversion.html#GConvertError" title="enum GConvertError"><span class="type">GConvertError</span></a>
or <a class="link" href="glib-IO-Channels.html#GIOChannelError" title="enum GIOChannelError"><span class="type">GIOChannelError</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> the status of the operation.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_read_unichar ()">
<a name="g-io-channel-read-unichar"></a><h3>g_io_channel_read_unichar ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> g_io_channel_read_unichar (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Unicode-Manipulation.html#gunichar" title="gunichar"><span class="type">gunichar</span></a> *thechar</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>
Reads a Unicode character from <em class="parameter"><code>channel</code></em>.
This function cannot be called on a channel with <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> encoding.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>thechar</code></em> :</span></p></td>
<td>a location to return a character
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
<td>a location to return an error of type <a class="link" href="glib-Character-Set-Conversion.html#GConvertError" title="enum GConvertError"><span class="type">GConvertError</span></a>
or <a class="link" href="glib-IO-Channels.html#GIOChannelError" title="enum GIOChannelError"><span class="type">GIOChannelError</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> a <a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="type">GIOStatus</span></a>
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_read_line ()">
<a name="g-io-channel-read-line"></a><h3>g_io_channel_read_line ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> g_io_channel_read_line (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> **str_return</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> *length</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> *terminator_pos</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>
Reads a line, including the terminating character(s),
from a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> into a newly-allocated string.
<em class="parameter"><code>str_return</code></em> will contain allocated memory if the return
is <a class="link" href="glib-IO-Channels.html#G-IO-STATUS-NORMAL:CAPS"><code class="literal">G_IO_STATUS_NORMAL</code></a>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>str_return</code></em> :</span></p></td>
<td>The line read from the <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>, including the
line terminator. This data should be freed with <a class="link" href="glib-Memory-Allocation.html#g-free" title="g_free ()"><code class="function">g_free()</code></a>
when no longer needed. This is a nul-terminated string.
If a <em class="parameter"><code>length</code></em> of zero is returned, this will be <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> instead.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
<td>location to store length of the read data, or <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>terminator_pos</code></em> :</span></p></td>
<td>location to store position of line terminator, or <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
<td>A location to return an error of type <a class="link" href="glib-Character-Set-Conversion.html#GConvertError" title="enum GConvertError"><span class="type">GConvertError</span></a>
or <a class="link" href="glib-IO-Channels.html#GIOChannelError" title="enum GIOChannelError"><span class="type">GIOChannelError</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> the status of the operation.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_read_line_string ()">
<a name="g-io-channel-read-line-string"></a><h3>g_io_channel_read_line_string ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> g_io_channel_read_line_string (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Strings.html#GString" title="GString"><span class="type">GString</span></a> *buffer</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> *terminator_pos</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>
Reads a line from a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>, using a <a class="link" href="glib-Strings.html#GString" title="GString"><span class="type">GString</span></a> as a buffer.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td>
<td>a <a class="link" href="glib-Strings.html#GString" title="GString"><span class="type">GString</span></a> into which the line will be written.
If <em class="parameter"><code>buffer</code></em> already contains data, the old data will
be overwritten.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>terminator_pos</code></em> :</span></p></td>
<td>location to store position of line terminator, or <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
<td>a location to store an error of type <a class="link" href="glib-Character-Set-Conversion.html#GConvertError" title="enum GConvertError"><span class="type">GConvertError</span></a>
or <a class="link" href="glib-IO-Channels.html#GIOChannelError" title="enum GIOChannelError"><span class="type">GIOChannelError</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> the status of the operation.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_read_to_end ()">
<a name="g-io-channel-read-to-end"></a><h3>g_io_channel_read_to_end ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> g_io_channel_read_to_end (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> **str_return</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> *length</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>
Reads all the remaining data from the file.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>str_return</code></em> :</span></p></td>
<td>Location to store a pointer to a string holding
the remaining data in the <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>. This data should
be freed with <a class="link" href="glib-Memory-Allocation.html#g-free" title="g_free ()"><code class="function">g_free()</code></a> when no longer needed. This
data is terminated by an extra nul character, but there
may be other nuls in the intervening data.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
<td>location to store length of the data
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
<td>location to return an error of type <a class="link" href="glib-Character-Set-Conversion.html#GConvertError" title="enum GConvertError"><span class="type">GConvertError</span></a>
or <a class="link" href="glib-IO-Channels.html#GIOChannelError" title="enum GIOChannelError"><span class="type">GIOChannelError</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> <a class="link" href="glib-IO-Channels.html#G-IO-STATUS-NORMAL:CAPS"><code class="literal">G_IO_STATUS_NORMAL</code></a> on success.
This function never returns <a class="link" href="glib-IO-Channels.html#G-IO-STATUS-EOF:CAPS"><code class="literal">G_IO_STATUS_EOF</code></a>.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_write_chars ()">
<a name="g-io-channel-write-chars"></a><h3>g_io_channel_write_chars ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> g_io_channel_write_chars (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *buf</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gssize" title="gssize"><span class="type">gssize</span></a> count</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> *bytes_written</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>
Replacement for <a class="link" href="glib-IO-Channels.html#g-io-channel-write" title="g_io_channel_write ()"><code class="function">g_io_channel_write()</code></a> with the new API.
</p>
<p>
On seekable channels with encodings other than <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> or UTF-8, generic
mixing of reading and writing is not allowed. A call to <a class="link" href="glib-IO-Channels.html#g-io-channel-write-chars" title="g_io_channel_write_chars ()"><code class="function">g_io_channel_write_chars()</code></a>
may only be made on a channel from which data has been read in the
cases described in the documentation for <a class="link" href="glib-IO-Channels.html#g-io-channel-set-encoding" title="g_io_channel_set_encoding ()"><code class="function">g_io_channel_set_encoding()</code></a>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
<td>a buffer to write data from
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>count</code></em> :</span></p></td>
<td>the size of the buffer. If -1, the buffer
is taken to be a nul-terminated string.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>bytes_written</code></em> :</span></p></td>
<td>The number of bytes written. This can be nonzero
even if the return value is not <a class="link" href="glib-IO-Channels.html#G-IO-STATUS-NORMAL:CAPS"><code class="literal">G_IO_STATUS_NORMAL</code></a>.
If the return value is <a class="link" href="glib-IO-Channels.html#G-IO-STATUS-NORMAL:CAPS"><code class="literal">G_IO_STATUS_NORMAL</code></a> and the
channel is blocking, this will always be equal
to <em class="parameter"><code>count</code></em> if <em class="parameter"><code>count</code></em> &gt;= 0.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
<td>a location to return an error of type <a class="link" href="glib-Character-Set-Conversion.html#GConvertError" title="enum GConvertError"><span class="type">GConvertError</span></a>
or <a class="link" href="glib-IO-Channels.html#GIOChannelError" title="enum GIOChannelError"><span class="type">GIOChannelError</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> the status of the operation.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_write_unichar ()">
<a name="g-io-channel-write-unichar"></a><h3>g_io_channel_write_unichar ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> g_io_channel_write_unichar (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Unicode-Manipulation.html#gunichar" title="gunichar"><span class="type">gunichar</span></a> thechar</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>
Writes a Unicode character to <em class="parameter"><code>channel</code></em>.
This function cannot be called on a channel with <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> encoding.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>thechar</code></em> :</span></p></td>
<td>a character
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
<td>location to return an error of type <a class="link" href="glib-Character-Set-Conversion.html#GConvertError" title="enum GConvertError"><span class="type">GConvertError</span></a>
or <a class="link" href="glib-IO-Channels.html#GIOChannelError" title="enum GIOChannelError"><span class="type">GIOChannelError</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> a <a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="type">GIOStatus</span></a>
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_flush ()">
<a name="g-io-channel-flush"></a><h3>g_io_channel_flush ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> g_io_channel_flush (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>
Flushes the write buffer for the GIOChannel.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
<td>location to store an error of type <a class="link" href="glib-IO-Channels.html#GIOChannelError" title="enum GIOChannelError"><span class="type">GIOChannelError</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> the status of the operation: One of
<a class="link" href="glib-IO-Channels.html#G-IO-STATUS-NORMAL:CAPS"><span class="type">G_IO_STATUS_NORMAL</span></a>, <a class="link" href="glib-IO-Channels.html#G-IO-STATUS-AGAIN:CAPS"><span class="type">G_IO_STATUS_AGAIN</span></a>, or
<a class="link" href="glib-IO-Channels.html#G-IO-STATUS-ERROR:CAPS"><span class="type">G_IO_STATUS_ERROR</span></a>.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_seek_position ()">
<a name="g-io-channel-seek-position"></a><h3>g_io_channel_seek_position ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> g_io_channel_seek_position (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint64" title="gint64"><span class="type">gint64</span></a> offset</code></em>,
<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GSeekType" title="enum GSeekType"><span class="type">GSeekType</span></a> type</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>
Replacement for <a class="link" href="glib-IO-Channels.html#g-io-channel-seek" title="g_io_channel_seek ()"><code class="function">g_io_channel_seek()</code></a> with the new API.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>offset</code></em> :</span></p></td>
<td>The offset in bytes from the position specified by <em class="parameter"><code>type</code></em>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GSeekType" title="enum GSeekType"><span class="type">GSeekType</span></a>. The type <a class="link" href="glib-IO-Channels.html#G-SEEK-CUR:CAPS"><code class="literal">G_SEEK_CUR</code></a> is only allowed in those
cases where a call to <a class="link" href="glib-IO-Channels.html#g-io-channel-set-encoding" title="g_io_channel_set_encoding ()"><code class="function">g_io_channel_set_encoding()</code></a>
is allowed. See the documentation for
<a class="link" href="glib-IO-Channels.html#g-io-channel-set-encoding" title="g_io_channel_set_encoding ()"><code class="function">g_io_channel_set_encoding()</code></a> for details.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
<td>A location to return an error of type <a class="link" href="glib-IO-Channels.html#GIOChannelError" title="enum GIOChannelError"><span class="type">GIOChannelError</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> the status of the operation.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="enum GSeekType">
<a name="GSeekType"></a><h3>enum GSeekType</h3>
<pre class="programlisting">typedef enum
{
G_SEEK_CUR,
G_SEEK_SET,
G_SEEK_END
} GSeekType;
</pre>
<p>
An enumeration specifying the base position for a
<a class="link" href="glib-IO-Channels.html#g-io-channel-seek-position" title="g_io_channel_seek_position ()"><code class="function">g_io_channel_seek_position()</code></a> operation.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><a name="G-SEEK-CUR:CAPS"></a><span class="term"><code class="literal">G_SEEK_CUR</code></span></p></td>
<td>the current position in the file.
</td>
</tr>
<tr>
<td><p><a name="G-SEEK-SET:CAPS"></a><span class="term"><code class="literal">G_SEEK_SET</code></span></p></td>
<td>the start of the file.
</td>
</tr>
<tr>
<td><p><a name="G-SEEK-END:CAPS"></a><span class="term"><code class="literal">G_SEEK_END</code></span></p></td>
<td>the end of the file.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_shutdown ()">
<a name="g-io-channel-shutdown"></a><h3>g_io_channel_shutdown ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> g_io_channel_shutdown (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="type">gboolean</span></a> flush</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **err</code></em>);</pre>
<p>
Close an IO channel. Any pending data to be written will be
flushed if <em class="parameter"><code>flush</code></em> is <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a>. The channel will not be freed until the
last reference is dropped using <a class="link" href="glib-IO-Channels.html#g-io-channel-unref" title="g_io_channel_unref ()"><code class="function">g_io_channel_unref()</code></a>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>flush</code></em> :</span></p></td>
<td>if <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a>, flush pending
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>err</code></em> :</span></p></td>
<td>location to store a <a class="link" href="glib-IO-Channels.html#GIOChannelError" title="enum GIOChannelError"><span class="type">GIOChannelError</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> the status of the operation.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="enum GIOStatus">
<a name="GIOStatus"></a><h3>enum GIOStatus</h3>
<pre class="programlisting">typedef enum
{
G_IO_STATUS_ERROR,
G_IO_STATUS_NORMAL,
G_IO_STATUS_EOF,
G_IO_STATUS_AGAIN
} GIOStatus;
</pre>
<p>
Stati returned by most of the <a class="link" href="glib-IO-Channels.html#GIOFuncs" title="GIOFuncs"><span class="type">GIOFuncs</span></a> functions.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><a name="G-IO-STATUS-ERROR:CAPS"></a><span class="term"><code class="literal">G_IO_STATUS_ERROR</code></span></p></td>
<td>An error occurred.
</td>
</tr>
<tr>
<td><p><a name="G-IO-STATUS-NORMAL:CAPS"></a><span class="term"><code class="literal">G_IO_STATUS_NORMAL</code></span></p></td>
<td>Success.
</td>
</tr>
<tr>
<td><p><a name="G-IO-STATUS-EOF:CAPS"></a><span class="term"><code class="literal">G_IO_STATUS_EOF</code></span></p></td>
<td>End of file.
</td>
</tr>
<tr>
<td><p><a name="G-IO-STATUS-AGAIN:CAPS"></a><span class="term"><code class="literal">G_IO_STATUS_AGAIN</code></span></p></td>
<td>Resource temporarily unavailable.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="enum GIOChannelError">
<a name="GIOChannelError"></a><h3>enum GIOChannelError</h3>
<pre class="programlisting">typedef enum
{
/* Derived from errno */
G_IO_CHANNEL_ERROR_FBIG,
G_IO_CHANNEL_ERROR_INVAL,
G_IO_CHANNEL_ERROR_IO,
G_IO_CHANNEL_ERROR_ISDIR,
G_IO_CHANNEL_ERROR_NOSPC,
G_IO_CHANNEL_ERROR_NXIO,
G_IO_CHANNEL_ERROR_OVERFLOW,
G_IO_CHANNEL_ERROR_PIPE,
/* Other */
G_IO_CHANNEL_ERROR_FAILED
} GIOChannelError;
</pre>
<p>
Error codes returned by <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> operations.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><a name="G-IO-CHANNEL-ERROR-FBIG:CAPS"></a><span class="term"><code class="literal">G_IO_CHANNEL_ERROR_FBIG</code></span></p></td>
<td>File too large.
</td>
</tr>
<tr>
<td><p><a name="G-IO-CHANNEL-ERROR-INVAL:CAPS"></a><span class="term"><code class="literal">G_IO_CHANNEL_ERROR_INVAL</code></span></p></td>
<td>Invalid argument.
</td>
</tr>
<tr>
<td><p><a name="G-IO-CHANNEL-ERROR-IO:CAPS"></a><span class="term"><code class="literal">G_IO_CHANNEL_ERROR_IO</code></span></p></td>
<td>IO error.
</td>
</tr>
<tr>
<td><p><a name="G-IO-CHANNEL-ERROR-ISDIR:CAPS"></a><span class="term"><code class="literal">G_IO_CHANNEL_ERROR_ISDIR</code></span></p></td>
<td>File is a directory.
</td>
</tr>
<tr>
<td><p><a name="G-IO-CHANNEL-ERROR-NOSPC:CAPS"></a><span class="term"><code class="literal">G_IO_CHANNEL_ERROR_NOSPC</code></span></p></td>
<td>No space left on device.
</td>
</tr>
<tr>
<td><p><a name="G-IO-CHANNEL-ERROR-NXIO:CAPS"></a><span class="term"><code class="literal">G_IO_CHANNEL_ERROR_NXIO</code></span></p></td>
<td>No such device or address.
</td>
</tr>
<tr>
<td><p><a name="G-IO-CHANNEL-ERROR-OVERFLOW:CAPS"></a><span class="term"><code class="literal">G_IO_CHANNEL_ERROR_OVERFLOW</code></span></p></td>
<td>Value too large for defined datatype.
</td>
</tr>
<tr>
<td><p><a name="G-IO-CHANNEL-ERROR-PIPE:CAPS"></a><span class="term"><code class="literal">G_IO_CHANNEL_ERROR_PIPE</code></span></p></td>
<td>Broken pipe.
</td>
</tr>
<tr>
<td><p><a name="G-IO-CHANNEL-ERROR-FAILED:CAPS"></a><span class="term"><code class="literal">G_IO_CHANNEL_ERROR_FAILED</code></span></p></td>
<td>Some other error.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="G_IO_CHANNEL_ERROR">
<a name="G-IO-CHANNEL-ERROR:CAPS"></a><h3>G_IO_CHANNEL_ERROR</h3>
<pre class="programlisting">#define G_IO_CHANNEL_ERROR g_io_channel_error_quark()
</pre>
<p>
Error domain for <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> operations. Errors in this domain will
be from the <a class="link" href="glib-IO-Channels.html#GIOChannelError" title="enum GIOChannelError"><span class="type">GIOChannelError</span></a> enumeration. See <a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> for
information on error domains.
</p>
</div>
<hr>
<div class="refsect2" title="g_io_channel_error_from_errno ()">
<a name="g-io-channel-error-from-errno"></a><h3>g_io_channel_error_from_errno ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOChannelError" title="enum GIOChannelError"><span class="returnvalue">GIOChannelError</span></a> g_io_channel_error_from_errno (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> en</code></em>);</pre>
<p>
Converts an <code class="literal">errno</code> error number to a <a class="link" href="glib-IO-Channels.html#GIOChannelError" title="enum GIOChannelError"><span class="type">GIOChannelError</span></a>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>en</code></em> :</span></p></td>
<td>an <code class="literal">errno</code> error number, e.g. <code class="literal">EINVAL</code>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> a <a class="link" href="glib-IO-Channels.html#GIOChannelError" title="enum GIOChannelError"><span class="type">GIOChannelError</span></a> error number, e.g.
<a class="link" href="glib-IO-Channels.html#G-IO-CHANNEL-ERROR-INVAL:CAPS"><code class="literal">G_IO_CHANNEL_ERROR_INVAL</code></a>.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_ref ()">
<a name="g-io-channel-ref"></a><h3>g_io_channel_ref ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="returnvalue">GIOChannel</span></a> * g_io_channel_ref (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);</pre>
<p>
Increments the reference count of a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> the <em class="parameter"><code>channel</code></em> that was passed in (since 2.6)
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_unref ()">
<a name="g-io-channel-unref"></a><h3>g_io_channel_unref ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span> g_io_channel_unref (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);</pre>
<p>
Decrements the reference count of a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_create_watch ()">
<a name="g-io-create-watch"></a><h3>g_io_create_watch ()</h3>
<pre class="programlisting"><a class="link" href="glib-The-Main-Event-Loop.html#GSource" title="GSource"><span class="returnvalue">GSource</span></a> * g_io_create_watch (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOCondition" title="enum GIOCondition"><span class="type">GIOCondition</span></a> condition</code></em>);</pre>
<p>
Creates a <a class="link" href="glib-The-Main-Event-Loop.html#GSource" title="GSource"><span class="type">GSource</span></a> that's dispatched when <em class="parameter"><code>condition</code></em> is met for the
given <em class="parameter"><code>channel</code></em>. For example, if condition is <a class="link" href="glib-IO-Channels.html#G-IO-IN:CAPS"><span class="type">G_IO_IN</span></a>, the source will
be dispatched when there's data available for reading.
</p>
<p>
<a class="link" href="glib-IO-Channels.html#g-io-add-watch" title="g_io_add_watch ()"><code class="function">g_io_add_watch()</code></a> is a simpler interface to this same functionality, for
the case where you want to add the source to the default main loop context
at the default priority.
</p>
<p>
On Windows, polling a <a class="link" href="glib-The-Main-Event-Loop.html#GSource" title="GSource"><span class="type">GSource</span></a> created to watch a channel for a socket
puts the socket in non-blocking mode. This is a side-effect of the
implementation and unavoidable.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> to watch
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>condition</code></em> :</span></p></td>
<td>conditions to watch for
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> a new <a class="link" href="glib-The-Main-Event-Loop.html#GSource" title="GSource"><span class="type">GSource</span></a>
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_add_watch ()">
<a name="g-io-add-watch"></a><h3>g_io_add_watch ()</h3>
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a> g_io_add_watch (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOCondition" title="enum GIOCondition"><span class="type">GIOCondition</span></a> condition</code></em>,
<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOFunc" title="GIOFunc ()"><span class="type">GIOFunc</span></a> func</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
<p>
Adds the <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> into the default main loop context
with the default priority.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>condition</code></em> :</span></p></td>
<td>the condition to watch for
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>func</code></em> :</span></p></td>
<td>the function to call when the condition is satisfied
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
<td>user data to pass to <em class="parameter"><code>func</code></em>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> the event source id
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_add_watch_full ()">
<a name="g-io-add-watch-full"></a><h3>g_io_add_watch_full ()</h3>
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a> g_io_add_watch_full (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> priority</code></em>,
<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOCondition" title="enum GIOCondition"><span class="type">GIOCondition</span></a> condition</code></em>,
<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOFunc" title="GIOFunc ()"><span class="type">GIOFunc</span></a> func</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
<em class="parameter"><code><a class="link" href="glib-Datasets.html#GDestroyNotify" title="GDestroyNotify ()"><span class="type">GDestroyNotify</span></a> notify</code></em>);</pre>
<p>
Adds the <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> into the default main loop context
with the given priority.
</p>
<p>
This internally creates a main loop source using <a class="link" href="glib-IO-Channels.html#g-io-create-watch" title="g_io_create_watch ()"><code class="function">g_io_create_watch()</code></a>
and attaches it to the main loop context with <a class="link" href="glib-The-Main-Event-Loop.html#g-source-attach" title="g_source_attach ()"><code class="function">g_source_attach()</code></a>.
You can do these steps manuallt if you need greater control.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>priority</code></em> :</span></p></td>
<td>the priority of the <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> source
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>condition</code></em> :</span></p></td>
<td>the condition to watch for
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>func</code></em> :</span></p></td>
<td>the function to call when the condition is satisfied
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
<td>user data to pass to <em class="parameter"><code>func</code></em>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>notify</code></em> :</span></p></td>
<td>the function to call when the source is removed
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> the event source id
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="enum GIOCondition">
<a name="GIOCondition"></a><h3>enum GIOCondition</h3>
<pre class="programlisting">typedef enum
{
G_IO_IN GLIB_SYSDEF_POLLIN,
G_IO_OUT GLIB_SYSDEF_POLLOUT,
G_IO_PRI GLIB_SYSDEF_POLLPRI,
G_IO_ERR GLIB_SYSDEF_POLLERR,
G_IO_HUP GLIB_SYSDEF_POLLHUP,
G_IO_NVAL GLIB_SYSDEF_POLLNVAL
} GIOCondition;
</pre>
<p>
A bitwise combination representing a condition to watch for on an
event source.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><a name="G-IO-IN:CAPS"></a><span class="term"><code class="literal">G_IO_IN</code></span></p></td>
<td>There is data to read.
</td>
</tr>
<tr>
<td><p><a name="G-IO-OUT:CAPS"></a><span class="term"><code class="literal">G_IO_OUT</code></span></p></td>
<td>Data can be written (without blocking).
</td>
</tr>
<tr>
<td><p><a name="G-IO-PRI:CAPS"></a><span class="term"><code class="literal">G_IO_PRI</code></span></p></td>
<td>There is urgent data to read.
</td>
</tr>
<tr>
<td><p><a name="G-IO-ERR:CAPS"></a><span class="term"><code class="literal">G_IO_ERR</code></span></p></td>
<td>Error condition.
</td>
</tr>
<tr>
<td><p><a name="G-IO-HUP:CAPS"></a><span class="term"><code class="literal">G_IO_HUP</code></span></p></td>
<td>Hung up (the connection has been broken, usually for
pipes and sockets).
</td>
</tr>
<tr>
<td><p><a name="G-IO-NVAL:CAPS"></a><span class="term"><code class="literal">G_IO_NVAL</code></span></p></td>
<td>Invalid request. The file descriptor is not open.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="GIOFunc ()">
<a name="GIOFunc"></a><h3>GIOFunc ()</h3>
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> (*GIOFunc) (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *source</code></em>,
<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOCondition" title="enum GIOCondition"><span class="type">GIOCondition</span></a> condition</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="type">gpointer</span></a> data</code></em>);</pre>
<p>
Specifies the type of function passed to <a class="link" href="glib-IO-Channels.html#g-io-add-watch" title="g_io_add_watch ()"><code class="function">g_io_add_watch()</code></a> or
<a class="link" href="glib-IO-Channels.html#g-io-add-watch-full" title="g_io_add_watch_full ()"><code class="function">g_io_add_watch_full()</code></a>, which is called when the requested condition
on a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> is satisfied.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>source</code></em> :</span></p></td>
<td>the <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> event source
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>condition</code></em> :</span></p></td>
<td>the condition which has been satisfied
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
<td>user data set in <a class="link" href="glib-IO-Channels.html#g-io-add-watch" title="g_io_add_watch ()"><code class="function">g_io_add_watch()</code></a> or <a class="link" href="glib-IO-Channels.html#g-io-add-watch-full" title="g_io_add_watch_full ()"><code class="function">g_io_add_watch_full()</code></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>the function should return <a class="link" href="glib-Standard-Macros.html#FALSE:CAPS" title="FALSE"><code class="literal">FALSE</code></a> if the event source
should be removed
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="GIOFuncs">
<a name="GIOFuncs"></a><h3>GIOFuncs</h3>
<pre class="programlisting">typedef struct {
GIOStatus (*io_read) (GIOChannel *channel,
gchar *buf,
gsize count,
gsize *bytes_read,
GError **err);
GIOStatus (*io_write) (GIOChannel *channel,
const gchar *buf,
gsize count,
gsize *bytes_written,
GError **err);
GIOStatus (*io_seek) (GIOChannel *channel,
gint64 offset,
GSeekType type,
GError **err);
GIOStatus (*io_close) (GIOChannel *channel,
GError **err);
GSource* (*io_create_watch) (GIOChannel *channel,
GIOCondition condition);
void (*io_free) (GIOChannel *channel);
GIOStatus (*io_set_flags) (GIOChannel *channel,
GIOFlags flags,
GError **err);
GIOFlags (*io_get_flags) (GIOChannel *channel);
} GIOFuncs;
</pre>
<p>
A table of functions used to handle different types of <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
in a generic way.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GIOFuncs.io-read"></a>io_read</code></em> ()</span></p></td>
<td>reads raw bytes from the channel. This is called from
various functions such as <a class="link" href="glib-IO-Channels.html#g-io-channel-read-chars" title="g_io_channel_read_chars ()"><code class="function">g_io_channel_read_chars()</code></a> to
read raw bytes from the channel. Encoding and buffering
issues are dealt with at a higher level.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GIOFuncs.io-write"></a>io_write</code></em> ()</span></p></td>
<td>writes raw bytes to the channel. This is called from
various functions such as <a class="link" href="glib-IO-Channels.html#g-io-channel-write-chars" title="g_io_channel_write_chars ()"><code class="function">g_io_channel_write_chars()</code></a> to
write raw bytes to the channel. Encoding and buffering
issues are dealt with at a higher level.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GIOFuncs.io-seek"></a>io_seek</code></em> ()</span></p></td>
<td>(optional) seeks the channel. This is called from
<a class="link" href="glib-IO-Channels.html#g-io-channel-seek" title="g_io_channel_seek ()"><code class="function">g_io_channel_seek()</code></a> on channels that support it.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GIOFuncs.io-close"></a>io_close</code></em> ()</span></p></td>
<td>closes the channel. This is called from
<a class="link" href="glib-IO-Channels.html#g-io-channel-close" title="g_io_channel_close ()"><code class="function">g_io_channel_close()</code></a> after flushing the buffers.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GIOFuncs.io-create-watch"></a>io_create_watch</code></em> ()</span></p></td>
<td>creates a watch on the channel. This call
corresponds directly to <a class="link" href="glib-IO-Channels.html#g-io-create-watch" title="g_io_create_watch ()"><code class="function">g_io_create_watch()</code></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GIOFuncs.io-free"></a>io_free</code></em> ()</span></p></td>
<td>called from <a class="link" href="glib-IO-Channels.html#g-io-channel-unref" title="g_io_channel_unref ()"><code class="function">g_io_channel_unref()</code></a> when the channel needs to
be freed. This function must free the memory associated
with the channel, including freeing the <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
structure itself. The channel buffers have been flushed
and possibly <em class="parameter"><code>io_close</code></em> has been called by the time this
function is called.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GIOFuncs.io-set-flags"></a>io_set_flags</code></em> ()</span></p></td>
<td>sets the <a class="link" href="glib-IO-Channels.html#GIOFlags" title="enum GIOFlags"><span class="type">GIOFlags</span></a> on the channel. This is called
from <a class="link" href="glib-IO-Channels.html#g-io-channel-set-flags" title="g_io_channel_set_flags ()"><code class="function">g_io_channel_set_flags()</code></a> with all flags except
for <a class="link" href="glib-IO-Channels.html#G-IO-FLAG-APPEND:CAPS"><code class="literal">G_IO_FLAG_APPEND</code></a> and <a class="link" href="glib-IO-Channels.html#G-IO-FLAG-NONBLOCK:CAPS"><code class="literal">G_IO_FLAG_NONBLOCK</code></a> masked
out.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GIOFuncs.io-get-flags"></a>io_get_flags</code></em> ()</span></p></td>
<td>gets the <a class="link" href="glib-IO-Channels.html#GIOFlags" title="enum GIOFlags"><span class="type">GIOFlags</span></a> for the channel. This function
need only return the <a class="link" href="glib-IO-Channels.html#G-IO-FLAG-APPEND:CAPS"><code class="literal">G_IO_FLAG_APPEND</code></a> and
<a class="link" href="glib-IO-Channels.html#G-IO-FLAG-NONBLOCK:CAPS"><code class="literal">G_IO_FLAG_NONBLOCK</code></a> flags; <a class="link" href="glib-IO-Channels.html#g-io-channel-get-flags" title="g_io_channel_get_flags ()"><code class="function">g_io_channel_get_flags()</code></a>
automatically adds the others as appropriate.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_get_buffer_size ()">
<a name="g-io-channel-get-buffer-size"></a><h3>g_io_channel_get_buffer_size ()</h3>
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="returnvalue">gsize</span></a> g_io_channel_get_buffer_size (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);</pre>
<p>
Gets the buffer size.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> the size of the buffer.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_set_buffer_size ()">
<a name="g-io-channel-set-buffer-size"></a><h3>g_io_channel_set_buffer_size ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span> g_io_channel_set_buffer_size (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> size</code></em>);</pre>
<p>
Sets the buffer size.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>size</code></em> :</span></p></td>
<td>the size of the buffer, or 0 to let GLib pick a good size
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_get_buffer_condition ()">
<a name="g-io-channel-get-buffer-condition"></a><h3>g_io_channel_get_buffer_condition ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOCondition" title="enum GIOCondition"><span class="returnvalue">GIOCondition</span></a> g_io_channel_get_buffer_condition (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);</pre>
<p>
This function returns a <a class="link" href="glib-IO-Channels.html#GIOCondition" title="enum GIOCondition"><span class="type">GIOCondition</span></a> depending on whether there
is data to be read/space to write data in the internal buffers in
the <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>. Only the flags <a class="link" href="glib-IO-Channels.html#G-IO-IN:CAPS"><code class="literal">G_IO_IN</code></a> and <a class="link" href="glib-IO-Channels.html#G-IO-OUT:CAPS"><code class="literal">G_IO_OUT</code></a> may be set.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>A <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> A <a class="link" href="glib-IO-Channels.html#GIOCondition" title="enum GIOCondition"><span class="type">GIOCondition</span></a>
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_get_flags ()">
<a name="g-io-channel-get-flags"></a><h3>g_io_channel_get_flags ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOFlags" title="enum GIOFlags"><span class="returnvalue">GIOFlags</span></a> g_io_channel_get_flags (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);</pre>
<p>
Gets the current flags for a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>, including read-only
flags such as <a class="link" href="glib-IO-Channels.html#G-IO-FLAG-IS-READABLE:CAPS"><code class="literal">G_IO_FLAG_IS_READABLE</code></a>.
</p>
<p>
The values of the flags <a class="link" href="glib-IO-Channels.html#G-IO-FLAG-IS-READABLE:CAPS"><code class="literal">G_IO_FLAG_IS_READABLE</code></a> and <a class="link" href="glib-IO-Channels.html#G-IO-FLAG-IS-WRITEABLE:CAPS"><code class="literal">G_IO_FLAG_IS_WRITEABLE</code></a>
are cached for internal use by the channel when it is created.
If they should change at some later point (e.g. partial shutdown
of a socket with the UNIX <code class="function">shutdown()</code> function), the user
should immediately call <a class="link" href="glib-IO-Channels.html#g-io-channel-get-flags" title="g_io_channel_get_flags ()"><code class="function">g_io_channel_get_flags()</code></a> to update
the internal values of these flags.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> the flags which are set on the channel
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_set_flags ()">
<a name="g-io-channel-set-flags"></a><h3>g_io_channel_set_flags ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> g_io_channel_set_flags (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOFlags" title="enum GIOFlags"><span class="type">GIOFlags</span></a> flags</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>
Sets the (writeable) flags in <em class="parameter"><code>channel</code></em> to (<em class="parameter"><code>flags</code></em> &amp; <code class="literal">G_IO_CHANNEL_SET_MASK</code>).
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
<td>the flags to set on the IO channel
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
<td>A location to return an error of type <a class="link" href="glib-IO-Channels.html#GIOChannelError" title="enum GIOChannelError"><span class="type">GIOChannelError</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> the status of the operation.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="enum GIOFlags">
<a name="GIOFlags"></a><h3>enum GIOFlags</h3>
<pre class="programlisting">typedef enum
{
G_IO_FLAG_APPEND = 1 &lt;&lt; 0,
G_IO_FLAG_NONBLOCK = 1 &lt;&lt; 1,
G_IO_FLAG_IS_READABLE = 1 &lt;&lt; 2, /* Read only flag */
G_IO_FLAG_IS_WRITEABLE = 1 &lt;&lt; 3, /* Read only flag */
G_IO_FLAG_IS_SEEKABLE = 1 &lt;&lt; 4, /* Read only flag */
G_IO_FLAG_MASK = (1 &lt;&lt; 5) - 1,
G_IO_FLAG_GET_MASK = G_IO_FLAG_MASK,
G_IO_FLAG_SET_MASK = G_IO_FLAG_APPEND | G_IO_FLAG_NONBLOCK
} GIOFlags;
</pre>
<p>
Specifies properties of a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>. Some of the flags can only be
read with <a class="link" href="glib-IO-Channels.html#g-io-channel-get-flags" title="g_io_channel_get_flags ()"><code class="function">g_io_channel_get_flags()</code></a>, but not changed with
<a class="link" href="glib-IO-Channels.html#g-io-channel-set-flags" title="g_io_channel_set_flags ()"><code class="function">g_io_channel_set_flags()</code></a>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><a name="G-IO-FLAG-APPEND:CAPS"></a><span class="term"><code class="literal">G_IO_FLAG_APPEND</code></span></p></td>
<td>turns on append mode, corresponds to <code class="literal">O_APPEND</code>
(see the documentation of the UNIX <code class="function">open()</code>
syscall).
</td>
</tr>
<tr>
<td><p><a name="G-IO-FLAG-NONBLOCK:CAPS"></a><span class="term"><code class="literal">G_IO_FLAG_NONBLOCK</code></span></p></td>
<td>turns on nonblocking mode, corresponds to
<code class="literal">O_NONBLOCK</code>/<code class="literal">O_NDELAY</code> (see the documentation of
the UNIX <code class="function">open()</code> syscall).
</td>
</tr>
<tr>
<td><p><a name="G-IO-FLAG-IS-READABLE:CAPS"></a><span class="term"><code class="literal">G_IO_FLAG_IS_READABLE</code></span></p></td>
<td>indicates that the io channel is readable.
This flag can not be changed.
</td>
</tr>
<tr>
<td><p><a name="G-IO-FLAG-IS-WRITEABLE:CAPS"></a><span class="term"><code class="literal">G_IO_FLAG_IS_WRITEABLE</code></span></p></td>
<td>indicates that the io channel is writable.
This flag can not be changed.
</td>
</tr>
<tr>
<td><p><a name="G-IO-FLAG-IS-SEEKABLE:CAPS"></a><span class="term"><code class="literal">G_IO_FLAG_IS_SEEKABLE</code></span></p></td>
<td>indicates that the io channel is seekable,
i.e. that <a class="link" href="glib-IO-Channels.html#g-io-channel-seek-position" title="g_io_channel_seek_position ()"><code class="function">g_io_channel_seek_position()</code></a> can
be used on it. This flag can not be changed.
</td>
</tr>
<tr>
<td><p><a name="G-IO-FLAG-MASK:CAPS"></a><span class="term"><code class="literal">G_IO_FLAG_MASK</code></span></p></td>
<td>the mask that specifies all the valid flags.
</td>
</tr>
<tr>
<td><p><a name="G-IO-FLAG-GET-MASK:CAPS"></a><span class="term"><code class="literal">G_IO_FLAG_GET_MASK</code></span></p></td>
<td>the mask of the flags that are returned from
<a class="link" href="glib-IO-Channels.html#g-io-channel-get-flags" title="g_io_channel_get_flags ()"><code class="function">g_io_channel_get_flags()</code></a>.
</td>
</tr>
<tr>
<td><p><a name="G-IO-FLAG-SET-MASK:CAPS"></a><span class="term"><code class="literal">G_IO_FLAG_SET_MASK</code></span></p></td>
<td>the mask of the flags that the user can modify
with <a class="link" href="glib-IO-Channels.html#g-io-channel-set-flags" title="g_io_channel_set_flags ()"><code class="function">g_io_channel_set_flags()</code></a>.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_get_line_term ()">
<a name="g-io-channel-get-line-term"></a><h3>g_io_channel_get_line_term ()</h3>
<pre class="programlisting">const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a>* g_io_channel_get_line_term (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> *length</code></em>);</pre>
<p>
This returns the string that <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> uses to determine
where in the file a line break occurs. A value of <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>
indicates autodetection.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
<td>a location to return the length of the line terminator
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> The line termination string. This value
is owned by GLib and must not be freed.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_set_line_term ()">
<a name="g-io-channel-set-line-term"></a><h3>g_io_channel_set_line_term ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span> g_io_channel_set_line_term (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *line_term</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> length</code></em>);</pre>
<p>
This sets the string that <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> uses to determine
where in the file a line break occurs.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>line_term</code></em> :</span></p></td>
<td>The line termination string. Use <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> for autodetect.
Autodetection breaks on "\n", "\r\n", "\r", "\0", and
the Unicode paragraph separator. Autodetection should
not be used for anything other than file-based channels.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
<td>The length of the termination string. If -1 is passed, the
string is assumed to be nul-terminated. This option allows
termination strings with embedded nuls.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_get_buffered ()">
<a name="g-io-channel-get-buffered"></a><h3>g_io_channel_get_buffered ()</h3>
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> g_io_channel_get_buffered (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);</pre>
<p>
Returns whether <em class="parameter"><code>channel</code></em> is buffered.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> if the <em class="parameter"><code>channel</code></em> is buffered.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_set_buffered ()">
<a name="g-io-channel-set-buffered"></a><h3>g_io_channel_set_buffered ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span> g_io_channel_set_buffered (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="type">gboolean</span></a> buffered</code></em>);</pre>
<p>
The buffering state can only be set if the channel's encoding
is <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>. For any other encoding, the channel must be buffered.
</p>
<p>
A buffered channel can only be set unbuffered if the channel's
internal buffers have been flushed. Newly created channels or
channels which have returned <a class="link" href="glib-IO-Channels.html#G-IO-STATUS-EOF:CAPS"><code class="literal">G_IO_STATUS_EOF</code></a>
not require such a flush. For write-only channels, a call to
<a class="link" href="glib-IO-Channels.html#g-io-channel-flush" title="g_io_channel_flush ()"><code class="function">g_io_channel_flush()</code></a> is sufficient. For all other channels,
the buffers may be flushed by a call to <a class="link" href="glib-IO-Channels.html#g-io-channel-seek-position" title="g_io_channel_seek_position ()"><code class="function">g_io_channel_seek_position()</code></a>.
This includes the possibility of seeking with seek type <a class="link" href="glib-IO-Channels.html#G-SEEK-CUR:CAPS"><code class="literal">G_SEEK_CUR</code></a>
and an offset of zero. Note that this means that socket-based
channels cannot be set unbuffered once they have had data
read from them.
</p>
<p>
On unbuffered channels, it is safe to mix read and write
calls from the new and old APIs, if this is necessary for
maintaining old code.
</p>
<p>
The default state of the channel is buffered.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>buffered</code></em> :</span></p></td>
<td>whether to set the channel buffered or unbuffered
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_get_encoding ()">
<a name="g-io-channel-get-encoding"></a><h3>g_io_channel_get_encoding ()</h3>
<pre class="programlisting">const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a>* g_io_channel_get_encoding (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);</pre>
<p>
Gets the encoding for the input/output of the channel.
The internal encoding is always UTF-8. The encoding <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>
makes the channel safe for binary data.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> A string containing the encoding, this string is
owned by GLib and must not be freed.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_set_encoding ()">
<a name="g-io-channel-set-encoding"></a><h3>g_io_channel_set_encoding ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOStatus" title="enum GIOStatus"><span class="returnvalue">GIOStatus</span></a> g_io_channel_set_encoding (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *encoding</code></em>,
<em class="parameter"><code><a class="link" href="glib-Error-Reporting.html#GError" title="GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>
Sets the encoding for the input/output of the channel.
The internal encoding is always UTF-8. The default encoding
for the external file is UTF-8.
</p>
<p>
The encoding <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> is safe to use with binary data.
</p>
<p>
The encoding can only be set if one of the following conditions
is true:
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem"><p>
The channel was just created, and has not been written to or read
from yet.
</p></li>
<li class="listitem"><p>
The channel is write-only.
</p></li>
<li class="listitem"><p>
The channel is a file, and the file pointer was just
repositioned by a call to <a class="link" href="glib-IO-Channels.html#g-io-channel-seek-position" title="g_io_channel_seek_position ()"><code class="function">g_io_channel_seek_position()</code></a>.
(This flushes all the internal buffers.)
</p></li>
<li class="listitem"><p>
The current encoding is <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> or UTF-8.
</p></li>
<li class="listitem"><p>
One of the (new API) read functions has just returned <a class="link" href="glib-IO-Channels.html#G-IO-STATUS-EOF:CAPS"><code class="literal">G_IO_STATUS_EOF</code></a>
(or, in the case of <a class="link" href="glib-IO-Channels.html#g-io-channel-read-to-end" title="g_io_channel_read_to_end ()"><code class="function">g_io_channel_read_to_end()</code></a>, <a class="link" href="glib-IO-Channels.html#G-IO-STATUS-NORMAL:CAPS"><code class="literal">G_IO_STATUS_NORMAL</code></a>).
</p></li>
<li class="listitem"><p>
One of the functions <a class="link" href="glib-IO-Channels.html#g-io-channel-read-chars" title="g_io_channel_read_chars ()"><code class="function">g_io_channel_read_chars()</code></a> or
<a class="link" href="glib-IO-Channels.html#g-io-channel-read-unichar" title="g_io_channel_read_unichar ()"><code class="function">g_io_channel_read_unichar()</code></a> has returned <a class="link" href="glib-IO-Channels.html#G-IO-STATUS-AGAIN:CAPS"><code class="literal">G_IO_STATUS_AGAIN</code></a> or
<a class="link" href="glib-IO-Channels.html#G-IO-STATUS-ERROR:CAPS"><code class="literal">G_IO_STATUS_ERROR</code></a>. This may be useful in the case of
<a class="link" href="glib-Character-Set-Conversion.html#G-CONVERT-ERROR-ILLEGAL-SEQUENCE:CAPS"><code class="literal">G_CONVERT_ERROR_ILLEGAL_SEQUENCE</code></a>.
Returning one of these statuses from <a class="link" href="glib-IO-Channels.html#g-io-channel-read-line" title="g_io_channel_read_line ()"><code class="function">g_io_channel_read_line()</code></a>,
<a class="link" href="glib-IO-Channels.html#g-io-channel-read-line-string" title="g_io_channel_read_line_string ()"><code class="function">g_io_channel_read_line_string()</code></a>, or <a class="link" href="glib-IO-Channels.html#g-io-channel-read-to-end" title="g_io_channel_read_to_end ()"><code class="function">g_io_channel_read_to_end()</code></a>
does <span class="emphasis"><em>not</em></span> guarantee that the encoding can
be changed.
</p></li>
</ul></div>
<p>
Channels which do not meet one of the above conditions cannot call
<a class="link" href="glib-IO-Channels.html#g-io-channel-seek-position" title="g_io_channel_seek_position ()"><code class="function">g_io_channel_seek_position()</code></a> with an offset of <a class="link" href="glib-IO-Channels.html#G-SEEK-CUR:CAPS"><code class="literal">G_SEEK_CUR</code></a>, and, if
they are "seekable", cannot call <a class="link" href="glib-IO-Channels.html#g-io-channel-write-chars" title="g_io_channel_write_chars ()"><code class="function">g_io_channel_write_chars()</code></a> after
calling one of the API "read" functions.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>encoding</code></em> :</span></p></td>
<td>the encoding type
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
<td>location to store an error of type <a class="link" href="glib-Character-Set-Conversion.html#GConvertError" title="enum GConvertError"><span class="type">GConvertError</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> <a class="link" href="glib-IO-Channels.html#G-IO-STATUS-NORMAL:CAPS"><code class="literal">G_IO_STATUS_NORMAL</code></a> if the encoding was successfully set.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_get_close_on_unref ()">
<a name="g-io-channel-get-close-on-unref"></a><h3>g_io_channel_get_close_on_unref ()</h3>
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> g_io_channel_get_close_on_unref (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);</pre>
<p>
Returns whether the file/socket/whatever associated with <em class="parameter"><code>channel</code></em>
will be closed when <em class="parameter"><code>channel</code></em> receives its final unref and is
destroyed. The default value of this is <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> for channels created
by <a class="link" href="glib-IO-Channels.html#g-io-channel-new-file" title="g_io_channel_new_file ()"><code class="function">g_io_channel_new_file()</code></a>, and <a class="link" href="glib-Standard-Macros.html#FALSE:CAPS" title="FALSE"><code class="literal">FALSE</code></a> for all other channels.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> Whether the channel will be closed on the final unref of
the GIOChannel data structure.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_set_close_on_unref ()">
<a name="g-io-channel-set-close-on-unref"></a><h3>g_io_channel_set_close_on_unref ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span> g_io_channel_set_close_on_unref (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="type">gboolean</span></a> do_close</code></em>);</pre>
<p>
Setting this flag to <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> for a channel you have already closed
can cause problems.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>do_close</code></em> :</span></p></td>
<td>Whether to close the channel on the final unref of
the GIOChannel data structure. The default value of
this is <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> for channels created by <a class="link" href="glib-IO-Channels.html#g-io-channel-new-file" title="g_io_channel_new_file ()"><code class="function">g_io_channel_new_file()</code></a>,
and <a class="link" href="glib-Standard-Macros.html#FALSE:CAPS" title="FALSE"><code class="literal">FALSE</code></a> for all other channels.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_read ()">
<a name="g-io-channel-read"></a><h3>g_io_channel_read ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOError" title="enum GIOError"><span class="returnvalue">GIOError</span></a> g_io_channel_read (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *buf</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> count</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> *bytes_read</code></em>);</pre>
<div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">Warning</h3>
<p><code class="literal">g_io_channel_read</code> has been deprecated since version 2.2 and should not be used in newly-written code. Use <a class="link" href="glib-IO-Channels.html#g-io-channel-read-chars" title="g_io_channel_read_chars ()"><code class="function">g_io_channel_read_chars()</code></a> instead.</p>
</div>
<p>
Reads data from a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
<td>a buffer to read the data into (which should be at least
count bytes long)
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>count</code></em> :</span></p></td>
<td>the number of bytes to read from the <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>bytes_read</code></em> :</span></p></td>
<td>returns the number of bytes actually read
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> <a class="link" href="glib-IO-Channels.html#G-IO-ERROR-NONE:CAPS"><code class="literal">G_IO_ERROR_NONE</code></a> if the operation was successful.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="enum GIOError">
<a name="GIOError"></a><h3>enum GIOError</h3>
<pre class="programlisting">typedef enum
{
G_IO_ERROR_NONE,
G_IO_ERROR_AGAIN,
G_IO_ERROR_INVAL,
G_IO_ERROR_UNKNOWN
} GIOError;
</pre>
<p>
<a class="link" href="glib-IO-Channels.html#GIOError" title="enum GIOError"><span class="type">GIOError</span></a> is only used by the deprecated functions
<a class="link" href="glib-IO-Channels.html#g-io-channel-read" title="g_io_channel_read ()"><code class="function">g_io_channel_read()</code></a>, <a class="link" href="glib-IO-Channels.html#g-io-channel-write" title="g_io_channel_write ()"><code class="function">g_io_channel_write()</code></a>, and <a class="link" href="glib-IO-Channels.html#g-io-channel-seek" title="g_io_channel_seek ()"><code class="function">g_io_channel_seek()</code></a>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><a name="G-IO-ERROR-NONE:CAPS"></a><span class="term"><code class="literal">G_IO_ERROR_NONE</code></span></p></td>
<td>no error
</td>
</tr>
<tr>
<td><p><a name="G-IO-ERROR-AGAIN:CAPS"></a><span class="term"><code class="literal">G_IO_ERROR_AGAIN</code></span></p></td>
<td>an EAGAIN error occurred
</td>
</tr>
<tr>
<td><p><a name="G-IO-ERROR-INVAL:CAPS"></a><span class="term"><code class="literal">G_IO_ERROR_INVAL</code></span></p></td>
<td>an EINVAL error occurred
</td>
</tr>
<tr>
<td><p><a name="G-IO-ERROR-UNKNOWN:CAPS"></a><span class="term"><code class="literal">G_IO_ERROR_UNKNOWN</code></span></p></td>
<td>another error occurred
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_write ()">
<a name="g-io-channel-write"></a><h3>g_io_channel_write ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOError" title="enum GIOError"><span class="returnvalue">GIOError</span></a> g_io_channel_write (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *buf</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> count</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="type">gsize</span></a> *bytes_written</code></em>);</pre>
<div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">Warning</h3>
<p><code class="literal">g_io_channel_write</code> has been deprecated since version 2.2 and should not be used in newly-written code. Use <a class="link" href="glib-IO-Channels.html#g-io-channel-write-chars" title="g_io_channel_write_chars ()"><code class="function">g_io_channel_write_chars()</code></a> instead.</p>
</div>
<p>
Writes data to a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
<td>the buffer containing the data to write
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>count</code></em> :</span></p></td>
<td>the number of bytes to write
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>bytes_written</code></em> :</span></p></td>
<td>the number of bytes actually written
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> <a class="link" href="glib-IO-Channels.html#G-IO-ERROR-NONE:CAPS"><code class="literal">G_IO_ERROR_NONE</code></a> if the operation was successful.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_seek ()">
<a name="g-io-channel-seek"></a><h3>g_io_channel_seek ()</h3>
<pre class="programlisting"><a class="link" href="glib-IO-Channels.html#GIOError" title="enum GIOError"><span class="returnvalue">GIOError</span></a> g_io_channel_seek (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>,
<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint64" title="gint64"><span class="type">gint64</span></a> offset</code></em>,
<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GSeekType" title="enum GSeekType"><span class="type">GSeekType</span></a> type</code></em>);</pre>
<div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">Warning</h3>
<p><code class="literal">g_io_channel_seek</code> has been deprecated since version 2.2 and should not be used in newly-written code. Use <a class="link" href="glib-IO-Channels.html#g-io-channel-seek-position" title="g_io_channel_seek_position ()"><code class="function">g_io_channel_seek_position()</code></a> instead.</p>
</div>
<p>
Sets the current position in the <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>, similar to the standard
library function <code class="function">fseek()</code>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>a <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>offset</code></em> :</span></p></td>
<td>an offset, in bytes, which is added to the position specified
by <em class="parameter"><code>type</code></em>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
<td>the position in the file, which can be <a class="link" href="glib-IO-Channels.html#G-SEEK-CUR:CAPS"><code class="literal">G_SEEK_CUR</code></a> (the current
position), <a class="link" href="glib-IO-Channels.html#G-SEEK-SET:CAPS"><code class="literal">G_SEEK_SET</code></a> (the start of the file), or <a class="link" href="glib-IO-Channels.html#G-SEEK-END:CAPS"><code class="literal">G_SEEK_END</code></a>
(the end of the file)
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> <a class="link" href="glib-IO-Channels.html#G-IO-ERROR-NONE:CAPS"><code class="literal">G_IO_ERROR_NONE</code></a> if the operation was successful.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_io_channel_close ()">
<a name="g-io-channel-close"></a><h3>g_io_channel_close ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span> g_io_channel_close (<em class="parameter"><code><a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> *channel</code></em>);</pre>
<div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">Warning</h3>
<p><code class="literal">g_io_channel_close</code> has been deprecated since version 2.2 and should not be used in newly-written code. Use <a class="link" href="glib-IO-Channels.html#g-io-channel-shutdown" title="g_io_channel_shutdown ()"><code class="function">g_io_channel_shutdown()</code></a> instead.</p>
</div>
<p>
Close an IO channel. Any pending data to be written will be
flushed, ignoring errors. The channel will not be freed until the
last reference is dropped using <a class="link" href="glib-IO-Channels.html#g-io-channel-unref" title="g_io_channel_unref ()"><code class="function">g_io_channel_unref()</code></a>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term"><em class="parameter"><code>channel</code></em> :</span></p></td>
<td>A <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a>
</td>
</tr></tbody>
</table></div>
</div>
</div>
<div class="refsect1" title="See Also">
<a name="glib-IO-Channels.see-also"></a><h2>See Also</h2>
<p> </p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term"><a class="link" href="glib-IO-Channels.html#g-io-add-watch" title="g_io_add_watch ()"><code class="function">g_io_add_watch()</code></a>, <a class="link" href="glib-IO-Channels.html#g-io-add-watch-full" title="g_io_add_watch_full ()"><code class="function">g_io_add_watch_full()</code></a>,
<a class="link" href="glib-The-Main-Event-Loop.html#g-source-remove" title="g_source_remove ()"><code class="function">g_source_remove()</code></a></span></p></td>
<td><p> Convenience
functions for creating <a class="link" href="glib-IO-Channels.html#GIOChannel" title="GIOChannel"><span class="type">GIOChannel</span></a> instances and adding
them to the <a class="link" href="glib-The-Main-Event-Loop.html" title="The Main Event Loop">main
event loop</a>. </p></td>
</tr></tbody>
</table></div>
<p> </p>
</div>
</div>
<div class="footer">
<hr>
Generated by GTK-Doc V1.14</div>
</body>
</html>