o PHP 4.0.4 seemed to have problems with the usort function being defined inline...
[squirrelmail.git] / functions / mime.php
index cab32d51ce4b147c194e4b686ee3934e3f98ad51..7e054d0520a1a1ace7cdfcd2075304051b200ecd 100644 (file)
       $topline = array_shift($data);
       while (! ereg('\* [0-9]+ FETCH ', $topline) && data)
           $topline = array_shift($data);
-      while ($data)
-          $wholemessage .= array_shift($data);
+      $wholemessage = implode('', $data);
 
       if (ereg('\{([^\}]*)\}', $topline, $regs)) {
          return substr($wholemessage, 0, $regs[1]);
       return "Body retrival error, please report this bug!\n\nTop line is \"$topline\"\n";
    }
 
+   function mime_print_body_lines ($imap_stream, $id, $ent_id, $encoding) {
+      // do a bit of error correction.  If we couldn't find the entity id, just guess
+      // that it is the first one.  That is usually the case anyway.
+      if (!$ent_id) $ent_id = 1;
+
+      fputs ($imap_stream, "a001 FETCH $id BODY[$ent_id]\r\n");
+         $cnt = 0;
+         $continue = true;
+               $read = fgets ($imap_stream,4096);
+               while (!ereg("^a001 (OK|BAD|NO)(.*)$", $read, $regs)) {
+                       if (trim($read) == ")==") {
+                               $read1 = $read;
+                               $read = fgets ($imap_stream,4096);
+                               if (ereg("^a001 (OK|BAD|NO)(.*)$", $read, $regs)) {
+                                       return;
+                               } else {
+                                       echo decodeBody($read1, $encoding);
+                                       echo decodeBody($read, $encoding);
+                               }
+                       } else if ($cnt) {
+                               echo decodeBody($read, $encoding);
+                       }
+                       $read = fgets ($imap_stream,4096);
+                       $cnt++;
+               }
+   }
+
    /* -[ END MIME DECODING ]----------------------------------------------------------- */
 
 
             $replace = ereg_replace("_", " ", $res[3]);
            // Convert lowercase Quoted Printable to uppercase for
            // quoted_printable_decode to understand it.
-           while (ereg("(=([0-9][a-f])|([a-f][0-9])|([a-f][0-9]))", $replace, $res)) {
+           while (ereg("(=([0-9][abcdef])|([abcdef][0-9])|([abcdef][abcdef]))", $replace, $res)) {
               $replace = str_replace($res[1], strtoupper($res[1]), $replace);
            }
             $replace = quoted_printable_decode($replace);
          $string = str_replace("_", "=5F", $string);
          $string = str_replace(" ", "_", $string);
 
-
-         while (ereg("([\200-\377])", $string, $regs)) {
-            $replace = $regs[1];
-            $insert = "=" . strtoupper(bin2hex($replace));
+        for ( $ch = 127 ; $ch <= 255 ; $ch++ ) {
+           $replace = chr($ch);
+           $insert = sprintf("=%02X", $ch);
             $string = str_replace($replace, $insert, $string);
+           $ch++;
          }
 
          $newstring = "=?$default_charset?Q?".$string."?=";