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.
- * $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
*
*
* Nonblocking connect handling
*
/*----- Revision history --------------------------------------------------*
*
* $Log: conn.c,v $
/*----- 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@.
*
* Revision 1.5 2000/10/08 11:17:26 mdw
* (conn_connect): Change sizes to be @size_t@.
*
* @void (*func)(int fd, void *p) = handler function
* @void *p@ = argument for the handler function
*
* @void (*func)(int fd, void *p) = handler function
* @void *p@ = argument for the handler function
*
+ * 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
*
* Use: Sets up a nonblocking connect job. The socket should already
* be bound if you care about that sort of thing. When the
* In either case, the select job is then removed.
*/
* 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)
/* --- Something went pear-shaped --- */
fail:
close(fd);
/* --- Something went pear-shaped --- */
fail:
close(fd);
}
/* --- @conn_kill@ --- *
}
/* --- @conn_kill@ --- *
- * $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
*
*
* Nonblocking connect handling
*
/*----- Revision history --------------------------------------------------*
*
* $Log: conn.h,v $
/*----- 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.
*
* Revision 1.5 1999/12/10 23:42:04 mdw
* Change header file guard names.
*
* @void (*func)(int fd, void *p) = handler function
* @void *p@ = argument for the handler function
*
* @void (*func)(int fd, void *p) = handler function
* @void *p@ = argument for the handler function
*
+ * 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
*
* Use: Sets up a nonblocking connect job. The socket should already
* be bound if you care about that sort of thing. When the
* In either case, the select job is then removed.
*/
* 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@ --- *
*
/* --- @conn_kill@ --- *
*