@@ -6539,7 +6539,7 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, filevalues=[], ext
65396539 ftype = 0
65406540 if(hasattr(os.path, "isjunction") and os.path.isjunction(fname)):
65416541 ftype = 13
6542- elif(fstatinfo.st_blocks * 512 < fstatinfo.st_size):
6542+ elif(hasattr(fstatinfo, "st_blocks") and fstatinfo.st_blocks * 512 < fstatinfo.st_size):
65436543 ftype = 12
65446544 elif(stat.S_ISREG(fpremode)):
65456545 ftype = 0
@@ -6765,14 +6765,6 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, filevalues=[], ext
67656765 fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev, fdev_minor, fdev_major, "+"+str(len(formatspecs['format_delimiter']))]
67666766 AppendFileHeaderWithContent(
67676767 fp, tmpoutlist, extradata, jsondata, fcontents.read(), [checksumtype[1], checksumtype[2], checksumtype[3]], formatspecs)
6768- try:
6769- fp.seek(0, 0)
6770- except io.UnsupportedOperation:
6771- pass
6772- except AttributeError:
6773- pass
6774- except OSError:
6775- pass
67766768 return fp
67776769
67786770def AppendFilesWithContentFromTarFile(infile, fp, extradata=[], jsondata={}, compression="auto", compresswholefile=True, compressionlevel=None, compressionuselist=compressionlistalt, checksumtype=["crc32", "crc32", "crc32", "crc32"], formatspecs=__file_format_dict__, verbose=False):
@@ -6989,14 +6981,6 @@ def AppendFilesWithContentFromTarFile(infile, fp, extradata=[], jsondata={}, com
69896981 AppendFileHeaderWithContent(
69906982 fp, tmpoutlist, extradata, jsondata, fcontents.read(), [checksumtype[1], checksumtype[2], checksumtype[3]], formatspecs)
69916983 fcontents.close()
6992- try:
6993- fp.seek(0, 0)
6994- except io.UnsupportedOperation:
6995- pass
6996- except AttributeError:
6997- pass
6998- except OSError:
6999- pass
70006984 return fp
70016985
70026986def AppendFilesWithContentFromZipFile(infile, fp, extradata=[], jsondata={}, compression="auto", compresswholefile=True, compressionlevel=None, compressionuselist=compressionlistalt, checksumtype=["crc32", "crc32", "crc32", "crc32"], formatspecs=__file_format_dict__, verbose=False):
@@ -7207,14 +7191,6 @@ def AppendFilesWithContentFromZipFile(infile, fp, extradata=[], jsondata={}, com
72077191 AppendFileHeaderWithContent(
72087192 fp, tmpoutlist, extradata, jsondata, fcontents.read(), [checksumtype[1], checksumtype[2], checksumtype[3]], formatspecs)
72097193 fcontents.close()
7210- try:
7211- fp.seek(0, 0)
7212- except io.UnsupportedOperation:
7213- pass
7214- except AttributeError:
7215- pass
7216- except OSError:
7217- pass
72187194 return fp
72197195
72207196if(not rarfile_support):
@@ -7451,14 +7427,6 @@ def AppendFilesWithContentFromRarFile(infile, fp, extradata=[], jsondata={}, com
74517427 AppendFileHeaderWithContent(
74527428 fp, tmpoutlist, extradata, jsondata, fcontents.read(), [checksumtype[1], checksumtype[2], checksumtype[3]], formatspecs)
74537429 fcontents.close()
7454- try:
7455- fp.seek(0, 0)
7456- except io.UnsupportedOperation:
7457- pass
7458- except AttributeError:
7459- pass
7460- except OSError:
7461- pass
74627430 return fp
74637431
74647432if(not py7zr_support):
@@ -7629,14 +7597,6 @@ def AppendFilesWithContentFromSevenZip(infile, fp, extradata=[], jsondata={}, co
76297597 AppendFileHeaderWithContent(
76307598 fp, tmpoutlist, extradata, jsondata, fcontents.read(), [checksumtype[1], checksumtype[2], checksumtype[3]], formatspecs)
76317599 fcontents.close()
7632- try:
7633- fp.seek(0, 0)
7634- except io.UnsupportedOperation:
7635- pass
7636- except AttributeError:
7637- pass
7638- except OSError:
7639- pass
76407600 return fp
76417601
76427602def AppendListsWithContent(inlist, fp, dirlistfromtxt=False, filevalues=[], extradata=[], jsondata={}, compression="auto", compresswholefile=True, compressionlevel=None, followlink=False, checksumtype=["crc32", "crc32", "crc32", "crc32"], formatspecs=__file_format_dict__, verbose=False):
@@ -7707,6 +7667,7 @@ def AppendInFileWithContent(infile, fp, dirlistfromtxt=False, filevalues=[], ext
77077667
77087668
77097669def AppendFilesWithContentToOutFile(infiles, outfile, dirlistfromtxt=False, fmttype="auto", compression="auto", compresswholefile=True, compressionlevel=None, compressionuselist=compressionlistalt, filevalues=[], extradata=[], jsondata={}, followlink=False, checksumtype=["crc32", "crc32", "crc32", "crc32"], formatspecs=__file_format_multi_dict__, verbose=False, returnfp=False):
7670+ print(outfile)
77107671 if(IsNestedDict(formatspecs) and fmttype=="auto" and
77117672 (outfile != "-" and outfile is not None and not hasattr(outfile, "read") and not hasattr(outfile, "write"))):
77127673 get_in_ext = os.path.splitext(outfile)
@@ -7735,6 +7696,8 @@ def AppendFilesWithContentToOutFile(infiles, outfile, dirlistfromtxt=False, fmtt
77357696 if(outfile == "-" or outfile is None):
77367697 verbose = False
77377698 fp = MkTempFile()
7699+ elif(isinstance(outfile, FileLikeAdapter)):
7700+ fp = outfile
77387701 elif(hasattr(outfile, "read") or hasattr(outfile, "write")):
77397702 fp = outfile
77407703 elif(re.findall(__upload_proto_support__, outfile)):
@@ -7780,12 +7743,25 @@ def AppendFilesWithContentToOutFile(infiles, outfile, dirlistfromtxt=False, fmtt
77807743 fp.seek(0, 0)
77817744 upload_file_to_internet_file(fp, outfile)
77827745 if(returnfp):
7783- fp.seek(0, 0)
77847746 return fp
77857747 else:
77867748 fp.close()
77877749 return True
77887750
7751+ def AppendFilesWithContentToStackedOutFile(infiles, outfile, dirlistfromtxt=False, fmttype="auto", compression="auto", compresswholefile=True, compressionlevel=None, compressionuselist=compressionlistalt, filevalues=[], extradata=[], jsondata={}, followlink=False, checksumtype=["crc32", "crc32", "crc32", "crc32"], formatspecs=__file_format_multi_dict__, verbose=False, returnfp=False):
7752+ if not isinstance(infiles, list):
7753+ infiles = [infiles]
7754+ returnout = False
7755+ for infileslist in infiles:
7756+ returnout = AppendFilesWithContentToOutFile(infileslist, outfile, dirlistfromtxt, fmttype, compression, compresswholefile, compressionlevel, compressionuselist, filevalues, extradata, jsondata, followlink, checksumtype, formatspecs, verbose, True)
7757+ if(not returnout):
7758+ break
7759+ else:
7760+ outfile = returnout
7761+ if(not returnfp and returnout):
7762+ returnout.close()
7763+ return True
7764+ return returnout
77897765
77907766def AppendListsWithContentToOutFile(inlist, outfile, dirlistfromtxt=False, fmttype="auto", compression="auto", compresswholefile=True, compressionlevel=None, filevalues=[], extradata=[], jsondata={}, followlink=False, checksumtype=["crc32", "crc32", "crc32", "crc32"], formatspecs=__file_format_dict__, verbose=False, returnfp=False):
77917767 if(IsNestedDict(formatspecs) and fmttype=="auto" and
@@ -9739,7 +9715,14 @@ def CompressOpenFileAlt(fp, compression="auto", compressionlevel=None,
97399715 if not hasattr(fp, "read"):
97409716 return False
97419717
9742- fp.seek(0, 0)
9718+ try:
9719+ fp.seek(0, 0)
9720+ except io.UnsupportedOperation:
9721+ pass
9722+ except AttributeError:
9723+ pass
9724+ except OSError:
9725+ pass
97439726
97449727 if (not compression or compression == formatspecs['format_magic']
97459728 or (compression not in compressionuselist and compression is None)):
@@ -9795,7 +9778,14 @@ def _lvl(x):
97959778 except FileNotFoundError:
97969779 return False
97979780
9798- bytesfp.seek(0, 0)
9781+ try:
9782+ bytesfp.seek(0, 0)
9783+ except io.UnsupportedOperation:
9784+ pass
9785+ except AttributeError:
9786+ pass
9787+ except OSError:
9788+ pass
97999789 out = FileLikeAdapter(bytesfp, mode="rb") # read interface for the caller
98009790 try:
98019791 out.write_through = True
@@ -9814,12 +9804,12 @@ def CompressOpenFile(outfile, compressionenable=True, compressionlevel=None,
98149804 return False
98159805
98169806 # If caller already gave us a FileLikeAdapter => honor it and return it.
9817- if isinstance(fp , FileLikeAdapter):
9807+ if isinstance(outfile , FileLikeAdapter):
98189808 try:
9819- fp .write_through = True
9809+ outfile .write_through = True
98209810 except Exception:
98219811 pass
9822- return fp
9812+ return outfile
98239813
98249814 fbasename, fextname = os.path.splitext(outfile)
98259815 compressionlevel = 9 if compressionlevel is None else int(compressionlevel)
@@ -9962,6 +9952,8 @@ def CheckSumSupportAlt(checkfor, guaranteed=True):
99629952def PackArchiveFile(infiles, outfile, dirlistfromtxt=False, fmttype="auto", compression="auto", compresswholefile=True, compressionlevel=None, compressionuselist=compressionlistalt, followlink=False, checksumtype=["crc32", "crc32", "crc32", "crc32"], extradata=[], jsondata={}, formatspecs=__file_format_multi_dict__, verbose=False, returnfp=False):
99639953 return AppendFilesWithContentToOutFile(infiles, outfile, dirlistfromtxt, fmttype, compression, compresswholefile, compressionlevel, compressionuselist, [], extradata, jsondata, followlink, checksumtype, formatspecs, verbose, returnfp)
99649954
9955+ def PackStackedArchiveFile(infiles, outfile, dirlistfromtxt=False, fmttype="auto", compression="auto", compresswholefile=True, compressionlevel=None, compressionuselist=compressionlistalt, followlink=False, checksumtype=["crc32", "crc32", "crc32", "crc32"], extradata=[], jsondata={}, formatspecs=__file_format_multi_dict__, verbose=False, returnfp=False):
9956+ return AppendFilesWithContentToStackedOutFile(infiles, outfile, dirlistfromtxt, fmttype, compression, compresswholefile, compressionlevel, compressionuselist, [], extradata, jsondata, followlink, checksumtype, formatspecs, verbose, returnfp)
99659957
99669958def PackArchiveFileFromDirList(infiles, outfile, dirlistfromtxt=False, fmttype="auto", compression="auto", compresswholefile=True, compressionlevel=None, compressionuselist=compressionlistalt, followlink=False, checksumtype=["crc32", "crc32", "crc32"], extradata=[], formatspecs=__file_format_dict__, verbose=False, returnfp=False):
99679959 return PackArchiveFile(infiles, outfile, dirlistfromtxt, fmttype, compression, compresswholefile, compressionlevel, compressionuselist, followlink, checksumtype, extradata, formatspecs, verbose, returnfp)
0 commit comments