From e9dc16194b47921ea6c5453e71c5c97b9232ba8c Mon Sep 17 00:00:00 2001 From: midnight Date: Sun, 16 Feb 2025 16:25:19 -0800 Subject: [PATCH] correct the linearize-data script (minor) this clips off unwanted final data in event of reorg and fixes the file open mode to prevent the truncation of files reopened small patch being passed around which I did not write but thought would be helpful to the community at large --- contrib/linearize/linearize-data.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/contrib/linearize/linearize-data.py b/contrib/linearize/linearize-data.py index 73f54cd4885..0d7818e9e4a 100755 --- a/contrib/linearize/linearize-data.py +++ b/contrib/linearize/linearize-data.py @@ -157,6 +157,7 @@ class BlockDataCopier: def writeBlock(self, inhdr, blk_hdr, rawblock): blockSizeOnDisk = len(inhdr) + len(blk_hdr) + len(rawblock) if not self.fileOutput and ((self.outsz + blockSizeOnDisk) > self.maxOutSz): + os.ftruncate(self.outF.fileno(), self.outF.tell()) self.outF.close() if self.setFileTime: os.utime(self.outFname, (int(time.time()), self.highTS)) @@ -170,6 +171,7 @@ class BlockDataCopier: print("New month " + blkDate.strftime("%Y-%m") + " @ " + self.hash_str) self.lastDate = blkDate if self.outF: + os.ftruncate(self.outF.fileno(), self.outF.tell()) self.outF.close() if self.setFileTime: os.utime(self.outFname, (int(time.time()), self.highTS)) @@ -184,7 +186,10 @@ class BlockDataCopier: else: self.outFname = os.path.join(self.settings['output'], "blk%05d.dat" % self.outFn) print("Output file " + self.outFname) - self.outF = open(self.outFname, "wb") + try: + self.outF = open(self.outFname, "xb+") + except FileExistsError: + self.outF = open(self.outFname, "rb+") self.outF.write(inhdr) self.outF.write(blk_hdr)