X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=glib%2Fgiochannel.h;h=ed098ed259d0be6508226717e1653ae5b20829d4;hb=d0083f7e2dd621c6b78496bdb6ecf5d580c5e110;hp=2c31ee8e67ac23fa90f9e06594fe546627f40cd6;hpb=669974f6d79a58f19c583995b41a3e0bf8b1cbf4;p=platform%2Fupstream%2Fglib.git
diff --git a/glib/giochannel.h b/glib/giochannel.h
index 2c31ee8..ed098ed 100644
--- a/glib/giochannel.h
+++ b/glib/giochannel.h
@@ -12,21 +12,23 @@
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library; if not, see .
*/
/*
* Modified by the GLib Team and others 1997-2000. See the AUTHORS
* file for a list of people on the GLib Team. See the ChangeLog
* files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
+ * GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
#ifndef __G_IOCHANNEL_H__
#define __G_IOCHANNEL_H__
+#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
+#error "Only can be included directly."
+#endif
+
#include
#include
#include
@@ -61,8 +63,6 @@ typedef enum
G_IO_CHANNEL_ERROR_OVERFLOW,
G_IO_CHANNEL_ERROR_PIPE,
/* Other */
- G_IO_CHANNEL_ERROR_PCHAR_FLUSH,
- /* Unconverted partial UTF-8 chars in buffer during flush */
G_IO_CHANNEL_ERROR_FAILED
} GIOChannelError;
@@ -83,37 +83,28 @@ typedef enum
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;
-
-typedef enum
-{
G_IO_FLAG_APPEND = 1 << 0,
G_IO_FLAG_NONBLOCK = 1 << 1,
G_IO_FLAG_IS_READABLE = 1 << 2, /* Read only flag */
- G_IO_FLAG_IS_WRITEABLE = 1 << 3, /* Read only flag */
+ G_IO_FLAG_IS_WRITABLE = 1 << 3, /* Read only flag */
+ G_IO_FLAG_IS_WRITEABLE = 1 << 3, /* Misspelling in 2.29.10 and earlier */
G_IO_FLAG_IS_SEEKABLE = 1 << 4, /* Read only flag */
G_IO_FLAG_MASK = (1 << 5) - 1,
G_IO_FLAG_GET_MASK = G_IO_FLAG_MASK,
- G_IO_FLAG_SET_MASK = G_IO_FLAG_APPEND | G_IO_FLAG_NONBLOCK,
+ G_IO_FLAG_SET_MASK = G_IO_FLAG_APPEND | G_IO_FLAG_NONBLOCK
} GIOFlags;
struct _GIOChannel
{
- /**/
-
- guint ref_count;
+ /*< private >*/
+ gint ref_count;
GIOFuncs *funcs;
gchar *encoding;
GIConv read_cd;
GIConv write_cd;
gchar *line_term; /* String which indicates the end of a line of text */
+ guint line_term_len; /* So we can have null in the line term */
gsize buf_size;
GString *read_buf; /* Raw data from the channel */
@@ -123,25 +114,15 @@ struct _GIOChannel
/* Group the flags together, immediately after partial_write_buf, to save memory */
- gboolean use_buffer : 1; /* The encoding uses the buffers */
- gboolean do_encode : 1; /* The encoding uses the GIConv coverters */
-
- /**/
-
- gboolean close_on_unref : 1; /* Close the channel on final unref */
+ guint use_buffer : 1; /* The encoding uses the buffers */
+ guint do_encode : 1; /* The encoding uses the GIConv coverters */
+ guint close_on_unref : 1; /* Close the channel on final unref */
+ guint is_readable : 1; /* Cached GIOFlag */
+ guint is_writeable : 1; /* ditto */
+ guint is_seekable : 1; /* ditto */
- /* The is_readable and is_writeable flags should really be marked
- * instead of . Some applications of GIOChannel,
- * like GNet which implements the unix shutdown function to partially
- * or completely disconnect sockets, may need to set these. For most
- * cases, people won't need to touch them.
- */
-
- /**/
-
- gboolean is_readable : 1; /* Cached GIOFlag */
- gboolean is_writeable : 1; /* ditto */
- gboolean is_seekable : 1; /* ditto */
+ gpointer reserved1;
+ gpointer reserved2;
};
typedef gboolean (*GIOFunc) (GIOChannel *source,
@@ -160,7 +141,7 @@ struct _GIOFuncs
gsize *bytes_written,
GError **err);
GIOStatus (*io_seek) (GIOChannel *channel,
- glong offset,
+ gint64 offset,
GSeekType type,
GError **err);
GIOStatus (*io_close) (GIOChannel *channel,
@@ -174,36 +155,48 @@ struct _GIOFuncs
GIOFlags (*io_get_flags) (GIOChannel *channel);
};
+GLIB_AVAILABLE_IN_ALL
void g_io_channel_init (GIOChannel *channel);
-void g_io_channel_ref (GIOChannel *channel);
+GLIB_AVAILABLE_IN_ALL
+GIOChannel *g_io_channel_ref (GIOChannel *channel);
+GLIB_AVAILABLE_IN_ALL
void g_io_channel_unref (GIOChannel *channel);
-#ifndef G_DISABLE_DEPRECATED
-GIOError g_io_channel_read (GIOChannel *channel,
- gchar *buf,
- gsize count,
- gsize *bytes_read);
-GIOError g_io_channel_write (GIOChannel *channel,
- const gchar *buf,
- gsize count,
- gsize *bytes_written);
+GLIB_DEPRECATED_FOR(g_io_channel_read_chars)
+GIOError g_io_channel_read (GIOChannel *channel,
+ gchar *buf,
+ gsize count,
+ gsize *bytes_read);
+
+GLIB_DEPRECATED_FOR(g_io_channel_write_chars)
+GIOError g_io_channel_write (GIOChannel *channel,
+ const gchar *buf,
+ gsize count,
+ gsize *bytes_written);
+
+GLIB_DEPRECATED_FOR(g_io_channel_seek_position)
GIOError g_io_channel_seek (GIOChannel *channel,
- glong offset,
- GSeekType type);
+ gint64 offset,
+ GSeekType type);
+
+GLIB_DEPRECATED_FOR(g_io_channel_shutdown)
void g_io_channel_close (GIOChannel *channel);
-#endif /* G_DISABLE_DEPRECATED */
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_shutdown (GIOChannel *channel,
gboolean flush,
GError **err);
+GLIB_AVAILABLE_IN_ALL
guint g_io_add_watch_full (GIOChannel *channel,
gint priority,
GIOCondition condition,
GIOFunc func,
gpointer user_data,
GDestroyNotify notify);
+GLIB_AVAILABLE_IN_ALL
GSource * g_io_create_watch (GIOChannel *channel,
GIOCondition condition);
+GLIB_AVAILABLE_IN_ALL
guint g_io_add_watch (GIOChannel *channel,
GIOCondition condition,
GIOFunc func,
@@ -212,62 +205,98 @@ guint g_io_add_watch (GIOChannel *channel,
/* character encoding conversion involved functions.
*/
+GLIB_AVAILABLE_IN_ALL
void g_io_channel_set_buffer_size (GIOChannel *channel,
gsize size);
+GLIB_AVAILABLE_IN_ALL
gsize g_io_channel_get_buffer_size (GIOChannel *channel);
+GLIB_AVAILABLE_IN_ALL
GIOCondition g_io_channel_get_buffer_condition (GIOChannel *channel);
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_set_flags (GIOChannel *channel,
GIOFlags flags,
GError **error);
+GLIB_AVAILABLE_IN_ALL
GIOFlags g_io_channel_get_flags (GIOChannel *channel);
+GLIB_AVAILABLE_IN_ALL
void g_io_channel_set_line_term (GIOChannel *channel,
- const gchar *line_term);
-G_CONST_RETURN gchar* g_io_channel_get_line_term (GIOChannel *channel);
+ const gchar *line_term,
+ gint length);
+GLIB_AVAILABLE_IN_ALL
+const gchar * g_io_channel_get_line_term (GIOChannel *channel,
+ gint *length);
+GLIB_AVAILABLE_IN_ALL
void g_io_channel_set_buffered (GIOChannel *channel,
gboolean buffered);
+GLIB_AVAILABLE_IN_ALL
gboolean g_io_channel_get_buffered (GIOChannel *channel);
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_set_encoding (GIOChannel *channel,
const gchar *encoding,
GError **error);
-G_CONST_RETURN gchar* g_io_channel_get_encoding (GIOChannel *channel);
+GLIB_AVAILABLE_IN_ALL
+const gchar * g_io_channel_get_encoding (GIOChannel *channel);
+GLIB_AVAILABLE_IN_ALL
+void g_io_channel_set_close_on_unref (GIOChannel *channel,
+ gboolean do_close);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_io_channel_get_close_on_unref (GIOChannel *channel);
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_flush (GIOChannel *channel,
GError **error);
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_read_line (GIOChannel *channel,
gchar **str_return,
gsize *length,
gsize *terminator_pos,
GError **error);
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_read_line_string (GIOChannel *channel,
GString *buffer,
gsize *terminator_pos,
GError **error);
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_read_to_end (GIOChannel *channel,
gchar **str_return,
gsize *length,
GError **error);
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_read_chars (GIOChannel *channel,
gchar *buf,
gsize count,
gsize *bytes_read,
GError **error);
+GLIB_AVAILABLE_IN_ALL
+GIOStatus g_io_channel_read_unichar (GIOChannel *channel,
+ gunichar *thechar,
+ GError **error);
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_write_chars (GIOChannel *channel,
const gchar *buf,
gssize count,
gsize *bytes_written,
GError **error);
+GLIB_AVAILABLE_IN_ALL
+GIOStatus g_io_channel_write_unichar (GIOChannel *channel,
+ gunichar thechar,
+ GError **error);
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_seek_position (GIOChannel *channel,
- glong offset,
+ gint64 offset,
GSeekType type,
GError **error);
+GLIB_AVAILABLE_IN_ALL
GIOChannel* g_io_channel_new_file (const gchar *filename,
const gchar *mode,
GError **error);
/* Error handling */
+GLIB_AVAILABLE_IN_ALL
GQuark g_io_channel_error_quark (void);
+GLIB_AVAILABLE_IN_ALL
GIOChannelError g_io_channel_error_from_errno (gint en);
/* On Unix, IO channels created with this function for any file
@@ -288,11 +317,21 @@ GIOChannelError g_io_channel_error_from_errno (gint en);
* corresponding concept is file HANDLE. There isn't as of yet a way to
* get GIOChannels for Win32 file HANDLEs.
*/
+GLIB_AVAILABLE_IN_ALL
GIOChannel* g_io_channel_unix_new (int fd);
+GLIB_AVAILABLE_IN_ALL
gint g_io_channel_unix_get_fd (GIOChannel *channel);
+
+/* Hook for GClosure / GSource integration. Don't touch */
+GLIB_VAR GSourceFuncs g_io_watch_funcs;
+
#ifdef G_OS_WIN32
+/* You can use this "pseudo file descriptor" in a GPollFD to add
+ * polling for Windows messages. GTK applications should not do that.
+ */
+
#define G_WIN32_MSG_HANDLE 19981206
/* Use this to get a GPollFD from a GIOChannel, so that you can call
@@ -301,6 +340,7 @@ gint g_io_channel_unix_get_fd (GIOChannel *channel);
* from the underlying file descriptor. For SOCKETs, it is possible to call
* recv().
*/
+GLIB_AVAILABLE_IN_ALL
void g_io_channel_win32_make_pollfd (GIOChannel *channel,
GIOCondition condition,
GPollFD *fd);
@@ -308,19 +348,23 @@ void g_io_channel_win32_make_pollfd (GIOChannel *channel,
/* This can be used to wait a until at least one of the channels is readable.
* On Unix you would do a select() on the file descriptors of the channels.
*/
+GLIB_AVAILABLE_IN_ALL
gint g_io_channel_win32_poll (GPollFD *fds,
gint n_fds,
- gint timeout);
-
-/* This is used to add polling for Windows messages. GDK (GTk+) programs
- * should *not* use this.
- */
-void g_main_poll_win32_msg_add (gint priority,
- GPollFD *fd,
- guint hwnd);
+ gint timeout_);
/* Create an IO channel for Windows messages for window handle hwnd. */
+#if GLIB_SIZEOF_VOID_P == 8
+/* We use gsize here so that it is still an integer type and not a
+ * pointer, like the guint in the traditional prototype. We can't use
+ * intptr_t as that is not portable enough.
+ */
+GLIB_AVAILABLE_IN_ALL
+GIOChannel *g_io_channel_win32_new_messages (gsize hwnd);
+#else
+GLIB_AVAILABLE_IN_ALL
GIOChannel *g_io_channel_win32_new_messages (guint hwnd);
+#endif
/* Create an IO channel for C runtime (emulated Unix-like) file
* descriptors. After calling g_io_add_watch() on a IO channel
@@ -329,11 +373,13 @@ GIOChannel *g_io_channel_win32_new_messages (guint hwnd);
* implemented on Win32 by starting a thread that sits blocked in a
* read() 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 g_io_channel_read().
+ * thread. Your code should call only g_io_channel_read_chars().
*/
+GLIB_AVAILABLE_IN_ALL
GIOChannel* g_io_channel_win32_new_fd (gint fd);
/* Get the C runtime file descriptor of a channel. */
+GLIB_AVAILABLE_IN_ALL
gint g_io_channel_win32_get_fd (GIOChannel *channel);
/* Create an IO channel for a winsock socket. The parameter should be
@@ -341,8 +387,25 @@ gint g_io_channel_win32_get_fd (GIOChannel *channel);
* you can use normal recv() or recvfrom() on sockets even if GLib
* is polling them.
*/
+GLIB_AVAILABLE_IN_ALL
GIOChannel *g_io_channel_win32_new_socket (gint socket);
+GLIB_DEPRECATED_FOR(g_io_channel_win32_new_socket)
+GIOChannel *g_io_channel_win32_new_stream_socket (gint socket);
+
+GLIB_AVAILABLE_IN_ALL
+void g_io_channel_win32_set_debug (GIOChannel *channel,
+ gboolean flag);
+
+#endif
+
+#ifdef G_OS_WIN32
+#define g_io_channel_new_file g_io_channel_new_file_utf8
+
+GLIB_AVAILABLE_IN_ALL
+GIOChannel *g_io_channel_new_file_utf8 (const gchar *filename,
+ const gchar *mode,
+ GError **error);
#endif
G_END_DECLS