summaryrefslogtreecommitdiff
path: root/glib/giounix.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>1998-12-15 22:30:15 +0000
committerOwen Taylor <otaylor@src.gnome.org>1998-12-15 22:30:15 +0000
commit05d49ddbd36b285afda7dddb54532c20728e9112 (patch)
tree21d40ea6b4a2c0bee187e30a635d6f6712bed423 /glib/giounix.c
parent5ccc68d0100e482611fdcb2c4d8ad6df62024442 (diff)
downloadglib-05d49ddbd36b285afda7dddb54532c20728e9112.tar.gz
Use an "inheritance" scheme for IO channel memory allocation.h
Tue Dec 15 17:17:46 1998 Owen Taylor <otaylor@redhat.com> * glib.h giounix.c giochannel.c: Use an "inheritance" scheme for IO channel memory allocation.h
Diffstat (limited to 'glib/giounix.c')
-rw-r--r--glib/giounix.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/glib/giounix.c b/glib/giounix.c
index 82944be89..23fc69f0e 100644
--- a/glib/giounix.c
+++ b/glib/giounix.c
@@ -37,6 +37,7 @@ typedef struct _GIOUnixChannel GIOUnixChannel;
typedef struct _GIOUnixWatch GIOUnixWatch;
struct _GIOUnixChannel {
+ GIOChannel channel;
gint fd;
};
@@ -141,7 +142,7 @@ g_io_unix_read (GIOChannel *channel,
guint count,
guint *bytes_read)
{
- GIOUnixChannel *unix_channel = channel->channel_data;
+ GIOUnixChannel *unix_channel = (GIOUnixChannel *)channel;
gint result;
result = read (unix_channel->fd, buf, count);
@@ -172,7 +173,7 @@ g_io_unix_write(GIOChannel *channel,
guint count,
guint *bytes_written)
{
- GIOUnixChannel *unix_channel = channel->channel_data;
+ GIOUnixChannel *unix_channel = (GIOUnixChannel *)channel;
gint result;
result = write (unix_channel->fd, buf, count);
@@ -202,7 +203,7 @@ g_io_unix_seek (GIOChannel *channel,
gint offset,
GSeekType type)
{
- GIOUnixChannel *unix_channel = channel->channel_data;
+ GIOUnixChannel *unix_channel = (GIOUnixChannel *)channel;
int whence;
off_t result;
@@ -242,7 +243,7 @@ g_io_unix_seek (GIOChannel *channel,
static void
g_io_unix_close (GIOChannel *channel)
{
- GIOUnixChannel *unix_channel = channel->channel_data;
+ GIOUnixChannel *unix_channel = (GIOUnixChannel *)channel;
close (unix_channel->fd);
}
@@ -250,7 +251,7 @@ g_io_unix_close (GIOChannel *channel)
static void
g_io_unix_free (GIOChannel *channel)
{
- GIOUnixChannel *unix_channel = channel->channel_data;
+ GIOUnixChannel *unix_channel = (GIOUnixChannel *)channel;
g_free (unix_channel);
}
@@ -264,7 +265,7 @@ g_io_unix_add_watch (GIOChannel *channel,
GDestroyNotify notify)
{
GIOUnixWatch *watch = g_new (GIOUnixWatch, 1);
- GIOUnixChannel *unix_channel = channel->channel_data;
+ GIOUnixChannel *unix_channel = (GIOUnixChannel *)channel;
watch->channel = channel;
g_io_channel_ref (channel);
@@ -284,14 +285,18 @@ GIOChannel *
g_io_channel_unix_new (gint fd)
{
GIOUnixChannel *unix_channel = g_new (GIOUnixChannel, 1);
+ GIOChannel *channel = (GIOChannel *)unix_channel;
+
+ g_io_channel_init (channel);
+ channel->funcs = &unix_channel_funcs;
unix_channel->fd = fd;
- return g_io_channel_new (&unix_channel_funcs, unix_channel);
+ return channel;
}
gint
g_io_channel_unix_get_fd (GIOChannel *channel)
{
- GIOUnixChannel *unix_channel = channel->channel_data;
+ GIOUnixChannel *unix_channel = g_new (GIOUnixChannel, 1);
return unix_channel->fd;
}