pollita Mon Apr 17 19:25:48 2006 UTC Modified files: /php-src/ext/standard filters.c Log: Fix 'soft line break' handling in convert.quoted-printable-decode http://cvs.php.net/viewcvs.cgi/php-src/ext/standard/filters.c?r1=1.54&r2=1.55&diff_format=u Index: php-src/ext/standard/filters.c diff -u php-src/ext/standard/filters.c:1.54 php-src/ext/standard/filters.c:1.55 --- php-src/ext/standard/filters.c:1.54 Mon Mar 20 20:09:20 2006 +++ php-src/ext/standard/filters.c Mon Apr 17 19:25:48 2006 @@ -20,7 +20,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: filters.c,v 1.54 2006/03/20 20:09:20 tony2001 Exp $ */ +/* $Id: filters.c,v 1.55 2006/04/17 19:25:48 pollita Exp $ */ #include "php.h" #include "php_globals.h" @@ -1108,6 +1108,18 @@ scan_stat = 4; ps++, icnt--; break; + } else if (!inst->lbchars && lb_cnt == 0 && *ps == '\r') { + /* auto-detect line endings, looks like network line ending \r\n (could be mac \r) */ + lb_cnt++; + scan_stat = 5; + ps++, icnt--; + break; + } else if (!inst->lbchars && lb_cnt == 0 && *ps == '\n') { + /* auto-detect line endings, looks like unix-lineendings, not to spec, but it is seem in the wild, a lot */ + lb_cnt = lb_ptr = 0; + scan_stat = 0; + ps++, icnt--; + break; } else if (lb_cnt < inst->lbchars_len && *ps == (unsigned char)inst->lbchars[lb_cnt]) { lb_cnt++; @@ -1165,7 +1177,16 @@ } break; case 5: { - if (lb_cnt >= inst->lbchars_len) { + if (!inst->lbchars && lb_cnt == 1 && *ps == '\n') { + /* auto-detect soft line breaks, found network line break */ + lb_cnt = lb_ptr = 0; + scan_stat = 0; + ps++, icnt--; /* consume \n */ + } else if (!inst->lbchars && lb_cnt > 0) { + /* auto-detect soft line breaks, found mac line break */ + lb_cnt = lb_ptr = 0; + scan_stat = 0; + } else if (lb_cnt >= inst->lbchars_len) { /* soft line break */ lb_cnt = lb_ptr = 0; scan_stat = 0; @@ -1486,10 +1507,6 @@ if (options != NULL) { GET_STR_PROP(options, lbchars, lbchars_len, "line-break-chars", 0); - if (lbchars == NULL) { - lbchars = pestrdup("\r\n", 0); - lbchars_len = 2; - } } retval = pemalloc(sizeof(php_conv_qprint_decode), persistent); if (lbchars != NULL) {
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php