diff options
Diffstat (limited to 'irc_send.c')
-rw-r--r-- | irc_send.c | 21 |
1 files changed, 18 insertions, 3 deletions
@@ -108,18 +108,33 @@ void irc_send_motd( irc_t *irc ) } } -/* FIXME/REPLACEME */ void irc_usermsg( irc_t *irc, char *format, ... ) { + irc_channel_t *ic; + irc_user_t *iu; char text[1024]; va_list params; - //irc_user_t *iu; va_start( params, format ); g_vsnprintf( text, sizeof( text ), format, params ); va_end( params ); - fprintf( stderr, "%s\n", text ); + if( irc->last_root_cmd && + irc_channel_name_ok( irc->last_root_cmd ) && + ( ic = irc_channel_by_name( irc, irc->last_root_cmd ) ) && + ic->flags & IRC_CHANNEL_JOINED ) + irc_send_msg( irc->root, "PRIVMSG", irc->last_root_cmd, text ); + else if( irc->last_root_cmd && + ( iu = irc_user_by_name( irc, irc->last_root_cmd ) ) && + iu->f == &irc_user_root_funcs ) + irc_send_msg( iu, "PRIVMSG", irc->user->nick, text ); + else + { + g_free( irc->last_root_cmd ); + irc->last_root_cmd = NULL; + + irc_send_msg( irc->root, "PRIVMSG", irc->user->nick, text ); + } /*return( irc_msgfrom( irc, u->nick, text ) );*/ } |