Changeset 98de2cc
- Timestamp:
- 2008-06-21T23:51:18Z (16 years ago)
- Branches:
- master
- Children:
- 424e663
- Parents:
- 3e6764a
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
protocols/jabber/jabber_util.c
r3e6764a r98de2cc 290 290 len = strlen( orig ); 291 291 new = g_new( char, len + 1 ); 292 for( i = 0; i < len; i ++ ) 292 293 /* So it turns out the /resource part is case sensitive. Yeah, and 294 it's Unicode but feck Unicode. :-P So stop once we see a slash. */ 295 for( i = 0; i < len && orig[i] != '/' ; i ++ ) 293 296 new[i] = tolower( orig[i] ); 297 for( ; orig[i]; i ++ ) 298 new[i] = orig[i]; 294 299 295 300 new[i] = 0; … … 334 339 { 335 340 /* Check for dupes. */ 336 if( g_strcasecmp( bi->resource, s + 1 ) == 0 )341 if( strcmp( bi->resource, s + 1 ) == 0 ) 337 342 { 338 343 *s = '/'; … … 387 392 if( ( s = strchr( jid, '/' ) ) ) 388 393 { 389 int none_found= 0;394 int bare_exists = 0; 390 395 391 396 *s = 0; … … 410 415 /* See if there's an exact match. */ 411 416 for( ; bud; bud = bud->next ) 412 if( g_strcasecmp( bud->resource, s + 1 ) == 0 )417 if( strcmp( bud->resource, s + 1 ) == 0 ) 413 418 break; 414 419 } 415 420 else 416 421 { 417 /* This hack is there to make sure that O_CREAT will 418 work if there's already another resouce present 419 for this JID, even if it's an unknown buddy. This 420 is done to handle conferences properly. */ 421 none_found = 1; 422 /* TODO(wilmer): Find out what I was thinking when I 423 wrote this??? And then fix it. This makes me sad... */ 424 } 425 426 if( bud == NULL && ( flags & GET_BUDDY_CREAT ) && ( imcb_find_buddy( ic, jid ) || !none_found ) ) 422 /* This variable tells the if down here that the bare 423 JID already exists and we should feel free to add 424 more resources, if the caller asked for that. */ 425 bare_exists = 1; 426 } 427 428 if( bud == NULL && ( flags & GET_BUDDY_CREAT ) && 429 ( !bare_exists || imcb_find_buddy( ic, jid ) ) ) 427 430 { 428 431 *s = '/'; … … 449 452 /* We want an exact match, so in thise case there shouldn't be a /resource. */ 450 453 return NULL; 451 else if( ( bud->resource == NULL || bud->next == NULL ))454 else if( bud->resource == NULL || bud->next == NULL ) 452 455 /* No need for selection if there's only one option. */ 453 456 return bud; … … 527 530 if( bud->next == NULL && 528 531 ( ( s == NULL && bud->resource == NULL ) || 529 ( bud->resource && s && g_strcasecmp( bud->resource, s + 1 ) == 0 ) ) )532 ( bud->resource && s && strcmp( bud->resource, s + 1 ) == 0 ) ) ) 530 533 { 531 534 g_hash_table_remove( jd->buddies, bud->bare_jid ); … … 550 553 { 551 554 for( bi = bud, prev = NULL; bi; bi = (prev=bi)->next ) 552 if( g_strcasecmp( bi->resource, s + 1 ) == 0 )555 if( strcmp( bi->resource, s + 1 ) == 0 ) 553 556 break; 554 557 -
tests/check_jabber_util.c
r3e6764a r98de2cc 11 11 static void check_buddy_add(int l) 12 12 { 13 struct jabber_buddy *budw1, *budw2, *budw3, *budw4, *budn; 14 int i; 13 struct jabber_buddy *budw1, *budw2, *budw3, *budn, *bud; 15 14 16 15 budw1 = jabber_buddy_add( ic, "wilmer@gaast.net/BitlBee" ); 17 16 budw1->last_act = time( NULL ) - 100; 18 budw2 = jabber_buddy_add( ic, " wilmer@gaast.net/Telepathy" );17 budw2 = jabber_buddy_add( ic, "WILMER@gaast.net/Telepathy" ); 19 18 budw2->priority = 2; 20 19 budw2->last_act = time( NULL ); 21 budw3 = jabber_buddy_add( ic, "wilmer@ gaast.net/Druif" );20 budw3 = jabber_buddy_add( ic, "wilmer@GAAST.NET/bitlbee" ); 22 21 budw3->last_act = time( NULL ) - 200; 23 22 budw3->priority = 4; 24 23 /* TODO(wilmer): Shouldn't this just return budw3? */ 25 fail_if( jabber_buddy_add( ic, "wilmer@gaast.net/ druif" ) != NULL );24 fail_if( jabber_buddy_add( ic, "wilmer@gaast.net/Telepathy" ) != NULL ); 26 25 27 26 budn = jabber_buddy_add( ic, "nekkid@lamejab.net" ); … … 29 28 fail_if( jabber_buddy_add( ic, "nekkid@lamejab.net/Illegal" ) ); 30 29 30 /* Case sensitivity: Case only matters after the / */ 31 fail_if( jabber_buddy_by_jid( ic, "wilmer@gaast.net/BitlBee", 0 ) == 32 jabber_buddy_by_jid( ic, "wilmer@gaast.net/bitlbee", 0 ) ); 33 fail_if( jabber_buddy_by_jid( ic, "wilmer@gaast.net/telepathy", 0 ) ); 34 31 35 fail_unless( jabber_buddy_by_jid( ic, "wilmer@gaast.net/BitlBee", 0 ) == budw1 ); 32 fail_unless( jabber_buddy_by_jid( ic, " wilmer@gaast.net/bitlbee", GET_BUDDY_EXACT ) == budw1 );33 fail_unless( jabber_buddy_by_jid( ic, "wilmer@ gaast.net/BitlBee", GET_BUDDY_CREAT ) == budw1 );36 fail_unless( jabber_buddy_by_jid( ic, "WILMER@GAAST.NET/BitlBee", GET_BUDDY_EXACT ) == budw1 ); 37 fail_unless( jabber_buddy_by_jid( ic, "wilmer@GAAST.NET/BitlBee", GET_BUDDY_CREAT ) == budw1 ); 34 38 35 39 fail_if( jabber_buddy_by_jid( ic, "wilmer@gaast.net", GET_BUDDY_EXACT ) ); 36 fail_unless( jabber_buddy_by_jid( ic, "wilmer@gaast.net", GET_BUDDY_FIRST ) == budw1 ); 37 fail_unless( jabber_buddy_by_jid( ic, "wilmer@gaast.net", 0 ) == budw3 ); 40 fail_unless( jabber_buddy_by_jid( ic, "WILMER@gaast.net", 0 ) == budw3 ); 41 42 /* Check O_FIRST and see if it's indeed the first item from the list. */ 43 fail_unless( ( bud = jabber_buddy_by_jid( ic, "wilmer@gaast.net", GET_BUDDY_FIRST ) ) == budw1 ); 44 fail_unless( bud->next == budw2 && bud->next->next == budw3 && bud->next->next->next == NULL ); 38 45 46 /* Change the resource_select setting, now we should get a different resource. */ 39 47 set_setstr( &ic->acc->set, "resource_select", "activity" ); 40 fail_unless( jabber_buddy_by_jid( ic, "wilmer@ gaast.net", 0 ) == budw2 );48 fail_unless( jabber_buddy_by_jid( ic, "wilmer@GAAST.NET", 0 ) == budw2 ); 41 49 50 /* Some testing of bare JID handling (which is horrible). */ 42 51 fail_if( jabber_buddy_by_jid( ic, "nekkid@lamejab.net/Illegal", 0 ) ); 43 fail_if( jabber_buddy_by_jid( ic, " nekkid@lamejab.net/Illegal", GET_BUDDY_CREAT ) );52 fail_if( jabber_buddy_by_jid( ic, "NEKKID@LAMEJAB.NET/Illegal", GET_BUDDY_CREAT ) ); 44 53 fail_unless( jabber_buddy_by_jid( ic, "nekkid@lamejab.net", 0 ) == budn ); 45 fail_unless( jabber_buddy_by_jid( ic, " nekkid@lamejab.net", GET_BUDDY_EXACT ) == budn );46 fail_unless( jabber_buddy_by_jid( ic, "nekkid@ lamejab.net", GET_BUDDY_CREAT ) == budn );54 fail_unless( jabber_buddy_by_jid( ic, "NEKKID@lamejab.net", GET_BUDDY_EXACT ) == budn ); 55 fail_unless( jabber_buddy_by_jid( ic, "nekkid@LAMEJAB.NET", GET_BUDDY_CREAT ) == budn ); 47 56 48 jabber_buddy_remove( ic, "wilmer@gaast.net/telepathy" ); 57 /* More case sensitivity testing, and see if remove works properly. */ 58 fail_if( jabber_buddy_remove( ic, "wilmer@gaast.net/telepathy" ) ); 59 fail_if( jabber_buddy_by_jid( ic, "wilmer@GAAST.NET/telepathy", GET_BUDDY_CREAT ) == budw2 ); 60 fail_unless( jabber_buddy_remove( ic, "wilmer@gaast.net/Telepathy" ) ); 61 fail_unless( jabber_buddy_remove( ic, "wilmer@gaast.net/telepathy" ) ); 49 62 fail_unless( jabber_buddy_by_jid( ic, "wilmer@gaast.net", 0 ) == budw1 ); 50 63 … … 52 65 fail_unless( jabber_buddy_by_jid( ic, "wilmer@gaast.net", 0 ) == budw1 ); 53 66 67 /* Check if remove_bare() indeed gets rid of all. */ 54 68 fail_unless( jabber_buddy_remove_bare( ic, "wilmer@gaast.net" ) ); 55 69 fail_if( jabber_buddy_by_jid( ic, "wilmer@gaast.net", 0 ) );
Note: See TracChangeset
for help on using the changeset viewer.