diff options
| author | Wilmer van der Gaast <wilmer@gaast.net> | 2010-06-27 13:39:07 +0100 | 
|---|---|---|
| committer | Wilmer van der Gaast <wilmer@gaast.net> | 2010-06-27 13:39:07 +0100 | 
| commit | 84c3a72604a292c41348d678eccf1875263cb8dd (patch) | |
| tree | 4493f16cef85087b0c40c0025bd14b3c82508c2c | |
| parent | e907683afea9e2789e0ac6a1eb55bda9c896c255 (diff) | |
Import chatrooms configured in older BitlBee versions. Settings are currently
ignored though. Also removing the old chat.[ch] files since they're really not
important anymore.
| -rw-r--r-- | irc_commands.c | 1 | ||||
| -rw-r--r-- | protocols/account.c | 1 | ||||
| -rw-r--r-- | protocols/chat.c | 192 | ||||
| -rw-r--r-- | protocols/chat.h | 51 | ||||
| -rw-r--r-- | protocols/nogaim.c | 1 | ||||
| -rw-r--r-- | root_commands.c | 1 | ||||
| -rw-r--r-- | storage_xml.c | 51 | 
7 files changed, 24 insertions, 274 deletions
| diff --git a/irc_commands.c b/irc_commands.c index 5a0843ec..30518a99 100644 --- a/irc_commands.c +++ b/irc_commands.c @@ -26,7 +26,6 @@  #define BITLBEE_CORE  #include "bitlbee.h"  #include "ipc.h" -#include "chat.h"  static void irc_cmd_pass( irc_t *irc, char **cmd )  { diff --git a/protocols/account.c b/protocols/account.c index 0bacea74..ba309b38 100644 --- a/protocols/account.c +++ b/protocols/account.c @@ -26,7 +26,6 @@  #define BITLBEE_CORE  #include "bitlbee.h"  #include "account.h" -#include "chat.h"  account_t *account_add( bee_t *bee, struct prpl *prpl, char *user, char *pass )  { diff --git a/protocols/chat.c b/protocols/chat.c deleted file mode 100644 index 8c5ce0bc..00000000 --- a/protocols/chat.c +++ /dev/null @@ -1,192 +0,0 @@ -  /********************************************************************\ -  * BitlBee -- An IRC to other IM-networks gateway                     * -  *                                                                    * -  * Copyright 2002-2008 Wilmer van der Gaast and others                * -  \********************************************************************/ - -/* Keep track of chatrooms the user is interested in                    */ - -/* -  This program is free software; you can redistribute it and/or modify -  it under the terms of the GNU General Public License as published by -  the Free Software Foundation; either version 2 of the License, or -  (at your option) any later version. - -  This program is distributed in the hope that it will be useful, -  but WITHOUT ANY WARRANTY; without even the implied warranty of -  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -  GNU General Public License for more details. - -  You should have received a copy of the GNU General Public License with -  the Debian GNU/Linux distribution in /usr/share/common-licenses/GPL; -  if not, write to the Free Software Foundation, Inc., 59 Temple Place, -  Suite 330, Boston, MA  02111-1307  USA -*/ - -#include "bitlbee.h" -#include "chat.h" - -struct chat *chat_add( irc_t *irc, account_t *acc, char *handle, char *channel ) -{ -	struct chat *c, *l; -	set_t *s; - -	if( acc->prpl->chat_join == NULL || !chat_chanok( channel ) || -	    chat_chancmp( channel, irc->channel ) == 0 ) -	{ -		return NULL; -	} -	 -	for( c = irc->chatrooms; c; c = c->next ) -	{ -		if( chat_chancmp( channel, c->channel ) == 0 ) -			return NULL; -		 -		if( acc == c->acc && g_strcasecmp( handle, c->handle ) == 0 ) -			return NULL; -		 -		l = c; -	} -	 -	if( irc->chatrooms == NULL ) -		irc->chatrooms = c = g_new0( struct chat, 1 ); -	else -		l->next = c = g_new0( struct chat, 1 ); -	 -	c->acc = acc; -	c->handle = g_strdup( handle ); -	c->channel = g_strdup( channel ); -	 -	s = set_add( &c->set, "auto_join", "false", set_eval_bool, c ); -	/* s = set_add( &c->set, "auto_rejoin", "false", set_eval_bool, c ); */ -	s = set_add( &c->set, "nick", NULL, NULL, c ); -	s->flags |= SET_NULL_OK; -	 -	return c; -} - -struct chat *chat_byhandle( irc_t *irc, account_t *acc, char *handle ) -{ -	struct chat *c; -	 -	for( c = irc->chatrooms; c; c = c->next ) -	{ -		if( acc == c->acc && g_strcasecmp( handle, c->handle ) == 0 ) -			break; -	} -	 -	return c; -} - -struct chat *chat_bychannel( irc_t *irc, char *channel ) -{ -	struct chat *c; -	 -	for( c = irc->chatrooms; c; c = c->next ) -	{ -		if( chat_chancmp( channel, c->channel ) == 0 ) -			break; -	} -	 -	return c; -} - -struct chat *chat_get( irc_t *irc, char *id ) -{ -	struct chat *c, *ret = NULL; -	int nr; -	 -	if( sscanf( id, "%d", &nr ) == 1 && nr < 1000 ) -	{ -		for( c = irc->chatrooms; c; c = c->next ) -			if( ( nr-- ) == 0 ) -				return c; -		 -		return NULL; -	} -	 -	for( c = irc->chatrooms; c; c = c->next ) -	{ -		if( strstr( c->handle, id ) ) -		{ -			if( !ret ) -				ret = c; -			else -				return NULL; -		} -		else if( strstr( c->channel, id ) ) -		{ -			if( !ret ) -				ret = c; -			else -				return NULL; -		} -	} -	 -	return ret; -} - -int chat_del( irc_t *irc, struct chat *chat ) -{ -	struct chat *c, *l = NULL; -	 -	for( c = irc->chatrooms; c; c = (l=c)->next ) -		if( c == chat ) -			break; -	 -	if( c == NULL ) -		return 0; -	else if( l == NULL ) -		irc->chatrooms = c->next; -	else -		l->next = c->next; -	 -	while( c->set ) -		set_del( &c->set, c->set->key ); -	 -	g_free( c->handle ); -	g_free( c->channel ); -	g_free( c ); -	 -	return 1; -} - -int chat_chancmp( char *a, char *b ) -{ -	if( !chat_chanok( a ) || !chat_chanok( b ) ) -		return 0; -	 -	if( a[0] == b[0] ) -		return nick_cmp( a + 1, b + 1 ); -	else -		return -1; -} - -int chat_chanok( char *a ) -{ -	if( strchr( CTYPES, a[0] ) != NULL ) -		return nick_ok( a + 1 ); -	else -		return 0; -} - -int chat_join( irc_t *irc, struct chat *c, const char *password ) -{ -	struct groupchat *gc; -	char *nick = set_getstr( &c->set, "nick" ); - -	if( c->acc->ic == NULL || c->acc->prpl->chat_join == NULL ) -		return 0; -	 -	if( nick == NULL ) -		nick = irc->nick; -	 -	if( ( gc = c->acc->prpl->chat_join( c->acc->ic, c->handle, nick, password ) ) ) -	{ -		g_free( gc->channel ); -		gc->channel = g_strdup( c->channel ); -		return 1; -	} -	 -	return 0; -} diff --git a/protocols/chat.h b/protocols/chat.h deleted file mode 100644 index 7196aea8..00000000 --- a/protocols/chat.h +++ /dev/null @@ -1,51 +0,0 @@ -  /********************************************************************\ -  * BitlBee -- An IRC to other IM-networks gateway                     * -  *                                                                    * -  * Copyright 2002-2008 Wilmer van der Gaast and others                * -  \********************************************************************/ - -/* Keep track of chatrooms the user is interested in                    */ - -/* -  This program is free software; you can redistribute it and/or modify -  it under the terms of the GNU General Public License as published by -  the Free Software Foundation; either version 2 of the License, or -  (at your option) any later version. - -  This program is distributed in the hope that it will be useful, -  but WITHOUT ANY WARRANTY; without even the implied warranty of -  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -  GNU General Public License for more details. - -  You should have received a copy of the GNU General Public License with -  the Debian GNU/Linux distribution in /usr/share/common-licenses/GPL; -  if not, write to the Free Software Foundation, Inc., 59 Temple Place, -  Suite 330, Boston, MA  02111-1307  USA -*/ - -#ifndef _CHAT_H -#define _CHAT_H - -struct chat -{ -	account_t *acc; -	 -	char *handle; -	char *channel; -	set_t *set; -	 -	struct chat *next; -}; - -struct chat *chat_add( irc_t *irc, account_t *acc, char *handle, char *channel ); -struct chat *chat_byhandle( irc_t *irc, account_t *acc, char *handle ); -struct chat *chat_bychannel( irc_t *irc, char *channel ); -struct chat *chat_get( irc_t *irc, char *id ); -int chat_del( irc_t *irc, struct chat *chat ); - -int chat_chancmp( char *a, char *b ); -int chat_chanok( char *a ); - -int chat_join( irc_t *irc, struct chat *c, const char *password ); - -#endif diff --git a/protocols/nogaim.c b/protocols/nogaim.c index 6ecdfe12..f88ec693 100644 --- a/protocols/nogaim.c +++ b/protocols/nogaim.c @@ -35,7 +35,6 @@  #include <ctype.h>  #include "nogaim.h" -#include "chat.h"  GSList *connections; diff --git a/root_commands.c b/root_commands.c index 63f1c867..e075816a 100644 --- a/root_commands.c +++ b/root_commands.c @@ -27,7 +27,6 @@  #include "commands.h"  #include "bitlbee.h"  #include "help.h" -#include "chat.h"  #include <string.h> diff --git a/storage_xml.c b/storage_xml.c index 3ce85713..73d77ade 100644 --- a/storage_xml.c +++ b/storage_xml.c @@ -28,7 +28,6 @@  #include "base64.h"  #include "arc.h"  #include "md5.h" -#include "chat.h"  #if GLIB_CHECK_VERSION(2,8,0)  #include <glib/gstdio.h> @@ -54,7 +53,7 @@ struct xml_parsedata  	irc_t *irc;  	char *current_setting;  	account_t *current_account; -	struct chat *current_chat; +	irc_channel_t *current_channel;  	set_t **current_set_head;  	char *given_nick;  	char *given_pass; @@ -175,9 +174,12 @@ static void xml_start_element( GMarkupParseContext *ctx, const gchar *element_na  		if( ( setting = xml_attr( attr_names, attr_values, "name" ) ) )  		{ +			/*  			if( xd->current_chat != NULL )  				xd->current_set_head = &xd->current_chat->set; -			else if( xd->current_account != NULL ) +			else +			*/ +			if( xd->current_account != NULL )  				xd->current_set_head = &xd->current_account->set;  			else  				xd->current_set_head = &xd->irc->b->set; @@ -214,7 +216,24 @@ static void xml_start_element( GMarkupParseContext *ctx, const gchar *element_na  		if( xd->current_account && handle && channel )  		{ -			//xd->current_chat = chat_add( xd->irc, xd->current_account, handle, channel ); +			irc_channel_t *ic; +			char *acc; +			 +			acc = g_strdup_printf( "%s(%s)", +			                       xd->current_account->prpl->name, +			                       xd->current_account->user ); +			 +			if( ( ic = irc_channel_new( irc, channel ) ) && +			    set_setstr( &ic->set, "chat_type", "room" ) && +			    set_setstr( &ic->set, "account", acc ) && +			    set_setstr( &ic->set, "room", handle ) ) +			{ +				/* Nothing else to do for now, really. */ +			} +			else if( ic ) +				irc_channel_free( ic ); +			 +			g_free( acc );  		}  		else  		{ @@ -244,7 +263,7 @@ static void xml_end_element( GMarkupParseContext *ctx, const gchar *element_name  	}  	else if( g_strcasecmp( element_name, "chat" ) == 0 )  	{ -		xd->current_chat = NULL; +		/* xd->current_chat = NULL; */  	}  } @@ -436,7 +455,6 @@ static storage_status_t xml_save( irc_t *irc, int overwrite )  		unsigned char *pass_cr;  		char *pass_b64;  		int pass_len; -		struct chat *c;  		pass_len = arc_encode( acc->pass, strlen( acc->pass ), (unsigned char**) &pass_cr, irc->password, 12 );  		pass_b64 = base64_encode( pass_cr, pass_len ); @@ -469,27 +487,6 @@ static storage_status_t xml_save( irc_t *irc, int overwrite )  		if( g_hash_table_find( acc->nicks, xml_save_nick, & fd ) )  			goto write_error; -#if 0 -		for( c = irc->chatrooms; c; c = c->next ) -		{ -			if( c->acc != acc ) -				continue; -			 -			if( !xml_printf( fd, 2, "<chat handle=\"%s\" channel=\"%s\" type=\"%s\">\n", -			                        c->handle, c->channel, "room" ) ) -				goto write_error; -			 -			for( set = c->set; set; set = set->next ) -				if( set->value && !( set->flags & ACC_SET_NOSAVE ) ) -					if( !xml_printf( fd, 3, "<setting name=\"%s\">%s</setting>\n", -					                        set->key, set->value ) ) -						goto write_error; - -			if( !xml_printf( fd, 2, "</chat>\n" ) ) -				goto write_error; -		} -#endif -		  		if( !xml_printf( fd, 1, "</account>\n" ) )  			goto write_error;  	} | 
