chiark / gitweb /
Interface change to @conn_init@ -- return error rather than calling the
authormdw <mdw>
Fri, 22 Jun 2001 19:35:20 +0000 (19:35 +0000)
committermdw <mdw>
Fri, 22 Jun 2001 19:35:20 +0000 (19:35 +0000)
function.  This reduces the number of different environments the
callback has to cope with, and the old behaviour is easily simulatable
with the new, while simulating the new behaviour was awkward and
painful.

conn.c
conn.h

diff --git a/conn.c b/conn.c
index 8fe92a38bd1548c2fc12ac41e2463a8219085134..60574288fd405a07e8e1b4e44a8fe1926964d3a4 100644 (file)
--- a/conn.c
+++ b/conn.c
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: conn.c,v 1.5 2000/10/08 11:17:26 mdw Exp $
+ * $Id: conn.c,v 1.6 2001/06/22 19:35:20 mdw Exp $
  *
  * Nonblocking connect handling
  *
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: conn.c,v $
+ * Revision 1.6  2001/06/22 19:35:20  mdw
+ * Interface change to @conn_init@ -- return error rather than calling the
+ * function.  This reduces the number of different environments the
+ * callback has to cope with, and the old behaviour is easily simulatable
+ * with the new, while simulating the new behaviour was awkward and
+ * painful.
+ *
  * Revision 1.5  2000/10/08 11:17:26  mdw
  * (conn_connect): Change sizes to be @size_t@.
  *
@@ -112,7 +119,7 @@ static void conn_connect(int fd, unsigned mode, void *p)
  *             @void (*func)(int fd, void *p) = handler function
  *             @void *p@ = argument for the handler function
  *
- * Returns:    ---
+ * Returns:    Zero on success, nonzero on failure.
  *
  * Use:                Sets up a nonblocking connect job.  The socket should already
  *             be bound if you care about that sort of thing.  When the
@@ -123,10 +130,10 @@ static void conn_connect(int fd, unsigned mode, void *p)
  *             In either case, the select job is then removed.
  */
 
-void conn_init(conn *c, sel_state *s, int fd,
-              struct sockaddr *dst, int dsz,
-              void (*func)(int /*fd*/, void */*p*/),
-              void *p)
+int conn_init(conn *c, sel_state *s, int fd,
+             struct sockaddr *dst, int dsz,
+             void (*func)(int /*fd*/, void */*p*/),
+             void *p)
 {
   int f;
 
@@ -144,13 +151,13 @@ void conn_init(conn *c, sel_state *s, int fd,
   } else
     func(fd, p);
 
-  return;
+  return (0);
 
   /* --- Something went pear-shaped --- */
 
 fail:
   close(fd);
-  func(-1, p);
+  return (-1);
 }
 
 /* --- @conn_kill@ --- *
diff --git a/conn.h b/conn.h
index 58a96a8e185315ef6009f08b38fac632948bb674..d520a6fff24b3964a55bab4f6be2540b401ad998 100644 (file)
--- a/conn.h
+++ b/conn.h
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: conn.h,v 1.5 1999/12/10 23:42:04 mdw Exp $
+ * $Id: conn.h,v 1.6 2001/06/22 19:35:20 mdw Exp $
  *
  * Nonblocking connect handling
  *
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: conn.h,v $
+ * Revision 1.6  2001/06/22 19:35:20  mdw
+ * Interface change to @conn_init@ -- return error rather than calling the
+ * function.  This reduces the number of different environments the
+ * callback has to cope with, and the old behaviour is easily simulatable
+ * with the new, while simulating the new behaviour was awkward and
+ * painful.
+ *
  * Revision 1.5  1999/12/10 23:42:04  mdw
  * Change header file guard names.
  *
@@ -86,7 +93,7 @@ typedef struct conn {
  *             @void (*func)(int fd, void *p) = handler function
  *             @void *p@ = argument for the handler function
  *
- * Returns:    ---
+ * Returns:    Zero on success, nonzero on failure.
  *
  * Use:                Sets up a nonblocking connect job.  The socket should already
  *             be bound if you care about that sort of thing.  When the
@@ -97,10 +104,10 @@ typedef struct conn {
  *             In either case, the select job is then removed.
  */
 
-extern void conn_init(conn */*c*/, sel_state */*s*/, int /*fd*/,
-                     struct sockaddr */*dst*/, int /*dsz*/,
-                     void (*/*func*/)(int /*fd*/, void */*p*/),
-                     void */*p*/);
+extern int conn_init(conn */*c*/, sel_state */*s*/, int /*fd*/,
+                    struct sockaddr */*dst*/, int /*dsz*/,
+                    void (*/*func*/)(int /*fd*/, void */*p*/),
+                    void */*p*/);
 
 /* --- @conn_kill@ --- *
  *