aboutsummaryrefslogtreecommitdiffstats
path: root/irc_im.c
diff options
context:
space:
mode:
Diffstat (limited to 'irc_im.c')
-rw-r--r--irc_im.c44
1 files changed, 20 insertions, 24 deletions
diff --git a/irc_im.c b/irc_im.c
index 372b1cb3..e54842fd 100644
--- a/irc_im.c
+++ b/irc_im.c
@@ -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;
}