diff options
Diffstat (limited to 'irc_im.c')
-rw-r--r-- | irc_im.c | 44 |
1 files changed, 20 insertions, 24 deletions
@@ -192,39 +192,30 @@ void bee_irc_channel_update( irc_t *irc, irc_channel_t *ic, irc_user_t *iu ) } } -static void bee_irc_msg_from_user( irc_user_t *iu, const char *msg, time_t sent_at ) +static gboolean bee_irc_user_msg( bee_t *bee, bee_user_t *bu, const char *msg_, time_t sent_at ) { - irc_t *irc = iu->irc; - bee_t *bee = irc->b; + irc_t *irc = bee->ui_data; + irc_user_t *iu = (irc_user_t *) bu->ui_data; const char *dst; char *prefix = NULL; char *wrapped, *ts = NULL; - + char *msg = g_strdup( msg_ ); + GSList *l; + if( sent_at > 0 && set_getbool( &irc->b->set, "display_timestamps" ) ) ts = irc_format_timestamp( irc, sent_at ); - dst = irc_user_msgdest(iu); - if(dst != irc->user->nick) { + dst = irc_user_msgdest( iu ); + if( dst != irc->user->nick ) + { /* if not messaging directly, call user by name */ prefix = g_strdup_printf( "%s%s%s", irc->user->nick, set_getstr( &bee->set, "to_char" ), ts ? : "" ); - } else { + } + else + { prefix = ts; - ts = NULL; /* don't doulbe-free */ + ts = NULL; /* don't double-free */ } - - wrapped = word_wrap( msg, 425 ); - irc_send_msg( iu, "PRIVMSG", dst, wrapped, prefix ); - - g_free( wrapped ); - g_free( prefix ); - g_free( ts ); -} - -static gboolean bee_irc_user_msg( bee_t *bee, bee_user_t *bu, const char *msg_, time_t sent_at ) -{ - irc_user_t *iu = (irc_user_t *) bu->ui_data; - char *msg = g_strdup( msg_ ); - GSList *l; for( l = irc_plugins; l; l = l->next ) { @@ -255,9 +246,14 @@ static gboolean bee_irc_user_msg( bee_t *bee, bee_user_t *bu, const char *msg_, msg = s; } - bee_irc_msg_from_user( iu, msg, sent_at ); - + wrapped = word_wrap( msg, 425 ); + irc_send_msg( iu, "PRIVMSG", dst, wrapped, prefix ); + + g_free( wrapped ); + g_free( prefix ); g_free( msg ); + g_free( ts ); + return TRUE; } |