applied patch from Andreas Persenius <ndap@swipnet.se> that updates the
[platform/upstream/glib.git] / glib / giounix.c
index 72239c7..2a06dac 100644 (file)
@@ -5,21 +5,28 @@
  * Copyright 1998 Owen Taylor
  *
  * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation; either
  * version 2 of the License, or (at your option) any later version.
  *
  * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
  *
- * You should have received a copy of the GNU Library General Public
+ * 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.
  */
 
+/*
+ * 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/. 
+ */
+
 /* 
  * MT safe
  */
@@ -71,9 +78,11 @@ static guint  g_io_unix_add_watch (GIOChannel      *channel,
                                   GDestroyNotify notify);
 static gboolean g_io_unix_prepare  (gpointer source_data, 
                                    GTimeVal *current_time,
-                                   gint *timeout);
+                                   gint *timeout,
+                                   gpointer user_data);
 static gboolean g_io_unix_check    (gpointer source_data,
-                                   GTimeVal *current_time);
+                                   GTimeVal *current_time,
+                                   gpointer user_data);
 static gboolean g_io_unix_dispatch (gpointer source_data,
                                    GTimeVal *current_time,
                                    gpointer user_data);
@@ -98,7 +107,8 @@ GIOFuncs unix_channel_funcs = {
 static gboolean 
 g_io_unix_prepare  (gpointer source_data, 
                    GTimeVal *current_time,
-                   gint    *timeout)
+                   gint     *timeout,
+                   gpointer user_data)
 {
   *timeout = -1;
   return FALSE;
@@ -106,7 +116,8 @@ g_io_unix_prepare  (gpointer source_data,
 
 static gboolean 
 g_io_unix_check    (gpointer source_data,
-                   GTimeVal *current_time)
+                   GTimeVal *current_time,
+                   gpointer user_data)
 {
   GIOUnixWatch *data = source_data;
 
@@ -131,7 +142,7 @@ g_io_unix_destroy (gpointer source_data)
 {
   GIOUnixWatch *data = source_data;
 
-  g_main_poll_remove (&data->pollfd);
+  g_main_remove_poll (&data->pollfd);
   g_io_channel_unref (data->channel);
   g_free (data);
 }
@@ -155,6 +166,7 @@ g_io_unix_read (GIOChannel *channel,
        case EINVAL:
          return G_IO_ERROR_INVAL;
        case EAGAIN:
+       case EINTR:
          return G_IO_ERROR_AGAIN;
        default:
          return G_IO_ERROR_UNKNOWN;
@@ -186,6 +198,7 @@ g_io_unix_write(GIOChannel *channel,
        case EINVAL:
          return G_IO_ERROR_INVAL;
        case EAGAIN:
+       case EINTR:
          return G_IO_ERROR_AGAIN;
        default:
          return G_IO_ERROR_UNKNOWN;
@@ -276,7 +289,7 @@ g_io_unix_add_watch (GIOChannel    *channel,
   watch->pollfd.fd = unix_channel->fd;
   watch->pollfd.events = condition;
 
-  g_main_poll_add (priority, &watch->pollfd);
+  g_main_add_poll (&watch->pollfd, priority);
 
   return g_source_add (priority, TRUE, &unix_watch_funcs, watch, user_data, notify);
 }