Use email.header for making a folder header

Instead of implementing our own header folding, use Python's bundled
method. Reduces our own code and is likely to be more robust.

Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
diff --git a/emails/mricon-signed.eml b/emails/mricon-signed.eml
index 1dbab79..5bd8550 100644
--- a/emails/mricon-signed.eml
+++ b/emails/mricon-signed.eml
@@ -8,11 +8,11 @@
 MIME-Version: 1.0

 Content-Type: text/plain; charset="UTF-8"

 Content-Transfer-Encoding: 8bit

-X-Developer-Signature: v=1; a=openpgp-sha256; h=from:subject:date:message-id;

- l=1002; bh=g2Sv1ZR+jIrWukzdXbqb+aeiqyFQOBLDQY6z0BBnGg4=;

- b=owGbwMvMwCG27YjM47CUmTmMp9WSGBK6HqX59M4tN5m8hjEiwZTDJmfF48BvJ05sOPb0+nf7xud3

- F4dkdpSyMIhxMMiKKbKU7YvdFFT40EMuvccUZg4rE8gQBi5OAZiI+zVGhrN5zlGrfzm2Szwu1yrMOn

- dXtCqXv9GD37Mub+KRL8XyKxj+5+1e6bXhatwym+6pUw5x7z4dE5l7yPJE+7GNPzY9a5fm4wUA

+X-Developer-Signature: v=1; a=openpgp-sha256; h=from:subject:date:message-id;
+ l=1002; bh=g2Sv1ZR+jIrWukzdXbqb+aeiqyFQOBLDQY6z0BBnGg4=;
+ b=owGbwMvMwCG27YjM47CUmTmMp9WSGBK6VbV9eueWm0xewxiRYMphk7PiceC3Eyc2HHt6/bt94/O7
+ i0MyO0pZGMQ4GGTFFFnK9sVuCip86CGX3mMKM4eVCWQIAxenAEwkrIqR4dTlkIg79k0XLfVXCUqm1P
+ ewSUm83fVx0uuLe75FX23+MZ2RYc5x74PN077Fe+wszuvedD7M7O6OsOJAI0uvtxFurHFf2QA=

 

 This addresses the following gcc warning with "make W=1":

 

diff --git a/main.py b/main.py
index 2e732e3..8d7e5a0 100755
--- a/main.py
+++ b/main.py
@@ -5,6 +5,7 @@
 import os
 import base64
 import email.utils
+import email.header
 import re
 import subprocess
 import hashlib
@@ -157,28 +158,6 @@
     return b' '.join(splitstr)
 
 
-def folder(longhdr: bytes, limit: int = 78) -> bytes:
-    lines = list()
-    line = b''
-    for chunk in longhdr.split(b' '):
-        if len(line + chunk) > limit:
-            lines.append(line)
-            line = b''
-            if len(chunk) > limit:
-                # the chunk itself is longer than limit, so append it as-is
-                lines.append(b' ' + chunk)
-                continue
-        if not len(lines) and not len(line):
-            # We're at the very start, so no need to prepend with ' '
-            line += chunk
-        else:
-            line += b' ' + chunk
-    if len(line):
-        lines.append(line)
-
-    return b'\r\n'.join(lines)
-
-
 def get_git_toplevel(gitdir: str = None) -> str:
     cmdargs = ['git']
     if gitdir:
@@ -400,7 +379,8 @@
         sys.exit(1)
 
     bdata = sk.sign(digest, encoder=Base64Encoder)
-    dshdr = folder(dshdr + splitter(bdata))
+    hhdr = email.header.make_header([(dshdr + splitter(bdata), 'us-ascii')], maxlinelen=78)
+    dshdr = hhdr.encode().encode()
     headers.append(dshdr)
     signed = b'\r\n'.join(headers) + b'\r\n\r\n' + payload
     logger.info('--- SIGNED MESSAGE STARTS ---')
@@ -430,7 +410,8 @@
         logger.critical(err.decode())
         sys.exit(ecode)
     bdata = base64.b64encode(out)
-    dshdr = folder(dshdr + splitter(bdata))
+    hhdr = email.header.make_header([(dshdr + splitter(bdata), 'us-ascii')], maxlinelen=78)
+    dshdr = hhdr.encode().encode()
     headers.append(dshdr)
     signed = b'\r\n'.join(headers) + b'\r\n\r\n' + payload
     logger.info('--- SIGNED MESSAGE STARTS ---')