Mercurial > pidgin
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; |