diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2010-05-08 01:48:48 +0100 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2010-05-08 01:48:48 +0100 |
commit | e4816eab28eff86f2303261f8ae292acd84212dd (patch) | |
tree | a3077e53da12d1141a56a2494bbb7e9a41df2170 /irc_im.c | |
parent | b17ce85d2c4e69637531a7989b30c7011832ccb9 (diff) |
Reshuffled irc_im.c into a saner order.
Diffstat (limited to 'irc_im.c')
-rw-r--r-- | irc_im.c | 101 |
1 files changed, 50 insertions, 51 deletions
@@ -26,7 +26,7 @@ #include "bitlbee.h" #include "dcc.h" -/* IM->IRC callbacks */ +/* IM->IRC callbacks: Simple IM/buddy-related stuff. */ static const struct irc_user_funcs irc_user_im_funcs; @@ -202,8 +202,55 @@ static gboolean bee_irc_user_fullname( bee_t *bee, bee_user_t *bu ) return TRUE; } +/* IRC->IM calls */ + +static gboolean bee_irc_user_privmsg( irc_user_t *iu, const char *msg ) +{ + if( iu->bu ) + return bee_user_msg( iu->irc->b, iu->bu, msg, 0 ); + else + return FALSE; +} + +static gboolean bee_irc_user_ctcp( irc_user_t *iu, char *const *ctcp ) +{ + if( ctcp[1] && g_strcasecmp( ctcp[0], "DCC" ) == 0 + && g_strcasecmp( ctcp[1], "SEND" ) == 0 ) + { + if( iu->bu && iu->bu->ic && iu->bu->ic->acc->prpl->transfer_request ) + { + file_transfer_t *ft = dcc_request( iu->bu->ic, ctcp ); + if ( ft ) + iu->bu->ic->acc->prpl->transfer_request( iu->bu->ic, ft, iu->bu->handle ); + + return TRUE; + } + } + else if( g_strcasecmp( ctcp[0], "TYPING" ) == 0 ) + { + if( iu->bu && iu->bu->ic && iu->bu->ic->acc->prpl->send_typing && ctcp[1] ) + { + int st = ctcp[1][0]; + if( st >= '0' && st <= '2' ) + { + st <<= 8; + iu->bu->ic->acc->prpl->send_typing( iu->bu->ic, iu->bu->handle, st ); + } + + return TRUE; + } + } + + return FALSE; +} + +static const struct irc_user_funcs irc_user_im_funcs = { + bee_irc_user_privmsg, + bee_irc_user_ctcp, +}; + -/* Groupchats */ +/* IM->IRC: Groupchats */ gboolean bee_irc_chat_new( bee_t *bee, struct groupchat *c ) { irc_t *irc = bee->ui_data; @@ -288,7 +335,7 @@ gboolean bee_irc_chat_remove_user( bee_t *bee, struct groupchat *c, bee_user_t * } -/* File transfers */ +/* IM->IRC: 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 ); @@ -334,51 +381,3 @@ const struct bee_ui_funcs irc_ui_funcs = { bee_irc_ft_close, bee_irc_ft_finished, }; - - -/* IRC->IM calls */ - -static gboolean bee_irc_user_privmsg( irc_user_t *iu, const char *msg ) -{ - if( iu->bu ) - return bee_user_msg( iu->irc->b, iu->bu, msg, 0 ); - else - return FALSE; -} - -static gboolean bee_irc_user_ctcp( irc_user_t *iu, char *const *ctcp ) -{ - if( ctcp[1] && g_strcasecmp( ctcp[0], "DCC" ) == 0 - && g_strcasecmp( ctcp[1], "SEND" ) == 0 ) - { - if( iu->bu && iu->bu->ic && iu->bu->ic->acc->prpl->transfer_request ) - { - file_transfer_t *ft = dcc_request( iu->bu->ic, ctcp ); - if ( ft ) - iu->bu->ic->acc->prpl->transfer_request( iu->bu->ic, ft, iu->bu->handle ); - - return TRUE; - } - } - else if( g_strcasecmp( ctcp[0], "TYPING" ) == 0 ) - { - if( iu->bu && iu->bu->ic && iu->bu->ic->acc->prpl->send_typing && ctcp[1] ) - { - int st = ctcp[1][0]; - if( st >= '0' && st <= '2' ) - { - st <<= 8; - iu->bu->ic->acc->prpl->send_typing( iu->bu->ic, iu->bu->handle, st ); - } - - return TRUE; - } - } - - return FALSE; -} - -static const struct irc_user_funcs irc_user_im_funcs = { - bee_irc_user_privmsg, - bee_irc_user_ctcp, -}; |