comparison libpurple/protocols/msn/msn.c @ 27937:1337d2813b2d

propagate from branch 'im.pidgin.pidgin' (head 5ab68ddb0251205f7ef97f4c280e65696cbd5ff2) to branch 'im.pidgin.pidgin.yaz' (head 7a5d48783707dd377fd754961d3b009c3e492827)
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Tue, 07 Apr 2009 14:32:50 +0000
parents e23a74d7c97c d8e6a2d592a4
children fb593c327870
comparison
equal deleted inserted replaced
26588:1a94a964bddf 27937:1337d2813b2d
171 { 171 {
172 MsnCmdProc *cmdproc; 172 MsnCmdProc *cmdproc;
173 MsnSession *session; 173 MsnSession *session;
174 PurpleAccount *account; 174 PurpleAccount *account;
175 const char *alias; 175 const char *alias;
176 gchar *tmp;
177 gsize dummy;
176 178
177 session = gc->proto_data; 179 session = gc->proto_data;
178 cmdproc = session->notification->cmdproc; 180 cmdproc = session->notification->cmdproc;
179 account = purple_connection_get_account(gc); 181 account = purple_connection_get_account(gc);
180 182
181 if(entry && strlen(entry)) 183 if(entry && strlen(entry)) {
182 alias = purple_url_encode(entry); 184 tmp = botch_utf(entry, strlen(entry), &dummy);
185 alias = purple_url_encode(tmp);
186 g_free(tmp);
187 }
183 else 188 else
184 alias = ""; 189 alias = "";
185 190
186 if (strlen(alias) > BUDDY_ALIAS_MAXLEN) 191 if (strlen(alias) > BUDDY_ALIAS_MAXLEN)
187 { 192 {
193 if (*alias == '\0') { 198 if (*alias == '\0') {
194 alias = purple_url_encode(purple_account_get_username(account)); 199 alias = purple_url_encode(purple_account_get_username(account));
195 } 200 }
196 201
197 msn_cmdproc_send(cmdproc, "PRP", "MFN %s", alias); 202 msn_cmdproc_send(cmdproc, "PRP", "MFN %s", alias);
203 // propagate change on server side to local --yaz
204 purple_account_set_alias(account, entry); //oct16 <-- XXX questionable. Sep19.
198 205
199 } 206 }
200 207
201 static void 208 static void
202 msn_set_prp(PurpleConnection *gc, const char *type, const char *entry) 209 msn_set_prp(PurpleConnection *gc, const char *type, const char *entry)
318 purple_connection_get_display_name(gc), FALSE, FALSE, NULL, 325 purple_connection_get_display_name(gc), FALSE, FALSE, NULL,
319 _("OK"), G_CALLBACK(msn_act_id), 326 _("OK"), G_CALLBACK(msn_act_id),
320 _("Cancel"), NULL, 327 _("Cancel"), NULL,
321 purple_connection_get_account(gc), NULL, NULL, 328 purple_connection_get_account(gc), NULL, NULL,
322 gc); 329 gc);
330 }
331
332 static void
333 msn_ipc_init(PurplePlugin *plugin)
334 {
335 purple_plugin_ipc_register(plugin, "msn_set_friendly_name",
336 PURPLE_CALLBACK(msn_act_id),
337 purple_marshal_VOID__POINTER_POINTER,
338 purple_value_new(PURPLE_TYPE_UNKNOWN),2,
339 purple_value_new(PURPLE_TYPE_POINTER),
340 purple_value_new(PURPLE_TYPE_POINTER));
341 }
342
343 static void
344 msn_ipc_end(PurplePlugin *plugin)
345 {
346 purple_plugin_ipc_unregister_all(plugin);
323 } 347 }
324 348
325 static void 349 static void
326 msn_show_set_home_phone(PurplePluginAction *action) 350 msn_show_set_home_phone(PurplePluginAction *action)
327 { 351 {
1087 1111
1088 static void 1112 static void
1089 msn_send_emoticons(MsnSwitchBoard *swboard, GString *body) 1113 msn_send_emoticons(MsnSwitchBoard *swboard, GString *body)
1090 { 1114 {
1091 MsnMessage *msg; 1115 MsnMessage *msg;
1116 gchar *tmp;
1117 gsize len;
1092 1118
1093 g_return_if_fail(body != NULL); 1119 g_return_if_fail(body != NULL);
1094 1120
1095 msg = msn_message_new(MSN_MSG_SLP); 1121 msg = msn_message_new(MSN_MSG_SLP);
1096 msn_message_set_content_type(msg, "text/x-mms-emoticon"); 1122 msn_message_set_content_type(msg, "text/x-mms-emoticon");
1097 msn_message_set_flag(msg, 'N'); 1123 msn_message_set_flag(msg, 'N');
1098 msn_message_set_bin_data(msg, body->str, body->len); 1124
1125 tmp = botch_utf(body->str, -1, &len);
1126 msn_message_set_bin_data(msg, tmp, len);
1127 g_free(tmp);
1099 1128
1100 msn_switchboard_send_msg(swboard, msg, TRUE); 1129 msn_switchboard_send_msg(swboard, msg, TRUE);
1101 msn_message_destroy(msg); 1130 msn_message_destroy(msg);
1102 } 1131 }
1103 1132
2461 { 2490 {
2462 msn_notification_init(); 2491 msn_notification_init();
2463 msn_switchboard_init(); 2492 msn_switchboard_init();
2464 msn_sync_init(); 2493 msn_sync_init();
2465 2494
2495 // yaz
2496 msn_ipc_init(plugin);
2497
2466 return TRUE; 2498 return TRUE;
2467 } 2499 }
2468 2500
2469 static gboolean msn_unload(PurplePlugin *plugin) 2501 static gboolean msn_unload(PurplePlugin *plugin)
2470 { 2502 {
2471 msn_notification_end(); 2503 msn_notification_end();
2472 msn_switchboard_end(); 2504 msn_switchboard_end();
2473 msn_sync_end(); 2505 msn_sync_end();
2506
2507 // yaz
2508 msn_ipc_end(plugin);
2474 2509
2475 return TRUE; 2510 return TRUE;
2476 } 2511 }
2477 2512
2478 static PurpleAccount *find_acct(const char *prpl, const char *acct_id) 2513 static PurpleAccount *find_acct(const char *prpl, const char *acct_id)