diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2010-04-11 16:37:06 +0200 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2010-04-11 16:37:06 +0200 |
commit | 17a6ee93f4fbefe8b4356d884fdd95f4e72ce8cc (patch) | |
tree | 7f710dd5f451c3ea3a0c5b404ca7b7aad053c263 /irc_im.c | |
parent | 1f92a5851e0e3b1730e940980f2b0122c506c724 (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.c | 33 |
1 files changed, 32 insertions, 1 deletions
@@ -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, }; |