]> git.phdru.name Git - mimedecode.git/blobdiff - mimedecode.py
Make tag-with-version alias
[mimedecode.git] / mimedecode.py
index 797017a77bfda74b2a807ab5994c7166e24ea417..25d3db0efe83e1e5288442a79291acec9ca06eca 100755 (executable)
@@ -32,7 +32,11 @@ def output_headers(msg):
     for key, value in msg.items():
         output(key)
         output(": ")
-        output(value)
+        value = value.split(';', 1)
+        output(value[0])
+        if len(value) == 2:
+            output(";")
+            output(_decode_header(value[1], strip=False))
         output(os.linesep)
     output(os.linesep) # End of headers
 
@@ -49,7 +53,7 @@ def recode_if_needed(s, charset):
     return s
 
 
-def _decode_header(s):
+def _decode_header(s, strip=True):
     """Return a decoded string according to RFC 2047.
     NOTE: This is almost the same as email.Utils.decode.
     """
@@ -62,15 +66,14 @@ def _decode_header(s):
 
     rtn = []
     for atom, charset in L:
-        if charset is None:
-            charset = g.default_encoding
-        rtn.append(recode_if_needed(atom, charset))
-        rtn.append(' ')
-    del rtn[-1] # remove the last space
+        atom = recode_if_needed(atom, charset or g.default_encoding)
+        if strip:
+            atom = atom.strip()
+        rtn.append(atom)
 
     # Now that we've decoded everything, we just need to join all the parts
     # together into the final string.
-    return ''.join(rtn)
+    return ' '.join(rtn)
 
 def decode_header(msg, header):
     "Decode mail header (if exists) and put it back, if it was encoded"