comparison libpurple/server.c @ 27858:a5bb767b8644

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