Skip to content

Commit 63ed686

Browse files
author
Kazuki Suzuki Przyborowski
committed
Update pycatfile.py
1 parent 618fa4c commit 63ed686

1 file changed

Lines changed: 38 additions & 47 deletions

File tree

pycatfile.py

Lines changed: 38 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -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

67856777
def 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

70096993
def 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

72277203
if(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

74717439
if(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

76497609
def 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

77977772
def 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):
99699958
def 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

99739964
def 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

Comments
 (0)