From 8dd6783b9bf37d0e12b343da6105cd92a5ebef1d Mon Sep 17 00:00:00 2001 From: Daniel Kahn Gillmor Date: Sat, 2 Nov 2019 01:28:21 -0400 Subject: email-print-mime-structure: Pass parent and nth child info during walk No functional change. This is preparatory work to be able to consider the structure of each part and determine whether we should consider trying to decrypt it. Signed-off-by: Daniel Kahn Gillmor --- email-print-mime-structure | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'email-print-mime-structure') diff --git a/email-print-mime-structure b/email-print-mime-structure index 8fc8774..98b35fe 100755 --- a/email-print-mime-structure +++ b/email-print-mime-structure @@ -42,7 +42,7 @@ class MimePrinter(object): def __init__(self, args:Namespace): self.args = args - def print_part(self, z:Message, prefix:str) -> None: + def print_part(self, z:Message, prefix:str, parent:Optional[Message], num:int) -> None: ofname:Optional[str] = z.get_filename() fname:str = '' if ofname is None else f' [{ofname}]' ocharset:Union[Charset, str, None] = z.get_charset() @@ -65,9 +65,9 @@ class MimePrinter(object): print(f'{prefix}{z.get_content_type()}{cset}{disposition}{fname} {nbytes:d} bytes') - def test(self, z:Message, prefix:str='') -> None: + def test(self, z:Message, prefix:str, parent:Optional[Message], num:int) -> None: if (z.is_multipart()): - self.print_part(z, prefix+'┬╴') + self.print_part(z, prefix+'┬╴', parent, num) if prefix.endswith('└'): prefix = prefix.rpartition('└')[0] + ' ' if prefix.endswith('├'): @@ -77,12 +77,12 @@ class MimePrinter(object): raise TypeError(f'parts was {type(parts)}, expected List[Message]') i = 0 while (i < len(parts)-1): - self.test(parts[i], prefix + '├') + self.test(parts[i], prefix + '├', z, i+1) i += 1 - self.test(parts[i], prefix + '└') + self.test(parts[i], prefix + '└', z, i+1) # FIXME: show epilogue? else: - self.print_part(z, prefix+'─╴') + self.print_part(z, prefix+'─╴', parent, num) def main() -> None: parser:ArgumentParser = ArgumentParser(description='Read RFC2822 MIME message from stdin and emit a tree diagram to stdout.', @@ -92,7 +92,7 @@ def main() -> None: if isinstance(msg, Message): printer:MimePrinter = MimePrinter(args) - printer.test(msg, '└') + printer.test(msg, '└', None, 0) else: logging.error('Input was not an e-mail message') -- cgit v1.2.3