From a6d474471dddc2d7a187a66358aafcb86235ca69 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Sat, 21 Jan 2017 11:24:56 +0100 Subject: Restructure git Move tools into separate repo, split TTL file. --- tools/linearizeDisk.py | 49 ------------------------------------------------- 1 file changed, 49 deletions(-) delete mode 100755 tools/linearizeDisk.py (limited to 'tools/linearizeDisk.py') diff --git a/tools/linearizeDisk.py b/tools/linearizeDisk.py deleted file mode 100755 index 55f4b06..0000000 --- a/tools/linearizeDisk.py +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env python3 - -""" -For some reason blocks in the bitsavers images are not in linear order, but -shuffled. Not sure why and if other disks are affected as well, but this script -reorders them. -""" - -import os, logging -from itertools import chain - -def linearBlocks (fd): - fd.seek (0, os.SEEK_END) - size = fd.tell () - logging.debug ('File size is {} bytes'.format (size)) - - blockSize = 512 - blocksPerChunk = 15 - chunkSize = blockSize*blocksPerChunk - chunks = size//chunkSize - skip = 1 - if size%chunkSize != 0: - logging.warning ('File size {} is not multiple of chunk size {}'.format (size, chunkSize)) - - # first even then odd chunks - for j in chain (range (0, chunks, 2), range (1, chunks, 2)): - pos = j*chunkSize - logging.debug ('Seeking to {} for chunk {} and reading {} blocks @ {} bytes'.format (pos, j, blocksPerChunk, blockSize)) - fd.seek (pos, os.SEEK_SET) - for i in range (blocksPerChunk): - yield fd.read (blockSize) - -if __name__ == '__main__': - import argparse, sys - - parser = argparse.ArgumentParser(description='Reorder EUMEL archive disk’s blocks.') - parser.add_argument ('-v', '--verbose', help='Enable debugging messages', action='store_true') - parser.add_argument ('input', help='Input file') - parser.add_argument ('output', help='Out file') - args = parser.parse_args () - if args.verbose: - logging.basicConfig (level=logging.DEBUG) - else: - logging.basicConfig (level=logging.WARNING) - - with open (args.input, 'rb') as infd, open (args.output, 'wb') as outfd: - for b in linearBlocks (infd): - outfd.write (b) - -- cgit v1.2.3