@@ -6546,7 +6546,7 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, filevalues=[], ext
65466546 ftype = 0
65476547 if(hasattr(os.path, "isjunction") and os.path.isjunction(fname)):
65486548 ftype = 13
6549- elif(fstatinfo.st_blocks * 512 < fstatinfo.st_size):
6549+ elif(hasattr(fstatinfo, "st_blocks") and fstatinfo.st_blocks * 512 < fstatinfo.st_size):
65506550 ftype = 12
65516551 elif(stat.S_ISREG(fpremode)):
65526552 ftype = 0
@@ -6772,14 +6772,6 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, filevalues=[], ext
67726772 fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev, fdev_minor, fdev_major, "+"+str(len(formatspecs['format_delimiter']))]
67736773 AppendFileHeaderWithContent(
67746774 fp, tmpoutlist, extradata, jsondata, fcontents.read(), [checksumtype[1], checksumtype[2], checksumtype[3]], formatspecs)
6775- try:
6776- fp.seek(0, 0)
6777- except io.UnsupportedOperation:
6778- pass
6779- except AttributeError:
6780- pass
6781- except OSError:
6782- pass
67836775 return fp
67846776
67856777def AppendFilesWithContentFromTarFile(infile, fp, extradata=[], jsondata={}, compression="auto", compresswholefile=True, compressionlevel=None, compressionuselist=compressionlistalt, checksumtype=["crc32", "crc32", "crc32", "crc32"], formatspecs=__file_format_dict__, verbose=False):
@@ -6996,14 +6988,6 @@ def AppendFilesWithContentFromTarFile(infile, fp, extradata=[], jsondata={}, com
69966988 AppendFileHeaderWithContent(
69976989 fp, tmpoutlist, extradata, jsondata, fcontents.read(), [checksumtype[1], checksumtype[2], checksumtype[3]], formatspecs)
69986990 fcontents.close()
6999- try:
7000- fp.seek(0, 0)
7001- except io.UnsupportedOperation:
7002- pass
7003- except AttributeError:
7004- pass
7005- except OSError:
7006- pass
70076991 return fp
70086992
70096993def AppendFilesWithContentFromZipFile(infile, fp, extradata=[], jsondata={}, compression="auto", compresswholefile=True, compressionlevel=None, compressionuselist=compressionlistalt, checksumtype=["crc32", "crc32", "crc32", "crc32"], formatspecs=__file_format_dict__, verbose=False):
@@ -7214,14 +7198,6 @@ def AppendFilesWithContentFromZipFile(infile, fp, extradata=[], jsondata={}, com
72147198 AppendFileHeaderWithContent(
72157199 fp, tmpoutlist, extradata, jsondata, fcontents.read(), [checksumtype[1], checksumtype[2], checksumtype[3]], formatspecs)
72167200 fcontents.close()
7217- try:
7218- fp.seek(0, 0)
7219- except io.UnsupportedOperation:
7220- pass
7221- except AttributeError:
7222- pass
7223- except OSError:
7224- pass
72257201 return fp
72267202
72277203if(not rarfile_support):
@@ -7458,14 +7434,6 @@ def AppendFilesWithContentFromRarFile(infile, fp, extradata=[], jsondata={}, com
74587434 AppendFileHeaderWithContent(
74597435 fp, tmpoutlist, extradata, jsondata, fcontents.read(), [checksumtype[1], checksumtype[2], checksumtype[3]], formatspecs)
74607436 fcontents.close()
7461- try:
7462- fp.seek(0, 0)
7463- except io.UnsupportedOperation:
7464- pass
7465- except AttributeError:
7466- pass
7467- except OSError:
7468- pass
74697437 return fp
74707438
74717439if(not py7zr_support):
@@ -7636,14 +7604,6 @@ def AppendFilesWithContentFromSevenZip(infile, fp, extradata=[], jsondata={}, co
76367604 AppendFileHeaderWithContent(
76377605 fp, tmpoutlist, extradata, jsondata, fcontents.read(), [checksumtype[1], checksumtype[2], checksumtype[3]], formatspecs)
76387606 fcontents.close()
7639- try:
7640- fp.seek(0, 0)
7641- except io.UnsupportedOperation:
7642- pass
7643- except AttributeError:
7644- pass
7645- except OSError:
7646- pass
76477607 return fp
76487608
76497609def 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):
@@ -7742,6 +7702,8 @@ def AppendFilesWithContentToOutFile(infiles, outfile, dirlistfromtxt=False, fmtt
77427702 if(outfile == "-" or outfile is None):
77437703 verbose = False
77447704 fp = MkTempFile()
7705+ elif(isinstance(outfile, FileLikeAdapter)):
7706+ fp = outfile
77457707 elif(hasattr(outfile, "read") or hasattr(outfile, "write")):
77467708 fp = outfile
77477709 elif(re.findall(__upload_proto_support__, outfile)):
@@ -7787,12 +7749,25 @@ def AppendFilesWithContentToOutFile(infiles, outfile, dirlistfromtxt=False, fmtt
77877749 fp.seek(0, 0)
77887750 upload_file_to_internet_file(fp, outfile)
77897751 if(returnfp):
7790- fp.seek(0, 0)
77917752 return fp
77927753 else:
77937754 fp.close()
77947755 return True
77957756
7757+ 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):
7758+ if not isinstance(infiles, list):
7759+ infiles = [infiles]
7760+ returnout = False
7761+ for infileslist in infiles:
7762+ returnout = AppendFilesWithContentToOutFile(infileslist, outfile, dirlistfromtxt, fmttype, compression, compresswholefile, compressionlevel, compressionuselist, filevalues, extradata, jsondata, followlink, checksumtype, formatspecs, verbose, True)
7763+ if(not returnout):
7764+ break
7765+ else:
7766+ outfile = returnout
7767+ if(not returnfp and returnout):
7768+ returnout.close()
7769+ return True
7770+ return returnout
77967771
77977772def 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):
77987773 if(IsNestedDict(formatspecs) and fmttype=="auto" and
@@ -9746,7 +9721,14 @@ def CompressOpenFileAlt(fp, compression="auto", compressionlevel=None,
97469721 if not hasattr(fp, "read"):
97479722 return False
97489723
9749- fp.seek(0, 0)
9724+ try:
9725+ fp.seek(0, 0)
9726+ except io.UnsupportedOperation:
9727+ pass
9728+ except AttributeError:
9729+ pass
9730+ except OSError:
9731+ pass
97509732
97519733 if (not compression or compression == formatspecs['format_magic']
97529734 or (compression not in compressionuselist and compression is None)):
@@ -9802,7 +9784,14 @@ def _lvl(x):
98029784 except FileNotFoundError:
98039785 return False
98049786
9805- bytesfp.seek(0, 0)
9787+ try:
9788+ bytesfp.seek(0, 0)
9789+ except io.UnsupportedOperation:
9790+ pass
9791+ except AttributeError:
9792+ pass
9793+ except OSError:
9794+ pass
98069795 out = FileLikeAdapter(bytesfp, mode="rb") # read interface for the caller
98079796 try:
98089797 out.write_through = True
@@ -9821,12 +9810,12 @@ def CompressOpenFile(outfile, compressionenable=True, compressionlevel=None,
98219810 return False
98229811
98239812 # If caller already gave us a FileLikeAdapter => honor it and return it.
9824- if isinstance(fp , FileLikeAdapter):
9813+ if isinstance(outfile , FileLikeAdapter):
98259814 try:
9826- fp .write_through = True
9815+ outfile .write_through = True
98279816 except Exception:
98289817 pass
9829- return fp
9818+ return outfile
98309819
98319820 fbasename, fextname = os.path.splitext(outfile)
98329821 compressionlevel = 9 if compressionlevel is None else int(compressionlevel)
@@ -9969,6 +9958,8 @@ def CheckSumSupportAlt(checkfor, guaranteed=True):
99699958def PackCatFile(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):
99709959 return AppendFilesWithContentToOutFile(infiles, outfile, dirlistfromtxt, fmttype, compression, compresswholefile, compressionlevel, compressionuselist, [], extradata, jsondata, followlink, checksumtype, formatspecs, verbose, returnfp)
99719960
9961+ def PackStackedCatFile(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):
9962+ return AppendFilesWithContentToStackedOutFile(infiles, outfile, dirlistfromtxt, fmttype, compression, compresswholefile, compressionlevel, compressionuselist, [], extradata, jsondata, followlink, checksumtype, formatspecs, verbose, returnfp)
99729963
99739964def PackCatFileFromDirList(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):
99749965 return PackCatFile(infiles, outfile, dirlistfromtxt, fmttype, compression, compresswholefile, compressionlevel, compressionuselist, followlink, checksumtype, extradata, formatspecs, verbose, returnfp)
0 commit comments