comparison libpurple/protocols/msn/msn.c @ 30993:dc996aa83f49

Combine the encode_spaces function and the stuff for the display name since they're basically the same. Also fixes #13034.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Fri, 03 Dec 2010 04:51:48 +0000
parents 703dd6f433a9
children 388ca4797d7b
comparison
equal deleted inserted replaced
30992:703dd6f433a9 30993:dc996aa83f49
248 { 248 {
249 MsnCmdProc *cmdproc; 249 MsnCmdProc *cmdproc;
250 MsnSession *session; 250 MsnSession *session;
251 MsnTransaction *trans; 251 MsnTransaction *trans;
252 PurpleAccount *account; 252 PurpleAccount *account;
253 char real_alias[BUDDY_ALIAS_MAXLEN+1]; 253 char real_alias[BUDDY_ALIAS_MAXLEN + 1];
254 struct public_alias_closure *closure; 254 struct public_alias_closure *closure;
255 255
256 session = purple_connection_get_protocol_data(pc); 256 session = purple_connection_get_protocol_data(pc);
257 cmdproc = session->notification->cmdproc; 257 cmdproc = session->notification->cmdproc;
258 account = purple_connection_get_account(pc); 258 account = purple_connection_get_account(pc);
259 259
260 if (alias && *alias) { 260 if (alias && *alias) {
261 int i = 0; 261 if (!msn_encode_spaces(alias, real_alias, BUDDY_ALIAS_MAXLEN + 1)) {
262 while (isspace(*alias)) 262 if (failure_cb) {
263 alias++; 263 struct public_alias_closure *closure =
264 264 g_new0(struct public_alias_closure, 1);
265 for (; *alias && i < BUDDY_ALIAS_MAXLEN; alias++) { 265 closure->account = account;
266 if (*alias == '%') { 266 closure->failure_cb = failure_cb;
267 if (i > BUDDY_ALIAS_MAXLEN - 4) 267 purple_timeout_add(0, set_public_alias_length_error, closure);
268 break;
269 real_alias[i++] = '%';
270 real_alias[i++] = '2';
271 real_alias[i++] = '5';
272 } else if (*alias == ' ') {
273 if (i > BUDDY_ALIAS_MAXLEN - 4)
274 break;
275 real_alias[i++] = '%';
276 real_alias[i++] = '2';
277 real_alias[i++] = '0';
278 } else { 268 } else {
279 real_alias[i++] = *alias; 269 purple_notify_error(pc, NULL,
270 _("Your new MSN friendly name is too long."),
271 NULL);
280 } 272 }
273 return;
281 } 274 }
282 275
283 while (i && isspace(real_alias[i - 1])) 276 if (real_alias[0] == '\0')
284 i--; 277 strcpy(real_alias, purple_account_get_username(account));
285
286 real_alias[i] = '\0';
287 } else 278 } else
288 real_alias[0] = '\0';
289
290 if (*alias) {
291 if (failure_cb) {
292 struct public_alias_closure *closure =
293 g_new0(struct public_alias_closure, 1);
294 closure->account = account;
295 closure->failure_cb = failure_cb;
296 purple_timeout_add(0, set_public_alias_length_error, closure);
297 } else {
298 purple_notify_error(pc, NULL,
299 _("Your new MSN friendly name is too long."),
300 NULL);
301 }
302 return;
303 }
304
305 if (real_alias[0] == '\0') {
306 strcpy(real_alias, purple_account_get_username(account)); 279 strcpy(real_alias, purple_account_get_username(account));
307 }
308 280
309 closure = g_new0(struct public_alias_closure, 1); 281 closure = g_new0(struct public_alias_closure, 1);
310 closure->account = account; 282 closure->account = account;
311 closure->success_cb = success_cb; 283 closure->success_cb = success_cb;
312 closure->failure_cb = failure_cb; 284 closure->failure_cb = failure_cb;