Skip to content

Commit 8014a5a

Browse files
author
Kazuki Suzuki Przyborowski
committed
Update pyarchivefile.py
1 parent 13a0e4e commit 8014a5a

1 file changed

Lines changed: 39 additions & 47 deletions

File tree

pyarchivefile.py

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

67786770
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):
@@ -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

70026986
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):
@@ -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

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

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

76427602
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):
@@ -7707,6 +7667,7 @@ def AppendInFileWithContent(infile, fp, dirlistfromtxt=False, filevalues=[], ext
77077667

77087668

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

77907766
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):
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):
99629952
def 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

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

Comments
 (0)