From 253cc5890dec068d2ca3fb0ea2c36c1d945e8fa5 Mon Sep 17 00:00:00 2001
From: svncommit <devs@roundcube.net>
Date: Fri, 03 Oct 2008 02:25:53 -0400
Subject: [PATCH] Fix typo.

---
 program/include/rcube_imap.php |   18 +++++++++++-------
 1 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index cafe1b0..fa4cae5 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -1017,7 +1017,7 @@
    * an object structure similar to the one generated by PEAR::Mail_mimeDecode
    *
    * @param int Message UID to fetch
-   * @return object stdClass Message part tree or False on failure
+   * @return object rcube_message_part Message part tree or False on failure
    */
   function &get_structure($uid)
     {
@@ -1057,7 +1057,7 @@
       if ($this->caching_enabled)
         $this->add_message_cache($cache_key, $msg_id, $headers, $struct);
       }
-      
+
     return $struct;
     }
 
@@ -1182,8 +1182,6 @@
     {
     if (!empty($part->d_parameters['filename']))
       $filename_mime = $part->d_parameters['filename'];
-    else if (!empty($part->ctype_parameters['name']))
-      $filename_mime = $part->ctype_parameters['name'];
     else if (!empty($part->d_parameters['filename*']))
       $filename_encoded = $part->d_parameters['filename*'];
     else if (!empty($part->ctype_parameters['name*']))
@@ -1258,6 +1256,9 @@
         }
       }
     }
+    // read 'name' after rfc2231 parameters as it may contains truncated filename (from Thunderbird)
+    else if (!empty($part->ctype_parameters['name']))
+      $filename_mime = $part->ctype_parameters['name'];
     // Content-Disposition
     else if (!empty($part->headers['content-description']))
       $filename_mime = $part->headers['content-description'];
@@ -1271,8 +1272,11 @@
       } 
     else if (!empty($filename_encoded)) {
       // decode filename according to RFC 2231, Section 4
-      list($filename_charset,, $filename_urlencoded) = split('\'', $filename_encoded);
-      $part->filename = rcube_charset_convert(urldecode($filename_urlencoded), $filename_charset);
+      if (preg_match("/^([^']*)'[^']*'(.*)$/", $filename_encoded, $fmatches)) {
+        $filename_charset = $fmatches[1];
+        $filename_encoded = $fmatches[2];
+        }
+      $part->filename = rcube_charset_convert(urldecode($filename_encoded), $filename_charset);
       }
     }
      
@@ -1490,7 +1494,7 @@
     $mailbox = $this->_mod_mailbox($mbox_name);
 
     // make sure mailbox exists
-    if (in_array($mailbox, $this->_list_mailboxes()))
+    if (($mailbox == 'INBOX') || in_array($mailbox, $this->_list_mailboxes()))
       $saved = iil_C_Append($this->conn, $mailbox, $message);
 
     if ($saved)

--
Gitblit v1.9.1