From 36ee0cb986fe9651979739ef18024e28b6f7506f Mon Sep 17 00:00:00 2001 From: Kazuki Suzuki Przyborowski Date: Fri, 31 Jan 2025 13:45:06 -0600 Subject: [PATCH] Update pyarchivefile.py --- pyarchivefile.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pyarchivefile.py b/pyarchivefile.py index ce58573..27ba25e 100755 --- a/pyarchivefile.py +++ b/pyarchivefile.py @@ -3152,9 +3152,11 @@ def AppendFileHeader(fp, numfiles, fencoding, extradata=[], checksumtype="crc32" fileheaderver = str(int(formver.replace(".", ""))) fileheader = AppendNullByte( formatspecs['format_magic'] + fileheaderver, formatspecs['format_delimiter']) - extrafields = format(len(extradata), 'x').lower() - if isinstance(extradata, dict) or IsNestedDictAlt(extradata): + if (isinstance(extradata, dict) or IsNestedDictAlt(extradata)) and len(extradata) > 0: extradata = [base64.b64encode(json.dumps(extradata, separators=(',', ':')).encode("UTF-8")).decode("UTF-8")] + elif (isinstance(extradata, dict) or IsNestedDictAlt(extradata)) and len(extradata) == 0: + extradata = [] + extrafields = format(len(extradata), 'x').lower() extrasizestr = AppendNullByte(extrafields, formatspecs['format_delimiter']) if(len(extradata) > 0): extrasizestr = extrasizestr + \ @@ -3307,8 +3309,10 @@ def MakeEmptyArchiveFile(outfile, compression="auto", compresswholefile=True, co def AppendFileHeaderWithContent(fp, filevalues=[], extradata=[], filecontent="", checksumtype=["crc32", "crc32"], formatspecs=__file_format_dict__): if(not hasattr(fp, "write")): return False - if isinstance(extradata, dict) or IsNestedDictAlt(extradata): + if (isinstance(extradata, dict) or IsNestedDictAlt(extradata)) and len(extradata) > 0: extradata = [base64.b64encode(json.dumps(extradata, separators=(',', ':')).encode("UTF-8")).decode("UTF-8")] + elif (isinstance(extradata, dict) or IsNestedDictAlt(extradata)) and len(extradata) == 0: + extradata = [] extrafields = format(len(extradata), 'x').lower() extrasizestr = AppendNullByte(extrafields, formatspecs['format_delimiter']) if(len(extradata) > 0):