diff -r fb50f648e806 -r 656ccac0ff02 src/protocols/msn/msg.c --- a/src/protocols/msn/msg.c Thu Jul 17 15:24:21 2003 +0000 +++ b/src/protocols/msn/msg.c Thu Jul 17 20:49:40 2003 +0000 @@ -407,6 +407,11 @@ void msn_message_set_body(MsnMessage *msg, const char *body) { + const char *c; + char *buf, *d; + int newline_count = 0; + size_t new_len; + g_return_if_fail(msg != NULL); g_return_if_fail(body != NULL); @@ -415,9 +420,27 @@ g_free(msg->body); } - msg->body = g_strdup(body); + for (c = body; *c != '\0'; c++) { + if (*c == '\n' && (c == body || *(c - 1) != '\r')) + newline_count++; + } + + new_len = strlen(body) + newline_count; + + buf = g_new0(char, new_len + 1); - msg->size += strlen(body); + for (c = body, d = buf; *c != '\0'; c++) { + if (*c == '\n' && (c == body || *(c - 1) != '\r')) { + *d++ = '\r'; + *d++ = '\n'; + } + else + *d++ = *c; + } + + msg->body = buf; + + msg->size += new_len; } const char *