X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=mimedecode.py;h=6d4c7ea8cef6856844935337d0798eff27c61da1;hb=69acf148036c062b05dd115cc45a80e28140f3e9;hp=0e01572b67af7d4da6d55cb18aea41c6cd22c9a5;hpb=132782e4926381f746dd9ea6b03e3feaaf52579a;p=mimedecode.git diff --git a/mimedecode.py b/mimedecode.py index 0e01572..6d4c7ea 100755 --- a/mimedecode.py +++ b/mimedecode.py @@ -94,6 +94,9 @@ def decode_header_param(msg, header, param): msg.set_param(param, new_value, header) +def _get_exceptions(list): + return [x[1:].lower() for x in list[1:] if x[0]=='-'] + def decode_headers(msg): "Decode message headers according to global options" @@ -116,20 +119,27 @@ def decode_headers(msg): for header_list in gopts.decode_headers: header_list = header_list.split(',') if header_list[0] == '*': # Decode all headers except listed - header_list = [h[1:].lower() for h in header_list[1:] if h[0]=='-'] + header_list = _get_exceptions(header_list) for header in msg.keys(): if header.lower() not in header_list: decode_header(msg, header) - else: # Decode listed hiders + else: # Decode listed headers for header in header_list: decode_header(msg, header) for header_list, param_list in gopts.decode_header_params: header_list = header_list.split(',') param_list = param_list.split(',') - for header in header_list: - for param in param_list: - decode_header_param(msg, header, param) + 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) + else: # Decode for listed headers + for header in header_list: + for param in param_list: + decode_header_param(msg, header, param) def set_header(msg, header, value):