From c9ca6ada03f27bfe8c86f61f418afb86971f9dff Mon Sep 17 00:00:00 2001
From: svncommit <devs@roundcube.net>
Date: Fri, 24 Oct 2008 20:01:45 -0400
Subject: [PATCH] added obscure ASCII encoding aliases, added more error checking to RFC2822 date parsing

---
 program/lib/Mail/mime.php         |    1 -
 index.php                         |    2 --
 program/include/main.inc          |   25 ++++++++++++++-----------
 program/include/rcube_imap.php    |   14 ++++++++------
 program/steps/mail/show.inc       |    4 ++--
 program/include/rcube_message.php |    2 +-
 6 files changed, 25 insertions(+), 23 deletions(-)

diff --git a/index.php b/index.php
index adab411..a080ef5 100644
--- a/index.php
+++ b/index.php
@@ -49,7 +49,6 @@
   }
 }
 
-
 // check if config files had errors
 if ($err_str = $RCMAIL->config->get_error()) {
   raise_error(array(
@@ -65,7 +64,6 @@
     'type' => 'db',
     'message' => $err_str), FALSE, TRUE);
 }
-
 
 // error steps
 if ($RCMAIL->action=='error' && !empty($_GET['_code'])) {
diff --git a/program/include/main.inc b/program/include/main.inc
index 75ad2b3..8eb2c81 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -188,12 +188,14 @@
     return $str;
     
   $aliases = array(
-    'US-ASCII'       => 'ISO-8859-1',
-    'UNKNOWN-8BIT'   => 'ISO-8859-15',
-    'X-UNKNOWN'      => 'ISO-8859-15',
-    'X-USER-DEFINED' => 'ISO-8859-15',
-    'ISO-8859-8-I'   => 'ISO-8859-8',
-    'KS_C_5601-1987' => 'EUC-KR',
+    'US-ASCII'         => 'ISO-8859-1',
+    'ANSI_X3.110-1983' => 'ISO-8859-1',
+    'ANSI_X3.4-1968'   => 'ISO-8859-1',
+    'UNKNOWN-8BIT'     => 'ISO-8859-15',
+    'X-UNKNOWN'        => 'ISO-8859-15',
+    'X-USER-DEFINED'   => 'ISO-8859-15',
+    'ISO-8859-8-I'     => 'ISO-8859-8',
+    'KS_C_5601-1987'   => 'EUC-KR',
   );
 
   // convert charset using iconv module  
@@ -684,10 +686,10 @@
     $ts = $date;
   else if (!empty($date))
     {
-    while (($ts = @strtotime($date))===false)
+    // if date parsing fails, we have a date in non-rfc format.
+    // remove token from the end and try again
+    while ((($ts = @strtotime($date))===false) || ($ts < 0))
       {
-        // if we have a date in non-rfc format
-        // remove token from the end and try again
         $d = explode(' ', $date);
         array_pop($d);
         if (!$d) break;
@@ -825,7 +827,7 @@
   $log_entry = sprintf("[%s]: %s\n",
                  date("d-M-Y H:i:s O", mktime()),
                  $line);
-                 
+
   if ($CONFIG['log_driver'] == 'syslog') {
     if ($name == 'errors')
       $prio = LOG_ERR;
@@ -836,10 +838,11 @@
     // log_driver == 'file' is assumed here
     if (empty($CONFIG['log_dir']))
       $CONFIG['log_dir'] = INSTALL_PATH.'logs';
-      
+
     // try to open specific log file for writing
     if ($fp = @fopen($CONFIG['log_dir'].'/'.$name, 'a')) {
       fwrite($fp, $log_entry);
+      fflush($fp);
       fclose($fp);
     }
   }
diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index 4a71c97..e18c14c 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -1025,14 +1025,16 @@
     $headers = &$this->get_cached_message($cache_key, $uid, true);
 
     // return cached message structure
-    if (is_object($headers) && is_object($headers->structure))
+    if (is_object($headers) && is_object($headers->structure)) {
       return $headers->structure;
-    
-    // resolve message sequence number
-    if (!($msg_id = $this->_uid2id($uid)))
-      return FALSE;
+    }
 
-    $structure_str = iil_C_FetchStructureString($this->conn, $this->mailbox, $msg_id); 
+    // resolve message sequence number
+    if (!($msg_id = $this->_uid2id($uid))) {
+      return FALSE;
+    }
+
+    $structure_str = iil_C_FetchStructureString($this->conn, $this->mailbox, $msg_id);
     $structure = iml_GetRawStructureArray($structure_str);
     $struct = false;
 
diff --git a/program/include/rcube_message.php b/program/include/rcube_message.php
index 10b9e8e..d59c944 100644
--- a/program/include/rcube_message.php
+++ b/program/include/rcube_message.php
@@ -63,7 +63,7 @@
       'prefer_html' => $this->app->config->get('prefer_html'),
       'get_url' => rcmail_url('get', array('_mbox' => $this->imap->get_mailbox_name(), '_uid' => $uid))
     );
-    
+
     if ($this->structure = $this->imap->get_structure($uid)) {
       $this->get_mime_numbers($this->structure);
       $this->parse_structure($this->structure);
diff --git a/program/lib/Mail/mime.php b/program/lib/Mail/mime.php
index 688c326..975ca48 100644
--- a/program/lib/Mail/mime.php
+++ b/program/lib/Mail/mime.php
@@ -1068,7 +1068,6 @@
                     //Concat the double quotes and encoded string together
                     $hdr_value = $quotePrefix . $hdr_value . $quoteSuffix;
                     
-
                     $hdr_value_out = $hdr_value;
                     $realMax = $maxLength1stLine + strlen($prefix . $suffix);
                     if (strlen($hdr_value_out) >= $realMax) {
diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc
index 4f52538..4f0a3b0 100644
--- a/program/steps/mail/show.inc
+++ b/program/steps/mail/show.inc
@@ -24,7 +24,7 @@
 // similar code as in program/steps/mail/get.inc
 if ($_GET['_uid']) {
   $MESSAGE = new rcube_message(get_input_value('_uid', RCUBE_INPUT_GET));
-  
+
   // set message charset as default
   if (!empty($MESSAGE->headers->charset))
     $IMAP->set_charset($MESSAGE->headers->charset);
@@ -217,7 +217,7 @@
 if ($RCMAIL->action=='print' && $OUTPUT->template_exists('printmessage'))
   $OUTPUT->send('printmessage');
 else if ($RCMAIL->action=='preview' && $OUTPUT->template_exists('messagepreview'))
-    $OUTPUT->send('messagepreview');
+  $OUTPUT->send('messagepreview');
 else
   $OUTPUT->send('message');
 ?>

--
Gitblit v1.9.1