aboutsummaryrefslogtreecommitdiffstats
path: root/irc_im.c
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2010-04-11 16:37:06 +0200
committerWilmer van der Gaast <wilmer@gaast.net>2010-04-11 16:37:06 +0200
commit17a6ee93f4fbefe8b4356d884fdd95f4e72ce8cc (patch)
tree7f710dd5f451c3ea3a0c5b404ca7b7aad053c263 /irc_im.c
parent1f92a5851e0e3b1730e940980f2b0122c506c724 (diff)
Including DCC stuff again, with a wonderful extra layer of abstraction.
Some hooks are missing so sending files doesn't work yet. Receiving also still seems to have some issues. On the plus side, at least the MSN/Jabber modules work again.
Diffstat (limited to 'irc_im.c')
-rw-r--r--irc_im.c33
1 files changed, 32 insertions, 1 deletions
diff --git a/irc_im.c b/irc_im.c
index 812dcde1..26d826bd 100644
--- a/irc_im.c
+++ b/irc_im.c
@@ -24,7 +24,7 @@
*/
#include "bitlbee.h"
-
+#include "dcc.h"
/* IM->IRC callbacks */
@@ -160,12 +160,43 @@ static gboolean bee_irc_user_fullname( bee_t *bee, bee_user_t *bu )
return TRUE;
}
+/* File transfers */
+static file_transfer_t *bee_irc_ft_in_start( bee_t *bee, bee_user_t *bu, const char *file_name, size_t file_size )
+{
+ return dccs_send_start( bu->ic, (irc_user_t *) bu->ui_data, file_name, file_size );
+}
+
+gboolean bee_irc_ft_out_start( struct im_connection *ic, file_transfer_t *ft )
+{
+ return dccs_recv_start( ft );
+}
+
+void bee_irc_ft_close( struct im_connection *ic, file_transfer_t *ft )
+{
+ return dcc_close( ft );
+}
+
+void bee_irc_ft_finished( struct im_connection *ic, file_transfer_t *file )
+{
+ dcc_file_transfer_t *df = file->priv;
+
+ if( file->bytes_transferred >= file->file_size )
+ dcc_finish( file );
+ else
+ df->proto_finished = TRUE;
+}
+
const struct bee_ui_funcs irc_ui_funcs = {
bee_irc_user_new,
bee_irc_user_free,
bee_irc_user_fullname,
bee_irc_user_status,
bee_irc_user_msg,
+
+ bee_irc_ft_in_start,
+ bee_irc_ft_out_start,
+ bee_irc_ft_close,
+ bee_irc_ft_finished,
};