int (*info_callback)();
} BIO_CONNECT;
-union int_fn_to_char_u
- {
- char *char_p;
- int (*fn_p)();
- };
-
static int conn_write(BIO *h,char *buf,int num);
static int conn_read(BIO *h,char *buf,int size);
static int conn_puts(BIO *h,char *str);
static long conn_ctrl(BIO *h,int cmd,long arg1,char *arg2);
static int conn_new(BIO *h);
static int conn_free(BIO *data);
+static long conn_callback_ctrl(BIO *h,int cmd,void *(*fp)());
static int conn_state(BIO *b, BIO_CONNECT *c);
static void conn_close_socket(BIO *data);
conn_ctrl,
conn_new,
conn_free,
+ conn_callback_ctrl,
};
static int conn_state(BIO *b, BIO_CONNECT *c)
break;
case BIO_CTRL_DUP:
{
- union int_fn_to_char_u tmp_cb;
-
dbio=(BIO *)ptr;
if (data->param_port)
BIO_set_conn_port(dbio,data->param_port);
if (data->param_hostname)
BIO_set_conn_hostname(dbio,data->param_hostname);
BIO_set_nbio(dbio,data->nbio);
- tmp_cb.fn_p=data->info_callback;
- (void)BIO_set_info_callback(dbio,tmp_cb.char_p);
+ (void)BIO_set_info_callback(dbio,(void *(*)())(data->info_callback));
}
break;
case BIO_CTRL_SET_CALLBACK:
{
- union int_fn_to_char_u tmp_cb;
-
- tmp_cb.char_p=ptr;
- data->info_callback=tmp_cb.fn_p;
+#if 0 /* FIXME: Should this be used? -- Richard Levitte */
+ BIOerr(BIO_F_CONN_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
+ ret = -1;
+#else
+ ret=0;
+#endif
}
break;
case BIO_CTRL_GET_CALLBACK:
return(ret);
}
+static long conn_callback_ctrl(BIO *b, int cmd, void *(*fp)())
+ {
+ long ret=1;
+ BIO_CONNECT *data;
+
+ data=(BIO_CONNECT *)b->ptr;
+
+ switch (cmd)
+ {
+ case BIO_CTRL_SET_CALLBACK:
+ {
+ data->info_callback=(int (*)())fp;
+ }
+ break;
+ default:
+ ret=0;
+ break;
+ }
+ return(ret);
+ }
+
static int conn_puts(BIO *bp, char *str)
{
int n,ret;