X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fserv_func.c;h=dd1cc4deef70c1247a727dc9710237506682a481;hb=4bde8611a7a9af19f8239459b8aab07a5542b03b;hp=f03ff442a6005bad75639b5352800558432624f8;hpb=082dc69ddc2d7febf4bd004eda95de8e0fe15e63;p=citadel.git diff --git a/webcit/serv_func.c b/webcit/serv_func.c index f03ff442a..dd1cc4dee 100644 --- a/webcit/serv_func.c +++ b/webcit/serv_func.c @@ -376,71 +376,13 @@ void text_to_server(char *ptr) /* * Transmit message text (in memory) to the server, converting to Quoted-Printable encoding as we go. */ -void text_to_server_qp(char *ptr) +void text_to_server_qp(const StrBuf *SendMeEncoded) { - unsigned char ch, buf[256]; - int pos; - int output_len = 0; + StrBuf *ServBuf; - pos = 0; - buf[0] = 0; - output_len = 0; - - while (ptr[pos] != 0) { - ch = (unsigned char)(ptr[pos++]); - - if (ch == 13) { - /* ignore carriage returns */ - } - else if (ch == 10) { - /* hard line break */ - if (output_len > 0) { - if (isspace(buf[output_len-1])) { - sprintf((char *)&buf[output_len-1], "=%02X", buf[output_len-1]); - output_len += 2; - } - } - buf[output_len++] = 0; - serv_puts((char *)buf); - output_len = 0; - } - else if (ch == 9) { - buf[output_len++] = ch; - } - else if ( (ch >= 32) && (ch <= 60) ) { - buf[output_len++] = ch; - } - else if ( (ch >= 62) && (ch <= 126) ) { - buf[output_len++] = ch; - } - else { - sprintf((char *)&buf[output_len], "=%02X", ch); - output_len += 3; - } - - if (output_len > 72) { - /* soft line break */ - if (isspace(buf[output_len-1])) { - sprintf((char *)&buf[output_len-1], "=%02X", buf[output_len-1]); - output_len += 2; - } - buf[output_len++] = '='; - buf[output_len++] = 0; - serv_puts((char *)buf); - output_len = 0; - } - } - - /* end of data - transmit anything that's left */ - if (output_len > 0) { - if (isspace(buf[output_len-1])) { - sprintf((char *)&buf[output_len-1], "=%02X", buf[output_len-1]); - output_len += 2; - } - buf[output_len++] = 0; - serv_puts((char *)buf); - output_len = 0; - } + ServBuf = StrBufRFC2047encodeMessage(SendMeEncoded); + serv_putbuf(ServBuf); + FreeStrBuf(&ServBuf); }