From 6831bd52bb47ed5ae07c66bff8aeb097a3653408 Mon Sep 17 00:00:00 2001 From: Elliot Nunn Date: Mon, 8 Oct 2018 08:18:30 +0800 Subject: [PATCH] fix up imports etc --- machfs/__init__.py | 2 +- machfs/btree.py | 7 +++--- machfs/main.py | 35 ++++++++++++++---------------- machfs/main_test.py => test_all.py | 2 +- 4 files changed, 21 insertions(+), 25 deletions(-) rename machfs/main_test.py => test_all.py (98%) diff --git a/machfs/__init__.py b/machfs/__init__.py index 4326eae..15b6a64 100644 --- a/machfs/__init__.py +++ b/machfs/__init__.py @@ -1 +1 @@ -from main import Volume, Folder, File +from .main import * diff --git a/machfs/btree.py b/machfs/btree.py index 73f696b..799dabc 100644 --- a/machfs/btree.py +++ b/machfs/btree.py @@ -1,6 +1,5 @@ import struct - -import bitmanip as _bitmanip +from . import bitmanip class _Node: @@ -160,10 +159,10 @@ def make_btree(records, bthKeyLen): bits_covered += len(mapnode.records[0]) * 8 # Populate the bitmap (1 = used) - headnode.records[2] = _bitmanip.bits(2048, len(nodelist)) + headnode.records[2] = bitmanip.bits(2048, len(nodelist)) for i, mnode in mapnodes: nset = len(nodelist) - 2048 - i*3952 - mnode.records = [_bitmanip.bits(3952, nset)] + mnode.records = [bitmanip.bits(3952, nset)] # Run back and forth to join up one linked list for each type most_recent = {} diff --git a/machfs/main.py b/machfs/main.py index 99a51ee..ae672e8 100644 --- a/machfs/main.py +++ b/machfs/main.py @@ -1,9 +1,6 @@ import struct import collections - -import btree as _btree -import bitmanip as _bitmanip -import directory as _directory +from . import btree, bitmanip, directory def _catalog_rec_sort(b): @@ -67,7 +64,7 @@ class _TempWrapper: self.of = of -class Folder(_directory.AbstractFolder): +class Folder(directory.AbstractFolder): def __init__(self): super().__init__() @@ -96,7 +93,7 @@ class File: return 'File %r/%r data=%db rsrc=%db' % (self.type, self.creator, len(self.data), len(self.rsrc)) -class Volume(_directory.AbstractFolder): +class Volume(directory.AbstractFolder): def __init__(self): super().__init__() @@ -133,10 +130,10 @@ class Volume(_directory.AbstractFolder): block2offset = lambda block: 512*drAlBlSt + drAlBlkSiz*block extent2bytes = lambda firstblk, blkcnt: from_volume[block2offset(firstblk):block2offset(firstblk+blkcnt)] - extrec2bytes = lambda extrec: b''.join(extent2bytes(a, b) for (a, b) in _btree.unpack_extent_record(extrec)) + extrec2bytes = lambda extrec: b''.join(extent2bytes(a, b) for (a, b) in btree.unpack_extent_record(extrec)) extoflow = {} - for rec in _btree.dump_btree(extrec2bytes(drXTExtRec)): + for rec in btree.dump_btree(extrec2bytes(drXTExtRec)): if rec[0] != 7: continue # print(key, val) pass @@ -144,13 +141,13 @@ class Volume(_directory.AbstractFolder): cnids = {} childrenof = collections.defaultdict(dict) - for rec in _btree.dump_btree(extrec2bytes(drCTExtRec)): + for rec in btree.dump_btree(extrec2bytes(drCTExtRec)): # create a directory tree from the catalog file rec_len = rec[0] if rec_len == 0: continue key = rec[2:1+rec_len] - val = rec[_bitmanip.pad_up(1+rec_len, 2):] + val = rec[bitmanip.pad_up(1+rec_len, 2):] ckrParID, namelen = struct.unpack_from('>LB', key) ckrCName = key[5:5+namelen] @@ -248,11 +245,11 @@ class Volume(_directory.AbstractFolder): blkaccum = [] # <<< put the empty extents overflow file in here >>> - extoflowfile = _btree.make_btree([], bthKeyLen=7) + extoflowfile = btree.make_btree([], bthKeyLen=7) # also need to do some cleverness to ensure that this gets picked up... drXTFlSize = len(extoflowfile) drXTExtRec_Start = len(blkaccum) - blkaccum.extend(_bitmanip.chunkify(extoflowfile, drAlBlkSiz)) + blkaccum.extend(bitmanip.chunkify(extoflowfile, drAlBlkSiz)) drXTExtRec_Cnt = len(blkaccum) - drXTExtRec_Start # write all the files in the volume @@ -276,11 +273,11 @@ class Volume(_directory.AbstractFolder): wrap.dfrk = wrap.rfrk = (0, 0) if obj.data: pre = len(blkaccum) - blkaccum.extend(_bitmanip.chunkify(obj.data, drAlBlkSiz)) + blkaccum.extend(bitmanip.chunkify(obj.data, drAlBlkSiz)) wrap.dfrk = (pre, len(blkaccum)-pre) if obj.rsrc: pre = len(blkaccum) - blkaccum.extend(_bitmanip.chunkify(obj.rsrc, drAlBlkSiz)) + blkaccum.extend(bitmanip.chunkify(obj.rsrc, drAlBlkSiz)) wrap.rfrk = (pre, len(blkaccum)-pre) catalog = [] # (key, value) tuples @@ -303,8 +300,8 @@ class Volume(_directory.AbstractFolder): filTyp = 0 filUsrWds = struct.pack('>4s4sHHHxxxxxx', obj.type, obj.creator, obj.flags, obj.x, obj.y) filFlNum = wrap.cnid - filStBlk, filLgLen, filPyLen = wrap.dfrk[0], len(obj.data), _bitmanip.pad_up(len(obj.data), drAlBlkSiz) - filRStBlk, filRLgLen, filRPyLen = wrap.rfrk[0], len(obj.rsrc), _bitmanip.pad_up(len(obj.rsrc), drAlBlkSiz) + filStBlk, filLgLen, filPyLen = wrap.dfrk[0], len(obj.data), bitmanip.pad_up(len(obj.data), drAlBlkSiz) + filRStBlk, filRLgLen, filRPyLen = wrap.rfrk[0], len(obj.rsrc), bitmanip.pad_up(len(obj.rsrc), drAlBlkSiz) filCrDat, filMdDat, filBkDat = obj.crdat, obj.mddat, obj.bkdat filFndrInfo = bytes(16) # todo must fix filClpSize = 0 # todo must fix @@ -348,18 +345,18 @@ class Volume(_directory.AbstractFolder): # now it is time to sort these records! fuck that shit... catalog.sort(key=_catalog_rec_sort) - catalogfile = _btree.make_btree(catalog, bthKeyLen=37) + catalogfile = btree.make_btree(catalog, bthKeyLen=37) # also need to do some cleverness to ensure that this gets picked up... drCTFlSize = len(catalogfile) drCTExtRec_Start = len(blkaccum) - blkaccum.extend(_bitmanip.chunkify(catalogfile, drAlBlkSiz)) + blkaccum.extend(bitmanip.chunkify(catalogfile, drAlBlkSiz)) drCTExtRec_Cnt = len(blkaccum) - drCTExtRec_Start if len(blkaccum) > drNmAlBlks: raise ValueError('Does not fit!') # Create the bitmap of free volume allocation blocks - bitmap = _bitmanip.bits(bitmap_blk_cnt * 512 * 8, len(blkaccum)) + bitmap = bitmanip.bits(bitmap_blk_cnt * 512 * 8, len(blkaccum)) # Create the Volume Information Block drSigWord = b'BD' diff --git a/machfs/main_test.py b/test_all.py similarity index 98% rename from machfs/main_test.py rename to test_all.py index 38b85ce..1b81fb8 100644 --- a/machfs/main_test.py +++ b/test_all.py @@ -1,4 +1,4 @@ -from main import * +from machfs import * import os import time