X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=mimedecode.py;h=f3362cf824121c218daf2b8a9833f7281b663705;hb=0a403f7adfdd3a7fcc019b84affa602e8e934169;hp=6d4c7ea8cef6856844935337d0798eff27c61da1;hpb=69acf148036c062b05dd115cc45a80e28140f3e9;p=mimedecode.git diff --git a/mimedecode.py b/mimedecode.py index 6d4c7ea..f3362cf 100755 --- a/mimedecode.py +++ b/mimedecode.py @@ -130,16 +130,33 @@ def decode_headers(msg): for header_list, param_list in gopts.decode_header_params: header_list = header_list.split(',') param_list = param_list.split(',') + decode_all_params = param_list[0] == '*' # Decode all params except listed + if decode_all_params: + param_list = _get_exceptions(param_list) if header_list[0] == '*': # Decode for all headers except listed header_list = _get_exceptions(header_list) for header in msg.keys(): if header.lower() not in header_list: - for param in param_list: - decode_header_param(msg, header, param) + if decode_all_params: + params = msg.get_params(header=header) + if params: + for param, value in params: + if param not in param_list: + decode_header_param(msg, header, param) + else: + for param in param_list: + decode_header_param(msg, header, param) else: # Decode for listed headers for header in header_list: - for param in param_list: - decode_header_param(msg, header, param) + if decode_all_params: + params = msg.get_params(header=header) + if params: + for param, value in params: + if param not in param_list: + decode_header_param(msg, header, param) + else: + for param in param_list: + decode_header_param(msg, header, param) def set_header(msg, header, value):