Changeset 2569 in subversion
- Timestamp:
- May 29, 2009 8:08:58 AM (4 years ago)
- File:
-
- 1 edited
-
trunk/roundcubemail/program/lib/imap.inc (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/roundcubemail/program/lib/imap.inc
r2563 r2569 84 84 - handling connection startup response 85 85 - added UID EXPUNGE support 86 - fixed problem with double quote at the end of folder namein LIST and LSUB86 - fixed problem with double quotes and spaces in folder names in LIST and LSUB 87 87 88 88 ********************************************************/ … … 256 256 } 257 257 258 function iil_MultLine($fp, $line ) {258 function iil_MultLine($fp, $line, $escape=false) { 259 259 $line = chop($line); 260 260 if (preg_match('/\{[0-9]+\}$/', $line)) { … … 267 267 $out .= $line; 268 268 } 269 $line = $a[1][0] . "\"$out\""; 269 270 $line = $a[1][0] . '"' . ($escape ? iil_Escape($out) : $out) . '"'; 270 271 // console('[...] '. $out); 271 272 } … … 727 728 728 729 function iil_ExplodeQuotedString($delimiter, $string) { 729 $quotes = explode('"', $string); 730 while ( list($key, $val) = each($quotes)) { 731 if (($key % 2) == 1) { 732 $quotes[$key] = str_replace($delimiter, "_!@!_", $quotes[$key]); 733 } 734 } 735 $string = implode('"', $quotes); 736 737 $result = explode($delimiter, $string); 738 while ( list($key, $val) = each($result) ) { 739 $result[$key] = str_replace('_!@!_', $delimiter, $result[$key]); 740 } 741 730 $result = array(); 731 $strlen = strlen($string); 732 733 for ($q=$p=$i=0; $i < $strlen; $i++) { 734 if ($string[$i] == "\"" && $string[$i-1] != "\\") { 735 $q = $q ? false : true; 736 } 737 else if (!$q && preg_match("/$delimiter/", $string[$i])) { 738 $result[] = substr($string, $p, $i - $p); 739 $p = $i + 1; 740 } 741 } 742 743 $result[] = substr($string, $p); 742 744 return $result; 743 745 } … … 1530 1532 return false; 1531 1533 } 1532 1534 1533 1535 if ($add) 1534 1536 $add = ' '.strtoupper(trim($add)); … … 2150 2152 do { 2151 2153 $line = iil_ReadLine($fp, 500); 2152 $line = iil_MultLine($fp, $line );2154 $line = iil_MultLine($fp, $line, true); 2153 2155 2154 2156 $a = explode(' ', $line); … … 2158 2160 $a = iil_ExplodeQuotedString(' ', $line); 2159 2161 // last string is folder name 2160 $folder = preg_replace(array('/^"/', '/"$/'), '', $a[count($a)-1]);2162 $folder = preg_replace(array('/^"/', '/"$/'), '', iil_UnEscape($a[count($a)-1])); 2161 2163 2162 2164 if (empty($ignore) || (!empty($ignore) … … 2215 2217 do { 2216 2218 $line = iil_ReadLine($fp, 500); 2217 $line = iil_MultLine($fp, $line );2219 $line = iil_MultLine($fp, $line, true); 2218 2220 $a = explode(' ', $line); 2219 2221 … … 2223 2225 // split one line 2224 2226 $a = iil_ExplodeQuotedString(' ', $line); 2225 2226 2227 // last string is folder name 2227 $folder = preg_replace(array('/^"/', '/"$/'), '', $a[count($a)-1]);2228 $folder = preg_replace(array('/^"/', '/"$/'), '', iil_UnEscape($a[count($a)-1])); 2228 2229 2229 2230 if ((!in_array($folder, $folders)) && (empty($ignore) … … 2623 2624 } 2624 2625 } 2626 console('----'.$result); 2625 2627 return $result; 2626 2628 }
Note: See TracChangeset
for help on using the changeset viewer.
