]> git.phdru.name Git - mimedecode.git/blobdiff - mimedecode.py
Inline _decode_header_param
[mimedecode.git] / mimedecode.py
index 1e3bf74b3964717de33883c8b160c19db805f664..fdea039d04f0fc6ee9716137d86dc3763f72e0d4 100755 (executable)
@@ -34,12 +34,9 @@ def output_headers(msg):
     output("\n") # End of headers
 
 
-def recode(s, charset):
-    return unicode(s, charset, "replace").encode(g.default_encoding, "replace")
-
 def recode_if_needed(s, charset):
     if charset and charset.lower() <> g.default_encoding:
-        s = recode(s, charset)
+        s = unicode(s, charset, "replace").encode(g.default_encoding, "replace")
     return s
 
 
@@ -77,9 +74,6 @@ def decode_header(msg, header):
             set_header(msg, header, new_value)
 
 
-def _decode_header_param(s):
-    return recode_if_needed(s[2], s[0])
-
 def decode_header_param(msg, header, param):
     "Decode mail header's parameter (if exists) and put it back, if it was encoded"
 
@@ -87,7 +81,7 @@ def decode_header_param(msg, header, param):
         value = msg.get_param(param, header=header)
         if value:
             if isinstance(value, tuple):
-                new_value = _decode_header_param(value)
+                new_value = recode_if_needed(value[2], value[0])
             else:
                 new_value = _decode_header(value)
             if new_value <> value: # do not bother to touch msg if not changed
@@ -341,7 +335,7 @@ def decode_part(msg):
             output("\nMessage body of type %s skipped.\n" % ctype)
             break
         elif content_type in g.error_mask:
-            raise ValueError, "content type %s prohibited" % ctype
+            break
     else:
         # Neither content type nor masks were listed - decode by default
         outstring = totext(msg, outstring)
@@ -354,6 +348,10 @@ def decode_part(msg):
         elif content_type in g.save_message_mask:
             _save_message(msg, outstring, save_headers=True, save_body=True)
 
+    for content_type in masks:
+        if content_type in g.error_mask:
+            raise ValueError, "content type %s prohibited" % ctype
+
 def decode_multipart(msg):
     "Decode multipart"