From efb0d6ef28c6a36ef20d16a5628b7087b8a353ee Mon Sep 17 00:00:00 2001 From: Rob McMullen Date: Fri, 24 Feb 2017 10:14:38 -0800 Subject: [PATCH] Added count of free sectors based on VTOC allocation table --- atrcopy/dos33.py | 4 ++-- atrcopy/utils.py | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/atrcopy/dos33.py b/atrcopy/dos33.py index 13718d2..9fd909f 100644 --- a/atrcopy/dos33.py +++ b/atrcopy/dos33.py @@ -92,10 +92,10 @@ class Dos33VTOC(VTOC): # so we need to reorder them using numpy's indexing before stuffing # them into the sector map self.sector_map[0:self.max_sectors] = bits[self.vtoc_bit_reorder_index] - log.debug("vtoc before: %s" % self.sector_map[0:35*16]) + log.debug("vtoc before: %s (%d free)" % (self.sector_map[0:35*16], self.num_free_sectors)) def calc_bitmap(self): - log.debug("vtoc after: %s" % self.sector_map[0:35*16]) + log.debug("vtoc after: %s (%d free)" % (self.sector_map[0:35*16], self.num_free_sectors)) # reverse the process from above, so swap the order of every 16 bits, # turn them into bytes, then stuff them back into the vtoc. The bit diff --git a/atrcopy/utils.py b/atrcopy/utils.py index 47813b7..c2288e6 100644 --- a/atrcopy/utils.py +++ b/atrcopy/utils.py @@ -224,6 +224,11 @@ class VTOC(BaseSectorList): if segments is not None: self.parse_segments(segments) + @property + def num_free_sectors(self): + free = np.where(self.sector_map == 1)[0] + return len(free) + def parse_segments(self, segments): raise NotImplementedError