aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--account.c7
-rw-r--r--doc/CREDITS1
-rw-r--r--doc/user-guide/commands.xml12
-rw-r--r--doc/user-guide/quickstart.xml4
-rw-r--r--irc_commands.c2
-rw-r--r--lib/misc.c10
-rw-r--r--lib/misc.h2
-rw-r--r--lib/ssl_gnutls.c6
-rw-r--r--nick.c19
-rw-r--r--protocols/jabber/conference.c21
-rw-r--r--protocols/jabber/io.c4
-rw-r--r--protocols/jabber/iq.c12
-rw-r--r--protocols/jabber/jabber.c16
-rw-r--r--protocols/jabber/jabber.h2
-rw-r--r--protocols/msn/msn.c2
-rw-r--r--protocols/oscar/aim.h2
-rw-r--r--protocols/oscar/oscar.c28
-rw-r--r--protocols/yahoo/yahoo.c2
-rw-r--r--root_commands.c22
-rw-r--r--tests/check_nick.c12
20 files changed, 123 insertions, 63 deletions
diff --git a/account.c b/account.c
index 388d04d0..4eb78faa 100644
--- a/account.c
+++ b/account.c
@@ -94,10 +94,15 @@ char *set_eval_account( set_t *set, char *value )
{
g_free( acc->server );
if( *value )
+ {
acc->server = g_strdup( value );
+ return value;
+ }
else
+ {
acc->server = NULL;
- return value;
+ return g_strdup( set->def );
+ }
}
else if( strcmp( set->key, "auto_connect" ) == 0 )
{
diff --git a/doc/CREDITS b/doc/CREDITS
index f805c251..d53f6de0 100644
--- a/doc/CREDITS
+++ b/doc/CREDITS
@@ -54,6 +54,7 @@ The authors thank the following people:
- Ed Schouten, for reporting bugs.
- Greg (gropeep.org), for updating the Yahoo! module to fix some issues
that were there for quite some time already.
+- misc@mandriva.org for lots of Jabber contributions.
- And all other users who help us by sending useful bug reports, positive
feedback, nice patches and cool addons. Mentioning you all would make
diff --git a/doc/user-guide/commands.xml b/doc/user-guide/commands.xml
index 8c874014..090acff3 100644
--- a/doc/user-guide/commands.xml
+++ b/doc/user-guide/commands.xml
@@ -16,7 +16,7 @@
</description>
<bitlbee-command name="add">
- <syntax>account add &lt;protocol&gt; &lt;username&gt; &lt;password&gt; [&lt;server&gt;]</syntax>
+ <syntax>account add &lt;protocol&gt; &lt;username&gt; &lt;password&gt;</syntax>
<description>
<para>
@@ -25,7 +25,7 @@
</description>
<bitlbee-command name="jabber">
- <syntax>account add jabber &lt;handle@server.tld&gt; &lt;password&gt; [&lt;servertag&gt;]</syntax>
+ <syntax>account add jabber &lt;handle@server.tld&gt; &lt;password&gt;</syntax>
<description>
<para>
@@ -49,16 +49,16 @@
</bitlbee-command>
<bitlbee-command name="oscar">
- <syntax>account add oscar &lt;handle&gt; &lt;password&gt; [&lt;servername&gt;]</syntax>
+ <syntax>account add oscar &lt;handle&gt; &lt;password&gt;</syntax>
<description>
<para>
- Specifying a server is required for OSCAR, since OSCAR can be used for both ICQ- and AIM-connections. Although these days it's supposed to be possible to connect to ICQ via AIM-servers and vice versa, we like to stick with this separation for now. For ICQ connections, the servername is <emphasis>login.icq.com</emphasis>, for AIM connections it's <emphasis>login.oscar.aol.com</emphasis>.
+ OSCAR is the protocol used to connect to AIM and/or ICQ. The servers will automatically detect if you're using a numeric or non-numeric username so there's no need to tell which network you want to connect to.
</para>
</description>
<ircexample>
- <ircline nick="wilmer">account add oscar 72696705 hobbelmeeuw login.icq.com</ircline>
+ <ircline nick="wilmer">account add oscar 72696705 hobbelmeeuw</ircline>
<ircline nick="root">Account successfully added</ircline>
</ircexample>
</bitlbee-command>
@@ -594,7 +594,7 @@
<bitlbee-setting name="server" type="string" scope="account">
<description>
<para>
- Can be set for Jabber- and OSCAR-connections. For OSCAR, this must be set to <emphasis>login.icq.com</emphasis> if it's an ICQ connection, or <emphasis>login.oscar.aol.com</emphasis> if it's an AIM connection. For Jabber, you have to set this if the servername isn't equal to the part after the @ in the Jabber handle.
+ Can be set for Jabber- and OSCAR-connections. For Jabber, you might have to set this if the servername isn't equal to the part after the @ in the Jabber handle. For OSCAR this shouldn't be necessary anymore in recent BitlBee versions.
</para>
</description>
</bitlbee-setting>
diff --git a/doc/user-guide/quickstart.xml b/doc/user-guide/quickstart.xml
index 520f240f..fcb06c6b 100644
--- a/doc/user-guide/quickstart.xml
+++ b/doc/user-guide/quickstart.xml
@@ -37,12 +37,12 @@ For instance, suppose you have an ICQ account with UIN <emphasis>72696705</empha
</para>
<ircexample>
- <ircline nick="you">account add oscar 72696705 QuickStart login.icq.com</ircline>
+ <ircline nick="you">account add jabber bitlbee@jabber.org QuickStart</ircline>
<ircline nick="root">Account successfully added</ircline>
</ircexample>
<para>
-Other available IM protocols are jabber, msn, and yahoo. Oscar is the protocol used by ICQ and AOL. For oscar, you need to specify the IM-server as a fourth argument (for msn and yahoo there is no fourth argument). For AOL Instant Messenger, the server name is <emphasis>login.oscar.aol.com</emphasis>. For ICQ, the server name is <emphasis>login.icq.com</emphasis>.
+Other available IM protocols are msn, oscar, and yahoo. Oscar is the protocol used by ICQ and AOL.
</para>
<para>
diff --git a/irc_commands.c b/irc_commands.c
index 287a126f..65f0d6c6 100644
--- a/irc_commands.c
+++ b/irc_commands.c
@@ -206,7 +206,7 @@ static void irc_cmd_invite( irc_t *irc, char **cmd )
if( u && c && ( u->ic == c->ic ) )
if( c->ic && c->ic->acc->prpl->chat_invite )
{
- c->ic->acc->prpl->chat_invite( c, "", u->handle );
+ c->ic->acc->prpl->chat_invite( c, u->handle, NULL );
irc_reply( irc, 341, "%s %s", nick, channel );
return;
}
diff --git a/lib/misc.c b/lib/misc.c
index c977029f..d6795ec9 100644
--- a/lib/misc.c
+++ b/lib/misc.c
@@ -44,6 +44,8 @@
#include <resolv.h>
#endif
+#include "ssl_client.h"
+
void strip_linefeed(gchar *text)
{
int i, j;
@@ -590,3 +592,11 @@ char *word_wrap( char *msg, int line_len )
return g_string_free( ret, FALSE );
}
+
+gboolean ssl_sockerr_again( void *ssl )
+{
+ if( ssl )
+ return ssl_errno == SSL_AGAIN;
+ else
+ return sockerr_again();
+}
diff --git a/lib/misc.h b/lib/misc.h
index 1d76f7f2..e0468d73 100644
--- a/lib/misc.h
+++ b/lib/misc.h
@@ -65,4 +65,6 @@ G_MODULE_EXPORT struct ns_srv_reply *srv_lookup( char *service, char *protocol,
G_MODULE_EXPORT char *word_wrap( char *msg, int line_len );
+G_MODULE_EXPORT gboolean ssl_sockerr_again( void *ssl );
+
#endif
diff --git a/lib/ssl_gnutls.c b/lib/ssl_gnutls.c
index 221a2862..b964ab49 100644
--- a/lib/ssl_gnutls.c
+++ b/lib/ssl_gnutls.c
@@ -222,8 +222,10 @@ void ssl_disconnect( void *conn_ )
closesocket( conn->fd );
- gnutls_deinit( conn->session );
- gnutls_certificate_free_credentials( conn->xcred );
+ if( conn->session )
+ gnutls_deinit( conn->session );
+ if( conn->xcred )
+ gnutls_certificate_free_credentials( conn->xcred );
g_free( conn );
}
diff --git a/nick.c b/nick.c
index 88c3faea..4b05f4a7 100644
--- a/nick.c
+++ b/nick.c
@@ -153,10 +153,10 @@ void nick_del( account_t *acc, const char *handle )
/* Character maps, _lc_[x] == _uc_[x] (but uppercase), according to the RFC's.
With one difference, we allow dashes. */
-static char *nick_lc_chars = "0123456789abcdefghijklmnopqrstuvwxyz{}^-_|";
-static char *nick_uc_chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ[]~-_\\";
+static char *nick_lc_chars = "0123456789abcdefghijklmnopqrstuvwxyz{}^`-_|";
+static char *nick_uc_chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ[]~`-_\\";
-void nick_strip( char * nick )
+void nick_strip( char *nick )
{
int i, j;
@@ -169,6 +169,15 @@ void nick_strip( char * nick )
j++;
}
}
+ if( isdigit( nick[0] ) )
+ {
+ char *orig;
+
+ orig = g_strdup( nick );
+ g_snprintf( nick, MAX_NICK_LENGTH, "_%s", orig );
+ g_free( orig );
+ j ++;
+ }
while( j <= MAX_NICK_LENGTH )
nick[j++] = '\0';
}
@@ -177,8 +186,8 @@ int nick_ok( const char *nick )
{
const char *s;
- /* Empty/long nicks are not allowed */
- if( !*nick || strlen( nick ) > MAX_NICK_LENGTH )
+ /* Empty/long nicks are not allowed, nor numbers at [0] */
+ if( !*nick || isdigit( nick[0] ) || strlen( nick ) > MAX_NICK_LENGTH )
return( 0 );
for( s = nick; *s; s ++ )
diff --git a/protocols/jabber/conference.c b/protocols/jabber/conference.c
index c5bc0e68..074412ec 100644
--- a/protocols/jabber/conference.c
+++ b/protocols/jabber/conference.c
@@ -175,6 +175,27 @@ int jabber_chat_leave( struct groupchat *c, const char *reason )
return 1;
}
+void jabber_chat_invite( struct groupchat *c, char *who, char *message )
+{
+ struct xt_node *node;
+ struct im_connection *ic = c->ic;
+ struct jabber_chat *jc = c->data;
+
+ node = xt_new_node( "reason", message, NULL );
+
+ node = xt_new_node( "invite", NULL, node );
+ xt_add_attr( node, "to", who );
+
+ node = xt_new_node( "x", NULL, node );
+ xt_add_attr( node, "xmlns", XMLNS_MUC_USER );
+
+ node = jabber_make_packet( "message", NULL, jc->name, node );
+
+ jabber_write_packet( ic, node );
+
+ xt_free_node( node );
+}
+
/* Not really the same syntax as the normal pkt_ functions, but this isn't
called by the xmltree parser directly and this way I can add some extra
parameters so we won't have to repeat too many things done by the caller
diff --git a/protocols/jabber/io.c b/protocols/jabber/io.c
index 61cd142e..29561b86 100644
--- a/protocols/jabber/io.c
+++ b/protocols/jabber/io.c
@@ -119,7 +119,7 @@ static gboolean jabber_write_queue( struct im_connection *ic )
return TRUE;
}
- else if( st == 0 || ( st < 0 && !sockerr_again() ) )
+ else if( st == 0 || ( st < 0 && !ssl_sockerr_again( jd->ssl ) ) )
{
/* Set fd to -1 to make sure we won't write to it anymore. */
closesocket( jd->fd ); /* Shouldn't be necessary after errors? */
@@ -230,7 +230,7 @@ static gboolean jabber_read_callback( gpointer data, gint fd, b_input_condition
}
}
}
- else if( st == 0 || ( st < 0 && !sockerr_again() ) )
+ else if( st == 0 || ( st < 0 && !ssl_sockerr_again( jd->ssl ) ) )
{
closesocket( jd->fd );
jd->fd = -1;
diff --git a/protocols/jabber/iq.c b/protocols/jabber/iq.c
index 8bd1111a..2f0959b0 100644
--- a/protocols/jabber/iq.c
+++ b/protocols/jabber/iq.c
@@ -49,7 +49,8 @@ xt_status jabber_pkt_iq( struct xt_node *node, gpointer data )
}
else if( strcmp( type, "get" ) == 0 )
{
- if( !( c = xt_find_node( node->children, "query" ) ) ||
+ if( !( ( c = xt_find_node( node->children, "query" ) ) ||
+ ( c = xt_find_node( node->children, "ping" ) ) ) || /* O_o WHAT is wrong with just <query/> ????? */
!( s = xt_find_attr( c, "xmlns" ) ) )
{
imcb_log( ic, "WARNING: Received incomplete IQ-%s packet", type );
@@ -80,12 +81,21 @@ xt_status jabber_pkt_iq( struct xt_node *node, gpointer data )
strftime( buf, sizeof( buf ) - 1, "%Z", localtime( &time_ep ) );
xt_add_child( reply, xt_new_node( "tz", buf, NULL ) );
}
+ else if( strcmp( s, XMLNS_PING ) == 0 )
+ {
+ xt_free_node( reply );
+ reply = jabber_make_packet( "iq", "result", xt_find_attr( node, "from" ), NULL );
+ if( ( s = xt_find_attr( node, "id" ) ) )
+ xt_add_attr( reply, "id", s );
+ pack = 0;
+ }
else if( strcmp( s, XMLNS_DISCO_INFO ) == 0 )
{
const char *features[] = { XMLNS_VERSION,
XMLNS_TIME,
XMLNS_CHATSTATES,
XMLNS_MUC,
+ XMLNS_PING,
XMLNS_SI,
XMLNS_BYTESTREAMS,
XMLNS_FILETRANSFER,
diff --git a/protocols/jabber/jabber.c b/protocols/jabber/jabber.c
index 98d2dadf..1d3225dd 100644
--- a/protocols/jabber/jabber.c
+++ b/protocols/jabber/jabber.c
@@ -422,6 +422,20 @@ static void jabber_chat_leave_( struct groupchat *c )
jabber_chat_leave( c, NULL );
}
+static void jabber_chat_invite_( struct groupchat *c, char *who, char *msg )
+{
+ struct jabber_chat *jc = c->data;
+ gchar *msg_alt = NULL;
+
+ if( msg == NULL )
+ msg_alt = g_strdup_printf( "%s invited you to %s", c->ic->acc->user, jc->name );
+
+ if( c && who )
+ jabber_chat_invite( c, who, msg ? msg : msg_alt );
+
+ g_free( msg_alt );
+}
+
static void jabber_keepalive( struct im_connection *ic )
{
/* Just any whitespace character is enough as a keepalive for XMPP sessions. */
@@ -493,7 +507,7 @@ void jabber_initmodule()
ret->remove_buddy = jabber_remove_buddy;
ret->chat_msg = jabber_chat_msg_;
ret->chat_topic = jabber_chat_topic_;
-// ret->chat_invite = jabber_chat_invite;
+ ret->chat_invite = jabber_chat_invite_;
ret->chat_leave = jabber_chat_leave_;
ret->chat_join = jabber_chat_join_;
ret->keepalive = jabber_keepalive;
diff --git a/protocols/jabber/jabber.h b/protocols/jabber/jabber.h
index 9edb844e..3251b49b 100644
--- a/protocols/jabber/jabber.h
+++ b/protocols/jabber/jabber.h
@@ -188,6 +188,7 @@ struct jabber_transfer
#define XMLNS_AUTH "jabber:iq:auth" /* XEP-0078 */
#define XMLNS_VERSION "jabber:iq:version" /* XEP-0092 */
#define XMLNS_TIME "jabber:iq:time" /* XEP-0090 */
+#define XMLNS_PING "urn:xmpp:ping" /* XEP-0199 */
#define XMLNS_VCARD "vcard-temp" /* XEP-0054 */
#define XMLNS_DELAY "jabber:x:delay" /* XEP-0091 */
#define XMLNS_XDATA "jabber:x:data" /* XEP-0004 */
@@ -292,5 +293,6 @@ int jabber_chat_topic( struct groupchat *c, char *topic );
int jabber_chat_leave( struct groupchat *c, const char *reason );
void jabber_chat_pkt_presence( struct im_connection *ic, struct jabber_buddy *bud, struct xt_node *node );
void jabber_chat_pkt_message( struct im_connection *ic, struct jabber_buddy *bud, struct xt_node *node );
+void jabber_chat_invite( struct groupchat *c, char *who, char *message );
#endif
diff --git a/protocols/msn/msn.c b/protocols/msn/msn.c
index df04e30d..aa05dbdd 100644
--- a/protocols/msn/msn.c
+++ b/protocols/msn/msn.c
@@ -240,7 +240,7 @@ static void msn_chat_msg( struct groupchat *c, char *message, int flags )
already severely broken) disappeared here! */
}
-static void msn_chat_invite( struct groupchat *c, char *msg, char *who )
+static void msn_chat_invite( struct groupchat *c, char *who, char *message )
{
struct msn_switchboard *sb = msn_sb_by_chat( c );
char buf[1024];
diff --git a/protocols/oscar/aim.h b/protocols/oscar/aim.h
index 81ea5f9e..9516996c 100644
--- a/protocols/oscar/aim.h
+++ b/protocols/oscar/aim.h
@@ -93,7 +93,7 @@ typedef guint16 flap_seqnum_t;
* the client to connect to it.
*
*/
-#define AIM_DEFAULT_LOGIN_SERVER "login.oscar.aol.com"
+#define AIM_DEFAULT_LOGIN_SERVER "login.messaging.aol.com"
#define AIM_LOGIN_PORT 5190
/*
diff --git a/protocols/oscar/oscar.c b/protocols/oscar/oscar.c
index 96983738..c4683046 100644
--- a/protocols/oscar/oscar.c
+++ b/protocols/oscar/oscar.c
@@ -340,7 +340,7 @@ static void oscar_init(account_t *acc)
{
set_t *s;
- s = set_add( &acc->set, "server", NULL, set_eval_account, acc );
+ s = set_add( &acc->set, "server", AIM_DEFAULT_LOGIN_SERVER, set_eval_account, acc );
s->flags |= ACC_SET_NOSAVE | ACC_SET_OFFLINE_ONLY;
if (isdigit(acc->user[0])) {
@@ -355,15 +355,7 @@ static void oscar_login(account_t *acc) {
struct im_connection *ic = imcb_new(acc);
struct oscar_data *odata = ic->proto_data = g_new0(struct oscar_data, 1);
- if (isdigit(acc->user[0])) {
- odata->icq = TRUE;
- /* This is odd but it's necessary for a proper do_import and do_export.
- We don't do those anymore, but let's stick with it, just in case
- it accidentally fixes something else too... </bitlbee> */
- /* ic->acc->pass[8] = 0;
- Not touching this anymore now that it belongs to account_t!
- Let's hope nothing will break. ;-) */
- } else {
+ if (!isdigit(acc->user[0])) {
ic->flags |= OPT_DOES_HTML;
}
@@ -384,24 +376,14 @@ static void oscar_login(account_t *acc) {
return;
}
- if (acc->server == NULL) {
- imcb_error(ic, "No servername specified");
- imc_logout(ic, FALSE);
- return;
- }
-
- if (g_strcasecmp(acc->server, "login.icq.com") != 0 &&
- g_strcasecmp(acc->server, "login.oscar.aol.com") != 0) {
- imcb_log(ic, "Warning: Unknown OSCAR server: `%s'. Please review your configuration if the connection fails.",acc->server);
- }
-
imcb_log(ic, _("Signon: %s"), ic->acc->user);
aim_conn_addhandler(sess, conn, 0x0017, 0x0007, gaim_parse_login, 0);
aim_conn_addhandler(sess, conn, 0x0017, 0x0003, gaim_parse_auth_resp, 0);
conn->status |= AIM_CONN_STATUS_INPROGRESS;
- conn->fd = proxy_connect(acc->server, AIM_LOGIN_PORT, oscar_login_connect, ic);
+ conn->fd = proxy_connect(set_getstr(&acc->set, "server"),
+ AIM_LOGIN_PORT, oscar_login_connect, ic);
if (conn->fd < 0) {
imcb_error(ic, _("Couldn't connect to host"));
imc_logout(ic, TRUE);
@@ -2508,7 +2490,7 @@ void oscar_chat_msg(struct groupchat *c, char *message, int msgflags)
/* return (ret >= 0); */
}
-void oscar_chat_invite(struct groupchat *c, char *message, char *who)
+void oscar_chat_invite(struct groupchat *c, char *who, char *message)
{
struct im_connection *ic = c->ic;
struct oscar_data * od = (struct oscar_data *)ic->proto_data;
diff --git a/protocols/yahoo/yahoo.c b/protocols/yahoo/yahoo.c
index 28a72877..625f3d1c 100644
--- a/protocols/yahoo/yahoo.c
+++ b/protocols/yahoo/yahoo.c
@@ -305,7 +305,7 @@ static void byahoo_chat_msg( struct groupchat *c, char *message, int flags )
yahoo_conference_message( yd->y2_id, NULL, c->data, c->title, message, 1 );
}
-static void byahoo_chat_invite( struct groupchat *c, char *msg, char *who )
+static void byahoo_chat_invite( struct groupchat *c, char *who, char *msg )
{
struct byahoo_data *yd = (struct byahoo_data *) c->ic->proto_data;
diff --git a/root_commands.c b/root_commands.c
index 2da77519..eea16178 100644
--- a/root_commands.c
+++ b/root_commands.c
@@ -198,7 +198,7 @@ static void cmd_drop( irc_t *irc, char **cmd )
irc_usermsg( irc, "Account `%s' removed", irc->nick );
break;
default:
- irc_usermsg( irc, "Error: '%d'", status );
+ irc_usermsg( irc, "Error: `%d'", status );
break;
}
}
@@ -233,7 +233,11 @@ static void cmd_account( irc_t *irc, char **cmd )
a = account_add( irc, prpl, cmd[3], cmd[4] );
if( cmd[5] )
+ {
+ irc_usermsg( irc, "Warning: Passing a servername/other flags to `account add' "
+ "is now deprecated. Use `account set' instead." );
set_setstr( &a->set, "server", cmd[5] );
+ }
irc_usermsg( irc, "Account successfully added" );
}
@@ -316,7 +320,7 @@ static void cmd_account( irc_t *irc, char **cmd )
}
else
{
- irc_usermsg( irc, "No accounts known. Use 'account add' to add one." );
+ irc_usermsg( irc, "No accounts known. Use `account add' to add one." );
}
}
}
@@ -402,9 +406,7 @@ static void cmd_account( irc_t *irc, char **cmd )
return;
}
- if( ( strcmp( cmd[3], "=" ) ) == 0 && cmd[4] )
- irc_usermsg( irc, "Warning: Correct syntax: \002account set <variable> <value>\002 (without =)" );
- else if( g_strncasecmp( cmd[2], "-del", 4 ) == 0 )
+ if( g_strncasecmp( cmd[2], "-del", 4 ) == 0 )
set_reset( &a->set, set_name );
else
set_setstr( &a->set, set_name, cmd[3] );
@@ -744,16 +746,11 @@ static void cmd_yesno( irc_t *irc, char **cmd )
static void cmd_set( irc_t *irc, char **cmd )
{
- char *set_name = NULL;
+ char *set_name = cmd[1];
if( cmd[1] && cmd[2] )
{
- if( ( strcmp( cmd[2], "=" ) ) == 0 && cmd[3] )
- {
- irc_usermsg( irc, "Warning: Correct syntax: \002set <variable> <value>\002 (without =)" );
- return;
- }
- else if( g_strncasecmp( cmd[1], "-del", 4 ) == 0 )
+ if( g_strncasecmp( cmd[1], "-del", 4 ) == 0 )
{
set_reset( &irc->set, cmd[2] );
set_name = cmd[2];
@@ -761,7 +758,6 @@ static void cmd_set( irc_t *irc, char **cmd )
else
{
set_setstr( &irc->set, cmd[1], cmd[2] );
- set_name = cmd[1];
}
}
if( set_name ) /* else 'forgotten' on purpose.. Must show new value after changing */
diff --git a/tests/check_nick.c b/tests/check_nick.c
index 714c4fdc..6c4267cd 100644
--- a/tests/check_nick.c
+++ b/tests/check_nick.c
@@ -14,11 +14,17 @@ START_TEST(test_nick_strip)
"thisisaveryveryveryverylongnick",
"thisisave:ryveryveryverylongnick",
"t::::est",
+ "test123",
+ "123test",
+ "123",
NULL };
const char *expected[] = { "test", "test", "test",
"thisisaveryveryveryveryl",
"thisisaveryveryveryveryl",
"test",
+ "test123",
+ "_123test",
+ "_123",
NULL };
for (i = 0; get[i]; i++) {
@@ -34,8 +40,8 @@ END_TEST
START_TEST(test_nick_ok_ok)
{
- const char *nicks[] = { "foo", "bar", "bla[", "blie]",
- "BreEZaH", "\\od^~", NULL };
+ const char *nicks[] = { "foo", "bar123", "bla[", "blie]", "BreEZaH",
+ "\\od^~", "_123", "_123test", NULL };
int i;
for (i = 0; nicks[i]; i++) {
@@ -48,7 +54,7 @@ END_TEST
START_TEST(test_nick_ok_notok)
{
const char *nicks[] = { "thisisaveryveryveryveryveryveryverylongnick",
- "\nillegalchar", "", "nick%", NULL };
+ "\nillegalchar", "", "nick%", "123test", NULL };
int i;
for (i = 0; nicks[i]; i++) {