diff options
| -rw-r--r-- | doc/user-guide/misc.xml | 42 | ||||
| -rw-r--r-- | irc.c | 3 | ||||
| -rw-r--r-- | irc_channel.c | 1 | ||||
| -rw-r--r-- | root_commands.c | 45 | ||||
| -rw-r--r-- | set.h | 9 | 
5 files changed, 96 insertions, 4 deletions
| diff --git a/doc/user-guide/misc.xml b/doc/user-guide/misc.xml index 7829a432..dc0ce5ed 100644 --- a/doc/user-guide/misc.xml +++ b/doc/user-guide/misc.xml @@ -233,4 +233,46 @@ everything in the handle up to the first @.  </sect1> +<sect1 id="news1.3"> +<title>New stuff in BitlBee 1.3dev</title> + +<para> +Most of the core of BitlBee was rewritten since the last release. This entry +should sum up the majority of the changes. +</para> + +<para> +First of all, you can now have as many control channels as you want. Or you +can have none, it's finally possible to leave &bitlbee and still talk to +all your contacts. Or you can have a &work with all your work-related +contacts, or a &msn with all your MSN Messenger contacts. See <emphasis>help +channels</emphasis> for more information about this. +</para> + +<para> +Also, you can change how nicknames are generated for your contacts. Like +automatically adding a [fb] tag to the nicks of all your Facebook contacts. +See <emphasis>help nick_format</emphasis>. +</para> + +<para> +When you're already connected to a BitlBee server and you connect from +elsewhere, you can take over the old session. +</para> + +<para> +Instead of account numbers, accounts now also get tags. These are +automatically generated but can be changed (<emphasis>help set +tag</emphasis>). You can now use them instead of accounts numbers. +(Example: <emphasis>acc gtalk on</emphasis>) +</para> + +<para> +Last of all: You can finally change your nickname and +shorten root commands (try <emphasis>acc li</emphasis> instead +of <emphasis>account list</emphasis>). +</para> + +</sect1> +  </chapter> @@ -108,6 +108,8 @@ irc_t *irc_new( int fd )  	s = set_add( &b->set, "display_namechanges", "false", set_eval_bool, irc );  	s = set_add( &b->set, "display_timestamps", "true", set_eval_bool, irc );  	s = set_add( &b->set, "handle_unknown", "add_channel", NULL, irc ); +	s = set_add( &b->set, "last_version", NULL, NULL, irc ); +	s->flags |= SET_HIDDEN;  	s = set_add( &b->set, "lcnicks", "true", set_eval_bool, irc );  	s = set_add( &b->set, "nick_format", "%-@nick", NULL, irc );  	s = set_add( &b->set, "offline_user_quits", "true", set_eval_bool, irc ); @@ -121,6 +123,7 @@ irc_t *irc_new( int fd )  	s = set_add( &b->set, "private", "true", set_eval_bool, irc );  	s = set_add( &b->set, "query_order", "lifo", NULL, irc );  	s = set_add( &b->set, "root_nick", ROOT_NICK, set_eval_root_nick, irc ); +	s->flags |= SET_HIDDEN;  	s = set_add( &b->set, "show_offline", "false", set_eval_bw_compat, irc );  	s = set_add( &b->set, "simulate_netsplit", "true", set_eval_bool, irc );  	s = set_add( &b->set, "timezone", "local", set_eval_timezone, irc ); diff --git a/irc_channel.c b/irc_channel.c index 118fef74..80b1cb62 100644 --- a/irc_channel.c +++ b/irc_channel.c @@ -758,6 +758,7 @@ static gboolean control_channel_free( irc_channel_t *ic )  	set_del( &ic->set, "fill_by" );  	set_del( &ic->set, "group" );  	set_del( &ic->set, "protocol" ); +	set_del( &ic->set, "show_users" );  	g_free( icc );  	ic->data = NULL; diff --git a/root_commands.c b/root_commands.c index ad886f57..280c93a2 100644 --- a/root_commands.c +++ b/root_commands.c @@ -99,6 +99,7 @@ static void cmd_help( irc_t *irc, char **cmd )  }  static void cmd_account( irc_t *irc, char **cmd ); +static void bitlbee_whatsnew( irc_t *irc );  static void cmd_identify( irc_t *irc, char **cmd )  { @@ -155,6 +156,8 @@ static void cmd_identify( irc_t *irc, char **cmd )  		irc->status |= USTATUS_IDENTIFIED;  		irc_umode_set( irc, "+R", 1 ); +		bitlbee_whatsnew( irc ); +		  		/* The following code is a bit hairy now. With takeover  		   support, we shouldn't immediately auto_connect in case  		   we're going to offer taking over an existing session. @@ -335,7 +338,8 @@ static int cmd_set_real( irc_t *irc, char **cmd, set_t **head, cmd_set_checkflag  		set_t *s = *head;  		while( s )  		{ -			cmd_showset( irc, &s, s->key ); +			if( !( s->flags & SET_HIDDEN ) ) +				cmd_showset( irc, &s, s->key );  			s = s->next;  		}  	} @@ -1279,6 +1283,45 @@ static void cmd_transfer( irc_t *irc, char **cmd )  	}  } +/* Maybe this should be a stand-alone command as well? */ +static void bitlbee_whatsnew( irc_t *irc ) +{ +	int last = set_getint( &irc->b->set, "last_version" ); +	GString *msg = g_string_new( "" ); +	char s[16]; +	 +	if( last >= BITLBEE_VERSION_CODE ) +		return; +	 +	if( last < 0x010206 ) /* 1.2.6 */ +	{ +		g_string_append( msg, +			"Twitter support. See \x02help account add twitter\x02.\n" ); +	} +	if( last < 0x010300 ) /* 1.3dev */ +	{ +		g_string_append( msg, +			"Support for multiple configurable control channels, " +			"each with a subset of your contact list. See " +			"\x02help channels\x02 for more information.\n" +			"File transfer support for some protocols (more if " +			"you use libpurple). Just /DCC SEND stuff. Incoming " +			"files also become DCC transfers.\n" +			"Many more things, briefly described in " +			"\x02help news1.3\x02.\n" ); +	} +	 +	if( msg->len > 0 ) +		irc_usermsg( irc, "%s: This seems to be your first time using this " +		                  "this version of BitlBee. Here's a list of new " +		                  "features you may like to know about:\n\n%s\n", +		                  irc->user->nick, msg->str ); +	 +	g_string_free( msg, TRUE ); +	g_snprintf( s, sizeof( s ), "%d", BITLBEE_VERSION_CODE ); +	set_setstr( &irc->b->set, "last_version", s ); +} +  /* IMPORTANT: Keep this list sorted! The short command logic needs that. */  const command_t commands[] = {  	{ "account",        1, cmd_account,        0 }, @@ -42,7 +42,11 @@ typedef char *(*set_eval) ( struct set *set, char *value );  extern char *SET_INVALID; -#define SET_NULL_OK        0x0100 +typedef enum +{ +	SET_NULL_OK = 0x0100, +	SET_HIDDEN = 0x0200, +} set_flags_t;  typedef struct set  { @@ -59,8 +63,7 @@ typedef struct set  	                   In fact, you should only read values using  	                   set_getstr/int(). */ -	int flags;      /* See account.h, for example. set.c doesn't use -	                   this (yet?). */ +	set_flags_t flags; /* Mostly defined per user. */  	/* Eval: Returns SET_INVALID if the value is incorrect, exactly  	   the passed value variable, or a corrected value. In case of | 
