{
char hexbuf[3];
size_t src_pos, pos, next;
- bool errors = FALSE;
+ bool have_cr, errors = FALSE;
int ret;
hexbuf[2] = '\0';
if (src[src_pos] == '\n') {
/* drop trailing whitespace */
pos = src_pos;
- if (pos > 0 && src[pos-1] == '\r')
+ if (pos > 0 && src[pos-1] == '\r') {
pos--;
+ have_cr = TRUE;
+ } else {
+ have_cr = FALSE;
+ }
while (pos > 0 && QP_IS_TRAILING_SPACE(src[pos-1]))
pos--;
buffer_append(dest, src + next, pos - next);
next = src_pos+1;
- buffer_append(dest, "\r\n", 2);
+ if (have_cr)
+ buffer_append_c(dest, '\r');
+ buffer_append_c(dest, '\n');
continue;
}
{ "foo = \n=01", "foo \001", 0, 0 },
{ "foo =\t\r\nbar", "foo bar", 0, 0 },
{ "foo =\r\n=01", "foo \001", 0, 0 },
- { "foo \nbar=", "foo\r\nbar", 1, 0 },
+ { "foo \nbar=", "foo\nbar", 1, 0 },
{ "=0A=0D ", "\n\r", 2, 0 },
{ "foo_bar", "foo_bar", 0, 0 },
{ "foo=", "foo", 1, 0 },