comparison libpurple/server.c @ 27835:f9fd7ddf6996

propagate from branch 'im.pidgin.pidgin' (head 245104c3da64bf99627578bd68d6cda42ee16b43) to branch 'im.pidgin.pidgin.yaz' (head 315daf3ce50ca525a9cccd85c5ef0b96dec0f162)
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Thu, 08 May 2008 00:27:54 +0000
parents 2f05586afa12
children acef4202e147
comparison
equal deleted inserted replaced
22840:502bac8b2b4c 27835:f9fd7ddf6996
240 { 240 {
241 PurpleAccount *account; 241 PurpleAccount *account;
242 GSList *buddies; 242 GSList *buddies;
243 PurpleBuddy *b; 243 PurpleBuddy *b;
244 PurpleConversation *conv; 244 PurpleConversation *conv;
245 gsize dummy;
246 gchar *alias2 = NULL;
245 247
246 account = purple_connection_get_account(gc); 248 account = purple_connection_get_account(gc);
247 buddies = purple_find_buddies(account, who); 249 buddies = purple_find_buddies(account, who);
248 250
249 while (buddies != NULL) 251 while (buddies != NULL)
250 { 252 {
251 b = buddies->data; 253 b = buddies->data;
252 buddies = g_slist_delete_link(buddies, buddies); 254 buddies = g_slist_delete_link(buddies, buddies);
253 255
256 /* alias may be NULL */
254 if((b->server_alias == NULL && alias == NULL) || 257 if((b->server_alias == NULL && alias == NULL) ||
255 (b->server_alias && alias && !strcmp(b->server_alias, alias))) 258 (b->server_alias && alias && !strcmp(b->server_alias, alias)))
256 { 259 {
257 continue; 260 continue;
258 } 261 }
259 262
260 purple_blist_server_alias_buddy(b, alias); 263 if(alias)
264 alias2 = sanitize_utf(alias, strlen(alias), &dummy);
265
266 purple_blist_server_alias_buddy(b, alias2);
261 267
262 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, b->name, account); 268 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, b->name, account);
263 if(conv != NULL && alias != NULL && strcmp(alias, who)) 269 if(conv != NULL && alias2 != NULL && strcmp(alias2, who))
264 { 270 {
265 char *tmp = g_strdup_printf(_("%s is now known as %s.\n"), 271 char *tmp = g_strdup_printf(_("%s is now known as %s.\n"),
266 who, alias); 272 who, alias2);
267 273
268 purple_conversation_write(conv, NULL, tmp, 274 purple_conversation_write(conv, NULL, tmp,
269 PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LINKIFY, 275 PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LINKIFY,
270 time(NULL)); 276 time(NULL));
271 277
272 g_free(tmp); 278 g_free(tmp);
273 } 279 }
280 g_free(alias2);
281 alias2 = NULL;
274 } 282 }
275 } 283 }
276 284
277 void 285 void
278 purple_serv_got_private_alias(PurpleConnection *gc, const char *who, const char *alias) 286 purple_serv_got_private_alias(PurpleConnection *gc, const char *who, const char *alias)
279 { 287 {
280 PurpleAccount *account = NULL; 288 PurpleAccount *account = NULL;
281 GSList *buddies = NULL; 289 GSList *buddies = NULL;
282 PurpleBuddy *b = NULL; 290 PurpleBuddy *b = NULL;
291 gsize dummy;
292 gchar *alias2 = NULL;
283 293
284 account = purple_connection_get_account(gc); 294 account = purple_connection_get_account(gc);
285 buddies = purple_find_buddies(account, who); 295 buddies = purple_find_buddies(account, who);
286 296
287 while(buddies != NULL) { 297 while(buddies != NULL) {
290 buddies = g_slist_delete_link(buddies, buddies); 300 buddies = g_slist_delete_link(buddies, buddies);
291 301
292 if((!b->alias && !alias) || (b->alias && alias && !strcmp(b->alias, alias))) 302 if((!b->alias && !alias) || (b->alias && alias && !strcmp(b->alias, alias)))
293 continue; 303 continue;
294 304
295 purple_blist_alias_buddy(b, alias); 305 alias2 = sanitize_utf(alias, strlen(alias), &dummy);
296 } 306 purple_blist_alias_buddy(b, alias2);
297 } 307 g_free(alias2);
298 308 alias2 = NULL;
309 }
310 }
299 311
300 PurpleAttentionType *purple_get_attention_type_from_code(PurpleAccount *account, guint type_code) 312 PurpleAttentionType *purple_get_attention_type_from_code(PurpleAccount *account, guint type_code)
301 { 313 {
302 PurplePlugin *prpl; 314 PurplePlugin *prpl;
303 PurpleAttentionType* attn; 315 PurpleAttentionType* attn;