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 8fe92a3..6057428 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 58a96a8..d520a6f 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@ --- *
  *