| 405 } |
405 } |
| 406 |
406 |
| 407 void |
407 void |
| 408 msn_message_set_body(MsnMessage *msg, const char *body) |
408 msn_message_set_body(MsnMessage *msg, const char *body) |
| 409 { |
409 { |
| |
410 const char *c; |
| |
411 char *buf, *d; |
| |
412 int newline_count = 0; |
| |
413 size_t new_len; |
| |
414 |
| 410 g_return_if_fail(msg != NULL); |
415 g_return_if_fail(msg != NULL); |
| 411 g_return_if_fail(body != NULL); |
416 g_return_if_fail(body != NULL); |
| 412 |
417 |
| 413 if (msg->body != NULL) { |
418 if (msg->body != NULL) { |
| 414 msg->size -= strlen(msg->body); |
419 msg->size -= strlen(msg->body); |
| 415 g_free(msg->body); |
420 g_free(msg->body); |
| 416 } |
421 } |
| 417 |
422 |
| 418 msg->body = g_strdup(body); |
423 for (c = body; *c != '\0'; c++) { |
| 419 |
424 if (*c == '\n' && (c == body || *(c - 1) != '\r')) |
| 420 msg->size += strlen(body); |
425 newline_count++; |
| |
426 } |
| |
427 |
| |
428 new_len = strlen(body) + newline_count; |
| |
429 |
| |
430 buf = g_new0(char, new_len + 1); |
| |
431 |
| |
432 for (c = body, d = buf; *c != '\0'; c++) { |
| |
433 if (*c == '\n' && (c == body || *(c - 1) != '\r')) { |
| |
434 *d++ = '\r'; |
| |
435 *d++ = '\n'; |
| |
436 } |
| |
437 else |
| |
438 *d++ = *c; |
| |
439 } |
| |
440 |
| |
441 msg->body = buf; |
| |
442 |
| |
443 msg->size += new_len; |
| 421 } |
444 } |
| 422 |
445 |
| 423 const char * |
446 const char * |
| 424 msn_message_get_body(const MsnMessage *msg) |
447 msn_message_get_body(const MsnMessage *msg) |
| 425 { |
448 { |