]> git.phdru.name Git - mimedecode.git/commitdiff
Add option -R to remove header's parameters
authorOleg Broytman <phd@phdru.name>
Sun, 23 Feb 2014 16:25:16 +0000 (20:25 +0400)
committerOleg Broytman <phd@phdru.name>
Sun, 23 Feb 2014 16:28:55 +0000 (20:28 +0400)
mimedecode.docbook
mimedecode.py
test/expected/msg_29-1.txt [new file with mode: 0644]
test/test_all

index 0605fa84da98e3845df8d51d3619b7eed7dbe7cf..87bd3643cb7b2def88c2681e56554723da608a13 100644 (file)
@@ -56,6 +56,9 @@
       <arg choice="opt">
          <option>-r header</option>
       </arg>
+      <arg choice="opt">
+         <option>-R header:param</option>
+      </arg>
       <arg choice="opt">
          <option>-beit mask</option>
       </arg>
@@ -214,7 +217,7 @@ command-line options.
       <term>-p header:param</term>
       <listitem>
          <para>
-            Add the pair (header, param) to a list of headers' parameters to
+            Add the pair (header, param) to a list of headers parameters to
             decode; initially the list contains header "Content-Type",
             parameter "name" and header "Content-Disposition", parameter
             "filename".
@@ -226,7 +229,7 @@ command-line options.
       <term>-P</term>
       <listitem>
          <para>
-            Clear the list of headers' parameters to decode (make it empty).
+            Clear the list of headers parameters to decode (make it empty).
          </para>
       </listitem>
    </varlistentry>
@@ -241,6 +244,16 @@ command-line options.
       </listitem>
    </varlistentry>
 
+   <varlistentry>
+      <term>-R header:param</term>
+      <listitem>
+         <para>
+            Add the pair (header, param) to a list of headers parameters to
+            remove; initially the list is empty.
+         </para>
+      </listitem>
+   </varlistentry>
+
    <varlistentry>
       <term>-b mask</term>
       <listitem>
index c3e3ecffc13fba23137cdc8c955ab2bffe0f861b..1edd170f606b94872b8f5e15f1f449126898e070 100755 (executable)
@@ -106,6 +106,9 @@ def decode_headers(msg):
     for header in gopts.remove_headers:
         del msg[header]
 
+    for header, param in gopts.remove_header_params:
+        msg.del_param(param, header)
+
 
 def set_header(msg, header, value):
     "Replace header"
@@ -278,7 +281,7 @@ class GlobalOptions:
     decode_headers = ["From", "To", "Cc", "Reply-To", "Mail-Followup-To",
                       "Subject"]
 
-    # A list of headers' parameters to decode
+    # A list of headers parameters to decode
     decode_header_params = [
         ("Content-Type", "name"),
         ("Content-Disposition", "filename"),
@@ -286,6 +289,8 @@ class GlobalOptions:
 
     # A list of headers to remove
     remove_headers = []
+    # A list of headers parameters to remove
+    remove_header_params = []
 
     totext_mask = [] # A list of content-types to decode
     binary_mask = [] # A list to pass through
@@ -302,7 +307,8 @@ def get_opt():
     from getopt import getopt, GetoptError
 
     try:
-        options, arguments = getopt(sys.argv[1:], 'hVcCDPH:f:d:p:r:b:e:i:t:o:',
+        options, arguments = getopt(sys.argv[1:],
+            'hVcCDPH:f:d:p:r:R:b:e:i:t:o:',
             ['help', 'version', 'host'])
     except GetoptError:
         usage(1)
@@ -330,6 +336,8 @@ def get_opt():
             gopts.decode_header_params = []
         elif option == '-r':
             gopts.remove_headers.append(value)
+        elif option == '-R':
+            gopts.remove_header_params.append(value.split(':', 1))
         elif option == '-t':
             gopts.totext_mask.append(value)
         elif option == '-b':
diff --git a/test/expected/msg_29-1.txt b/test/expected/msg_29-1.txt
new file mode 100644 (file)
index 0000000..4a8565f
--- /dev/null
@@ -0,0 +1,21 @@
+From test Sat Feb  1 00:00:00 2014
+Return-Path: <bbb@zzz.org>
+Delivered-To: bbb@zzz.org
+Received: by mail.zzz.org (Postfix, from userid 889)
+       id 27CEAD38CC; Fri,  4 May 2001 14:05:44 -0400 (EDT)
+Content-Transfer-Encoding: 7bit
+Message-ID: <15090.61304.110929.45684@aaa.zzz.org>
+From: bbb@ddd.com (John X. Doe)
+To: bbb@zzz.org
+Subject: This is a test message
+Date: Fri, 4 May 2001 14:05:44 -0400
+MIME-Version: 1.0
+Content-Type: text/plain; charset="utf-8"
+X-MIME-Autoconverted: from us-ascii to utf-8 by test id mimedecode.py
+
+
+Hi,
+
+Do you like this message?
+
+-Me
index 19198b1b28831306312134b0927bddc92fc53efb..f08ff8c8ccb159348b731ba6310e70935edcaaf4 100755 (executable)
@@ -42,6 +42,7 @@ done
 test_file msg_15.txt msg_15-1.txt -b text/html
 test_file msg_15.txt msg_15-2.txt -i text/html
 test_file msg_22.txt msg_22-1.txt -r content-id
+test_file msg_29.txt msg_29-1.txt -R Content-Type:title
 
 if [ "$RC" -eq 0 ]; then
    echo "All tests passed!"