diff --git a/pycatfile.py b/pycatfile.py index 5a0d289..c4397f5 100755 --- a/pycatfile.py +++ b/pycatfile.py @@ -3200,7 +3200,10 @@ def AppendFileHeader(fp, numfiles, fencoding, extradata=[], checksumtype="crc32" AppendNullByte(catfileheadercshex, formatspecs['format_delimiter']) catheaersize = format(int(len(fnumfilesa) - len(formatspecs['format_delimiter'])), 'x').lower() catheaersizestr = AppendNullByte(catheaersize, formatspecs['format_delimiter']) - fp.write(fnumfilesa.encode('UTF-8')) + try: + fp.write(fnumfilesa.encode('UTF-8')) + except OSError: + return False try: fp.flush() if(hasattr(os, "sync")): @@ -3328,7 +3331,10 @@ def AppendFileHeaderWithContent(fp, filevalues=[], extradata=[], filecontent="", catfileoutstrecd = catfileoutstr.encode('UTF-8') nullstrecd = formatspecs['format_delimiter'].encode('UTF-8') catfileout = catfileoutstrecd + filecontent + nullstrecd - fp.write(catfileout) + try: + fp.write(catfileout) + except OSError: + return False try: fp.flush() if(hasattr(os, "sync")): @@ -3630,8 +3636,11 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, filevalues=[], ext AppendFileHeaderWithContent( fp, catoutlist, extradata, fcontents.read(), [checksumtype[1], checksumtype[2]], formatspecs) if(numfiles > 0): - catfp.write(AppendNullBytes( - ["0", "0"], formatspecs['format_delimiter']).encode("UTF-8")) + try: + catfp.write(AppendNullBytes( + ["0", "0"], formatspecs['format_delimiter']).encode("UTF-8")) + except OSError: + return False fp.seek(0, 0) return fp @@ -3694,8 +3703,11 @@ def AppendListsWithContent(inlist, fp, dirlistfromtxt=False, filevalues=[], extr AppendFileHeaderWithContent( fp, catoutlist, extradata, fcontents.read(), [checksumtype[1], checksumtype[2]], formatspecs) if(numfiles > 0): - fp.write(AppendNullBytes( - ["0", "0"], formatspecs['format_delimiter']).encode("UTF-8")) + try: + fp.write(AppendNullBytes( + ["0", "0"], formatspecs['format_delimiter']).encode("UTF-8")) + except OSError: + return False return fp @@ -4871,8 +4883,11 @@ def PackArchiveFile(infiles, outfile, dirlistfromtxt=False, compression="auto", catfp, catoutlist, extradata, fcontents.read(), [checksumtype[1], checksumtype[2]], formatspecs) fcontents.close() if(numfiles > 0): - catfp.write(AppendNullBytes( - ["0", "0"], formatspecs['format_delimiter']).encode("UTF-8")) + try: + catfp.write(AppendNullBytes( + ["0", "0"], formatspecs['format_delimiter']).encode("UTF-8")) + except OSError: + return False if(outfile == "-" or outfile is None or hasattr(outfile, "read") or hasattr(outfile, "write")): catfp = CompressArchiveFile( catfp, compression, compressionlevel, formatspecs) @@ -5149,8 +5164,11 @@ def PackArchiveFileFromTarFile(infile, outfile, compression="auto", compresswhol catfp, catoutlist, extradata, fcontents.read(), [checksumtype[1], checksumtype[2]], formatspecs) fcontents.close() if(numfiles > 0): - catfp.write(AppendNullBytes( - ["0", "0"], formatspecs['format_delimiter']).encode("UTF-8")) + try: + catfp.write(AppendNullBytes( + ["0", "0"], formatspecs['format_delimiter']).encode("UTF-8")) + except OSError: + return False if(outfile == "-" or outfile is None or hasattr(outfile, "read") or hasattr(outfile, "write")): catfp = CompressArchiveFile( catfp, compression, compressionlevel, formatspecs) @@ -5416,8 +5434,11 @@ def PackArchiveFileFromZipFile(infile, outfile, compression="auto", compresswhol catfp, catoutlist, extradata, fcontents.read(), [checksumtype[1], checksumtype[2]], formatspecs) fcontents.close() if(numfiles > 0): - catfp.write(AppendNullBytes( - ["0", "0"], formatspecs['format_delimiter']).encode("UTF-8")) + try: + catfp.write(AppendNullBytes( + ["0", "0"], formatspecs['format_delimiter']).encode("UTF-8")) + except OSError: + return False if(outfile == "-" or outfile is None or hasattr(outfile, "read") or hasattr(outfile, "write")): catfp = CompressArchiveFile( catfp, compression, compressionlevel, formatspecs) @@ -5713,8 +5734,11 @@ def PackArchiveFileFromRarFile(infile, outfile, compression="auto", compresswhol catfp, catoutlist, extradata, fcontents.read(), [checksumtype[1], checksumtype[2]], formatspecs) fcontents.close() if(numfiles > 0): - catfp.write(AppendNullBytes( - ["0", "0"], formatspecs['format_delimiter']).encode("UTF-8")) + try: + catfp.write(AppendNullBytes( + ["0", "0"], formatspecs['format_delimiter']).encode("UTF-8")) + except OSError: + return False if(outfile == "-" or outfile is None or hasattr(outfile, "read") or hasattr(outfile, "write")): catfp = CompressArchiveFile( catfp, compression, compressionlevel, formatspecs) @@ -5943,8 +5967,11 @@ def PackArchiveFileFromSevenZipFile(infile, outfile, compression="auto", compres catfp, catoutlist, extradata, fcontents.read(), [checksumtype[1], checksumtype[2]], formatspecs) fcontents.close() if(numfiles > 0): - catfp.write(AppendNullBytes( - ["0", "0"], formatspecs['format_delimiter']).encode("UTF-8")) + try: + catfp.write(AppendNullBytes( + ["0", "0"], formatspecs['format_delimiter']).encode("UTF-8")) + except OSError: + return False if(outfile == "-" or outfile is None or hasattr(outfile, "read") or hasattr(outfile, "write")): catfp = CompressArchiveFile( catfp, compression, compressionlevel, formatspecs) @@ -9125,8 +9152,11 @@ def RePackArchiveFile(infile, outfile, compression="auto", compresswholefile=Tru lcfi = lcfi + 1 reallcfi = reallcfi + 1 if(lcfx > 0): - catfp.write(AppendNullBytes( - ["0", "0"], formatspecs['format_delimiter']).encode("UTF-8")) + try: + catfp.write(AppendNullBytes( + ["0", "0"], formatspecs['format_delimiter']).encode("UTF-8")) + except OSError: + return False if(outfile == "-" or outfile is None or hasattr(outfile, "read") or hasattr(outfile, "write")): catfp = CompressArchiveFile( catfp, compression, compressionlevel, formatspecs)