diff options
Diffstat (limited to 'irc.c')
| -rw-r--r-- | irc.c | 21 | 
1 files changed, 15 insertions, 6 deletions
| @@ -562,16 +562,25 @@ void irc_write( irc_t *irc, char *format, ... )  void irc_vawrite( irc_t *irc, char *format, va_list params )  {  	int size; -	char line[IRC_MAX_LINE]; -	 +	char line[IRC_MAX_LINE+1], *cs; +		  	if( irc->quit )  		return; - -	g_vsnprintf( line, IRC_MAX_LINE - 3, format, params ); - +	 +	line[IRC_MAX_LINE] = 0; +	g_vsnprintf( line, IRC_MAX_LINE - 2, format, params ); +	  	strip_newlines( line ); +	if( ( cs = set_getstr( irc, "charset" ) ) ) +	{ +		char conv[IRC_MAX_LINE+1]; +		 +		conv[IRC_MAX_LINE] = 0; +		if( do_iconv( "UTF-8", cs, line, conv, 0, IRC_MAX_LINE - 2 ) != -1 ) +			strcpy( line, conv ); +	}  	strcat( line, "\r\n" ); - +	  	if( irc->sendbuffer != NULL ) {  		size = strlen( irc->sendbuffer ) + strlen( line );  		irc->sendbuffer = g_renew ( char, irc->sendbuffer, size + 1 ); | 
