aboutsummaryrefslogtreecommitdiffstats
path: root/irc.c
diff options
context:
space:
mode:
Diffstat (limited to 'irc.c')
-rw-r--r--irc.c43
1 files changed, 30 insertions, 13 deletions
diff --git a/irc.c b/irc.c
index a3031199..709eb116 100644
--- a/irc.c
+++ b/irc.c
@@ -114,18 +114,18 @@ irc_t *irc_new( int fd )
set_add( irc, "auto_reconnect", "false", set_eval_bool );
set_add( irc, "auto_reconnect_delay", "300", set_eval_int );
set_add( irc, "buddy_sendbuffer", "false", set_eval_bool );
- set_add( irc, "buddy_sendbuffer_delay", "1", set_eval_int );
+ set_add( irc, "buddy_sendbuffer_delay", "200", set_eval_int );
set_add( irc, "charset", "iso8859-1", set_eval_charset );
set_add( irc, "debug", "false", set_eval_bool );
set_add( irc, "default_target", "root", NULL );
set_add( irc, "display_namechanges", "false", set_eval_bool );
set_add( irc, "handle_unknown", "root", NULL );
- /* set_add( irc, "html", "nostrip", NULL ); */
set_add( irc, "lcnicks", "true", set_eval_bool );
set_add( irc, "ops", "both", set_eval_ops );
set_add( irc, "private", "true", set_eval_bool );
set_add( irc, "query_order", "lifo", NULL );
set_add( irc, "save_on_quit", "true", set_eval_bool );
+ set_add( irc, "strip_html", "true", NULL );
set_add( irc, "to_char", ": ", set_eval_to_char );
set_add( irc, "typing_notice", "false", set_eval_bool );
@@ -485,7 +485,7 @@ int irc_exec( irc_t *irc, char **cmd )
{
irc_reply( irc, 461, "%s :Need more parameters", cmd[0] );
}
- else if( *cmd[1] == '#' )
+ else if( *cmd[1] == '#' || *cmd[1] == '&' )
{
if( cmd[2] )
{
@@ -556,7 +556,7 @@ int irc_exec( irc_t *irc, char **cmd )
RFC doesn't have any reply for that though? */
else if( cmd[1] )
{
- if( cmd[1][0] == '#' && cmd[1][1] )
+ if( ( cmd[1][0] == '#' || cmd[1][0] == '&' ) && cmd[1][1] )
{
user_t *u = user_find( irc, cmd[1] + 1 );
@@ -930,19 +930,31 @@ void irc_vawrite( irc_t *irc, char *format, va_list params )
return;
}
-void irc_write_all( char *format, ... )
+void irc_write_all( int now, char *format, ... )
{
va_list params;
GSList *temp;
-
+
va_start( params, format );
-
+
temp = irc_connection_list;
- while( temp!=NULL ) {
+ while( temp != NULL )
+ {
+ irc_t *irc = temp->data;
+
+ if( now )
+ {
+ g_free( irc->sendbuffer );
+ irc->sendbuffer = g_strdup( "\r\n" );
+ }
irc_vawrite( temp->data, format, params );
+ if( now )
+ {
+ bitlbee_io_current_client_write( irc->io_channel, G_IO_OUT, irc );
+ }
temp = temp->next;
}
-
+
va_end( params );
return;
}
@@ -1068,7 +1080,7 @@ void irc_login( irc_t *irc )
// u->send_handler = msg_echo;
irc_spawn( irc, u );
- irc_usermsg( irc, "Welcome to the BitlBee gateway!\n\nIf you've never used BitlBee before, please do read the help information using the help command. Lots of FAQ's are answered there." );
+ irc_usermsg( irc, "Welcome to the BitlBee gateway!\n\nIf you've never used BitlBee before, please do read the help information using the \x02help\x02 command. Lots of FAQ's are answered there." );
irc->status = USTATUS_LOGGED_IN;
}
@@ -1312,7 +1324,7 @@ int irc_send( irc_t *irc, char *nick, char *s, int flags )
struct conversation *c = NULL;
user_t *u = NULL;
- if( *nick == '#' )
+ if( *nick == '#' || *nick == '&' )
{
if( !( c = conv_findchannel( nick ) ) )
{
@@ -1427,6 +1439,8 @@ int buddy_send_handler( irc_t *irc, user_t *u, char *msg, int flags )
if( set_getint( irc, "buddy_sendbuffer" ) && set_getint( irc, "buddy_sendbuffer_delay" ) > 0 )
{
+ int delay;
+
if( u->sendbuf_len > 0 && u->sendbuf_flags != flags)
{
//Flush the buffer
@@ -1450,10 +1464,13 @@ int buddy_send_handler( irc_t *irc, user_t *u, char *msg, int flags )
strcat( u->sendbuf, msg );
strcat( u->sendbuf, "\n" );
+ delay = set_getint( irc, "buddy_sendbuffer_delay" );
+ if( delay <= 5 )
+ delay *= 1000;
+
if( u->sendbuf_timer > 0 )
g_source_remove( u->sendbuf_timer );
- u->sendbuf_timer = g_timeout_add( set_getint( irc, "buddy_sendbuffer_delay" ) * 1000,
- buddy_send_handler_delayed, u );
+ u->sendbuf_timer = g_timeout_add( delay, buddy_send_handler_delayed, u );
return( 1 );
}