@@ -6531,7 +6531,7 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, filevalues=[], ext
65316531 ftype = 0
65326532 if(hasattr(os.path, "isjunction") and os.path.isjunction(fname)):
65336533 ftype = 13
6534- elif(fstatinfo.st_blocks * 512 < fstatinfo.st_size):
6534+ elif(hasattr(fstatinfo, "st_blocks") and fstatinfo.st_blocks * 512 < fstatinfo.st_size):
65356535 ftype = 12
65366536 elif(stat.S_ISREG(fpremode)):
65376537 ftype = 0
@@ -6757,14 +6757,6 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, filevalues=[], ext
67576757 fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev, fdev_minor, fdev_major, "+"+str(len(formatspecs['format_delimiter']))]
67586758 AppendFileHeaderWithContent(
67596759 fp, tmpoutlist, extradata, jsondata, fcontents.read(), [checksumtype[1], checksumtype[2], checksumtype[3]], formatspecs)
6760- try:
6761- fp.seek(0, 0)
6762- except io.UnsupportedOperation:
6763- pass
6764- except AttributeError:
6765- pass
6766- except OSError:
6767- pass
67686760 return fp
67696761
67706762def AppendFilesWithContentFromTarFile(infile, fp, extradata=[], jsondata={}, compression="auto", compresswholefile=True, compressionlevel=None, compressionuselist=compressionlistalt, checksumtype=["crc32", "crc32", "crc32", "crc32"], formatspecs=__file_format_dict__, verbose=False):
@@ -6981,14 +6973,6 @@ def AppendFilesWithContentFromTarFile(infile, fp, extradata=[], jsondata={}, com
69816973 AppendFileHeaderWithContent(
69826974 fp, tmpoutlist, extradata, jsondata, fcontents.read(), [checksumtype[1], checksumtype[2], checksumtype[3]], formatspecs)
69836975 fcontents.close()
6984- try:
6985- fp.seek(0, 0)
6986- except io.UnsupportedOperation:
6987- pass
6988- except AttributeError:
6989- pass
6990- except OSError:
6991- pass
69926976 return fp
69936977
69946978def AppendFilesWithContentFromZipFile(infile, fp, extradata=[], jsondata={}, compression="auto", compresswholefile=True, compressionlevel=None, compressionuselist=compressionlistalt, checksumtype=["crc32", "crc32", "crc32", "crc32"], formatspecs=__file_format_dict__, verbose=False):
@@ -7199,14 +7183,6 @@ def AppendFilesWithContentFromZipFile(infile, fp, extradata=[], jsondata={}, com
71997183 AppendFileHeaderWithContent(
72007184 fp, tmpoutlist, extradata, jsondata, fcontents.read(), [checksumtype[1], checksumtype[2], checksumtype[3]], formatspecs)
72017185 fcontents.close()
7202- try:
7203- fp.seek(0, 0)
7204- except io.UnsupportedOperation:
7205- pass
7206- except AttributeError:
7207- pass
7208- except OSError:
7209- pass
72107186 return fp
72117187
72127188if(not rarfile_support):
@@ -7443,14 +7419,6 @@ def AppendFilesWithContentFromRarFile(infile, fp, extradata=[], jsondata={}, com
74437419 AppendFileHeaderWithContent(
74447420 fp, tmpoutlist, extradata, jsondata, fcontents.read(), [checksumtype[1], checksumtype[2], checksumtype[3]], formatspecs)
74457421 fcontents.close()
7446- try:
7447- fp.seek(0, 0)
7448- except io.UnsupportedOperation:
7449- pass
7450- except AttributeError:
7451- pass
7452- except OSError:
7453- pass
74547422 return fp
74557423
74567424if(not py7zr_support):
@@ -7621,14 +7589,6 @@ def AppendFilesWithContentFromSevenZip(infile, fp, extradata=[], jsondata={}, co
76217589 AppendFileHeaderWithContent(
76227590 fp, tmpoutlist, extradata, jsondata, fcontents.read(), [checksumtype[1], checksumtype[2], checksumtype[3]], formatspecs)
76237591 fcontents.close()
7624- try:
7625- fp.seek(0, 0)
7626- except io.UnsupportedOperation:
7627- pass
7628- except AttributeError:
7629- pass
7630- except OSError:
7631- pass
76327592 return fp
76337593
76347594def 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):
@@ -7727,6 +7687,8 @@ def AppendFilesWithContentToOutFile(infiles, outfile, dirlistfromtxt=False, fmtt
77277687 if(outfile == "-" or outfile is None):
77287688 verbose = False
77297689 fp = MkTempFile()
7690+ elif(isinstance(outfile, FileLikeAdapter)):
7691+ fp = outfile
77307692 elif(hasattr(outfile, "read") or hasattr(outfile, "write")):
77317693 fp = outfile
77327694 elif(re.findall(__upload_proto_support__, outfile)):
@@ -7772,12 +7734,25 @@ def AppendFilesWithContentToOutFile(infiles, outfile, dirlistfromtxt=False, fmtt
77727734 fp.seek(0, 0)
77737735 upload_file_to_internet_file(fp, outfile)
77747736 if(returnfp):
7775- fp.seek(0, 0)
77767737 return fp
77777738 else:
77787739 fp.close()
77797740 return True
77807741
7742+ 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):
7743+ if not isinstance(infiles, list):
7744+ infiles = [infiles]
7745+ returnout = False
7746+ for infileslist in infiles:
7747+ returnout = AppendFilesWithContentToOutFile(infileslist, outfile, dirlistfromtxt, fmttype, compression, compresswholefile, compressionlevel, compressionuselist, filevalues, extradata, jsondata, followlink, checksumtype, formatspecs, verbose, True)
7748+ if(not returnout):
7749+ break
7750+ else:
7751+ outfile = returnout
7752+ if(not returnfp and returnout):
7753+ returnout.close()
7754+ return True
7755+ return returnout
77817756
77827757def 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):
77837758 if(IsNestedDict(formatspecs) and fmttype=="auto" and
@@ -9731,7 +9706,14 @@ def CompressOpenFileAlt(fp, compression="auto", compressionlevel=None,
97319706 if not hasattr(fp, "read"):
97329707 return False
97339708
9734- fp.seek(0, 0)
9709+ try:
9710+ fp.seek(0, 0)
9711+ except io.UnsupportedOperation:
9712+ pass
9713+ except AttributeError:
9714+ pass
9715+ except OSError:
9716+ pass
97359717
97369718 if (not compression or compression == formatspecs['format_magic']
97379719 or (compression not in compressionuselist and compression is None)):
@@ -9787,7 +9769,14 @@ def _lvl(x):
97879769 except FileNotFoundError:
97889770 return False
97899771
9790- bytesfp.seek(0, 0)
9772+ try:
9773+ bytesfp.seek(0, 0)
9774+ except io.UnsupportedOperation:
9775+ pass
9776+ except AttributeError:
9777+ pass
9778+ except OSError:
9779+ pass
97919780 out = FileLikeAdapter(bytesfp, mode="rb") # read interface for the caller
97929781 try:
97939782 out.write_through = True
@@ -9806,12 +9795,12 @@ def CompressOpenFile(outfile, compressionenable=True, compressionlevel=None,
98069795 return False
98079796
98089797 # If caller already gave us a FileLikeAdapter => honor it and return it.
9809- if isinstance(fp , FileLikeAdapter):
9798+ if isinstance(outfile , FileLikeAdapter):
98109799 try:
9811- fp .write_through = True
9800+ outfile .write_through = True
98129801 except Exception:
98139802 pass
9814- return fp
9803+ return outfile
98159804
98169805 fbasename, fextname = os.path.splitext(outfile)
98179806 compressionlevel = 9 if compressionlevel is None else int(compressionlevel)
@@ -9954,6 +9943,8 @@ def CheckSumSupportAlt(checkfor, guaranteed=True):
99549943def PackFoxFile(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):
99559944 return AppendFilesWithContentToOutFile(infiles, outfile, dirlistfromtxt, fmttype, compression, compresswholefile, compressionlevel, compressionuselist, [], extradata, jsondata, followlink, checksumtype, formatspecs, verbose, returnfp)
99569945
9946+ def PackStackedFoxFile(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):
9947+ return AppendFilesWithContentToStackedOutFile(infiles, outfile, dirlistfromtxt, fmttype, compression, compresswholefile, compressionlevel, compressionuselist, [], extradata, jsondata, followlink, checksumtype, formatspecs, verbose, returnfp)
99579948
99589949def PackFoxFileFromDirList(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):
99599950 return PackFoxFile(infiles, outfile, dirlistfromtxt, fmttype, compression, compresswholefile, compressionlevel, compressionuselist, followlink, checksumtype, extradata, formatspecs, verbose, returnfp)
0 commit comments