diff --git a/atrcopy/__init__.py b/atrcopy/__init__.py index 0c1c99f..43e7823 100644 --- a/atrcopy/__init__.py +++ b/atrcopy/__init__.py @@ -188,17 +188,17 @@ def assemble(image, source_files, data_files, obj_files, run_addr=""): asm = pyatasm.Assemble(name) except SyntaxError, e: raise AtrError("Assembly error: %s" % e.msg) - log.debug("Assembled %s into:" % name) + if _dbg: log.debug("Assembled %s into:" % name) for first, last, object_code in asm.segments: s = segments.add_segment(object_code, first) - log.debug(" %s" % s.name) + if _dbg: log.debug(" %s" % s.name) print "adding %s from %s assembly" % (s, name) for name in data_files: if "@" not in name: raise AtrError("Data files must include a load address specified with the @ char") name, addr = name.rsplit("@", 1) first = text_to_int(addr) - log.debug("Adding data file %s at $%04x" % (name, first)) + if _dbg: log.debug("Adding data file %s at $%04x" % (name, first)) subset = slice(0, sys.maxint) if "[" in name and "]" in name: name, slicetext = name.rsplit("[", 1) @@ -218,7 +218,7 @@ def assemble(image, source_files, data_files, obj_files, run_addr=""): with open(name, 'rb') as fh: data = fh.read()[subset] s = segments.add_segment(data, first) - log.debug("read data for %s" % s.name) + if _dbg: log.debug("read data for %s" % s.name) for name in obj_files: parser = find_diskimage(name) if parser and parser.image: diff --git a/atrcopy/ataridos.py b/atrcopy/ataridos.py index b17f5a9..4290aff 100644 --- a/atrcopy/ataridos.py +++ b/atrcopy/ataridos.py @@ -22,7 +22,7 @@ class AtariDosWriteableSector(WriteableSector): self.data[index + 0] = (self.file_num << 2) | (hi & 0x03) self.data[index + 1] = lo self.data[index + 2] = self.used - log.debug("sector metadata for %d: %s" % (self._sector_num, self.data[index:index + 3])) + if _dbg: log.debug("sector metadata for %d: %s" % (self._sector_num, self.data[index:index + 3])) # file number will be added later when known. @@ -31,10 +31,10 @@ class AtariDosVTOC(VTOC): self.vtoc1 = segments[0].data bits = np.unpackbits(self.vtoc1[0x0a:0x64]) self.sector_map[0:720] = bits - log.debug("vtoc before:\n%s" % str(self)) + if _dbg: log.debug("vtoc before:\n%s" % str(self)) def calc_bitmap(self): - log.debug("vtoc after:\n%s" % str(self)) + if _dbg: log.debug("vtoc after:\n%s" % str(self)) packed = np.packbits(self.sector_map[0:720]) self.vtoc1[0x0a:0x64] = packed s = WriteableSector(self.sector_size, self.vtoc1) @@ -52,7 +52,7 @@ class AtariDosDirectory(Directory): def encode_dirent(self, dirent): data = dirent.encode_dirent() - log.debug("encoded dirent: %s" % data) + if _dbg: log.debug("encoded dirent: %s" % data) return data def set_sector_numbers(self, image): @@ -225,7 +225,7 @@ class AtariDosDirent(Dirent): self.file_num = index self.dos_2 = True self.in_use = True - log.debug("set_values: %s" % self) + if _dbg: log.debug("set_values: %s" % self) class MydosDirent(AtariDosDirent): @@ -279,7 +279,7 @@ class AtariDosFile(object): pos = 0 style_pos = 0 first = True - log.debug("Initial parsing: size=%d" % self.size) + if _dbg: log.debug("Initial parsing: size=%d" % self.size) while pos < self.size: if pos + 1 < self.size: header, = b[pos:pos+2].view(dtype=' 0: raise InvalidDiskImage("Cart not multiple of 1K") if k != c[2]: diff --git a/atrcopy/diskimages.py b/atrcopy/diskimages.py index 2b0d4ac..65c7ef2 100644 --- a/atrcopy/diskimages.py +++ b/atrcopy/diskimages.py @@ -348,7 +348,7 @@ class DiskImageBase(object): def write_sector_list(self, sector_list): for sector in sector_list: pos, size = self.header.get_pos(sector.sector_num) - log.debug("writing: %s at %d" % (sector, pos)) + if _dbg: log.debug("writing: %s at %d" % (sector, pos)) self.bytes[pos:pos + size] = sector.data def delete_file(self, filename): @@ -373,7 +373,7 @@ class DiskImageBase(object): try: vtoc = self.get_vtoc_object() for sector_num, pos, size in vtoc.iter_free_sectors(): - log.debug("shredding: sector %s at %d, fill value=%d" % (sector_num, pos, fill_value)) + if _dbg: log.debug("shredding: sector %s at %d, fill value=%d" % (sector_num, pos, fill_value)) self.bytes[pos:pos + size] = fill_value except AtrError: self.rollback_transaction(state) diff --git a/atrcopy/dos33.py b/atrcopy/dos33.py index f2c228e..16c7724 100644 --- a/atrcopy/dos33.py +++ b/atrcopy/dos33.py @@ -24,7 +24,7 @@ class Dos33TSSector(WriteableSector): t, s = self.header.track_from_sector(sector.sector_num) self.data[index] = t self.data[index + 1] = s - log.debug("tslist entry #%d: %d, %d" % (index, t, s)) + if _dbg: log.debug("tslist entry #%d: %d, %d" % (index, t, s)) index += 2 def get_tslist(self): @@ -93,10 +93,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:\n%s" % str(self)) + if _dbg: log.debug("vtoc before:\n%s" % str(self)) def calc_bitmap(self): - log.debug("vtoc after:\n%s" % str(self)) + if _dbg: log.debug("vtoc after:\n%s" % str(self)) # 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 @@ -129,7 +129,7 @@ class Dos33Directory(Directory): def encode_dirent(self, dirent): data = dirent.encode_dirent() - log.debug("encoded dirent: %s" % data) + if _dbg: log.debug("encoded dirent: %s" % data) return data def set_sector_numbers(self, image): @@ -140,7 +140,7 @@ class Dos33Directory(Directory): t, s = image.header.track_from_sector(next_sector) sector.data[1] = t sector.data[2] = s - log.debug("directory sector %d -> next = %d" % (sector.sector_num, next_sector)) + if _dbg: log.debug("directory sector %d -> next = %d" % (sector.sector_num, next_sector)) current_sector = next_sector @@ -266,7 +266,7 @@ class Dos33Dirent(Dirent): tslist = BaseSectorList(header) for start in range(0, len(sector_list), header.ts_pairs): end = min(start + header.ts_pairs, len(sector_list)) - log.debug("ts: %d-%d" % (start, end)) + if _dbg: log.debug("ts: %d-%d" % (start, end)) s = Dos33TSSector(header, sector_list, start, end) s.ts_start, s.ts_end = start, end tslist.append(s) @@ -274,7 +274,7 @@ class Dos33Dirent(Dirent): vtoc.assign_sector_numbers(self, tslist) sector_list.extend(tslist) self.track, self.sector = header.track_from_sector(tslist[0].sector_num) - log.debug("track/sector lists:\n%s" % str(tslist)) + if _dbg: log.debug("track/sector lists:\n%s" % str(tslist)) def sanity_check(self, image): if self.deleted: @@ -294,7 +294,7 @@ class Dos33Dirent(Dirent): sector_map = [] while sector_num > 0: image.assert_valid_sector(sector_num) - log.debug("reading track/sector list at %d for %s" % (sector_num, self)) + if _dbg: log.debug("reading track/sector list at %d for %s" % (sector_num, self)) data, _ = image.get_sectors(sector_num) sector = Dos33TSSector(image.header, data=data) sector.sector_num = sector_num @@ -318,7 +318,7 @@ class Dos33Dirent(Dirent): if not self.is_sane: raise InvalidDirent("Invalid directory entry '%s'" % str(self)) self.get_track_sector_list(image) - log.debug("start_read: %s, t/s list: %s" % (str(self), str(self.sector_map))) + if _dbg: log.debug("start_read: %s, t/s list: %s" % (str(self), str(self.sector_map))) self.current_sector_index = 0 self.current_read = self.num_sectors @@ -327,7 +327,7 @@ class Dos33Dirent(Dirent): sector = self.sector_map[self.current_sector_index] except IndexError: sector = -1 # force ByteNotInFile166 error at next read - log.debug("read_sector: index %d=%d in %s" % (self.current_sector_index,sector, str(self))) + if _dbg: log.debug("read_sector: index %d=%d in %s" % (self.current_sector_index,sector, str(self))) last = (self.current_sector_index == len(self.sector_map) - 1) raw, pos, size = image.get_raw_bytes(sector) bytes, num_data_bytes = self.process_raw_sector(image, raw) @@ -415,7 +415,7 @@ class Dos33DiskImage(DiskImageBase): else: raise InvalidDiskImage("Invalid VTOC location for DOS 3.3") - log.debug("DOS 3.3 byte swap: %s" % swap_order) + if _dbg: log.debug("DOS 3.3 byte swap: %s" % swap_order) vtoc_type = np.dtype([ ('unused1', 'S1'), @@ -453,7 +453,7 @@ class Dos33DiskImage(DiskImageBase): files = [] while sector > 0: self.assert_valid_sector(sector) - log.debug("reading catalog sector: %d" % sector) + if _dbg: log.debug("reading catalog sector: %d" % sector) values, style = self.get_sectors(sector) sector = self.header.sector_from_track(values[1], values[2]) i = 0xb @@ -468,7 +468,7 @@ class Dos33DiskImage(DiskImageBase): files.append(dirent) if directory is not None: directory.set(num, dirent) - log.debug("valid directory entry %s" % dirent) + if _dbg: log.debug("valid directory entry %s" % dirent) i += 0x23 num += 1 self.files = files @@ -525,7 +525,7 @@ class Dos33DiskImage(DiskImageBase): sector = self.header.first_directory while sector > 0: self.assert_valid_sector(sector) - log.debug("loading directory segment from catalog sector %d" % sector) + if _dbg: log.debug("loading directory segment from catalog sector %d" % sector) raw, pos, size = self.get_raw_bytes(sector) byte_order.extend(range(pos, pos + size)) sector = self.header.sector_from_track(raw[1], raw[2]) @@ -557,7 +557,7 @@ class Dos33DiskImage(DiskImageBase): self.assert_valid_sector(sector_num) raw, _, _ = self.get_raw_bytes(sector_num) next_sector = self.header.sector_from_track(raw[1], raw[2]) - log.debug("checking catalog sector %d, next catalog sector: %d" % (sector_num, next_sector)) + if _dbg: log.debug("checking catalog sector %d, next catalog sector: %d" % (sector_num, next_sector)) if next_sector == 0: raise NoSpaceInDirectory("No space left in catalog") return sector_num, next_sector @@ -596,7 +596,7 @@ class Dos33DiskImage(DiskImageBase): for s in segments: origin = min(origin, s.start_addr) last = max(last, s.start_addr + len(s)) - log.debug("contiguous bytes needed: %04x - %04x" % (origin, last)) + if _dbg: log.debug("contiguous bytes needed: %04x - %04x" % (origin, last)) if run_addr and run_addr != origin: # check if run_addr points to some location that has data found = False @@ -652,7 +652,7 @@ class Dos33BinFile(object): pos = 0 style_pos = 0 first = True - log.debug("Initial parsing: size=%d" % self.size) + if _dbg: log.debug("Initial parsing: size=%d" % self.size) if len(b[pos:pos + 4]) == 4: start, count = b[pos:pos + 4].view(dtype=' 0: self.sectors.append(self.current_sector) @@ -329,7 +329,7 @@ class VTOC(BaseSectorList): order = [] for i in range(num): order.append(self.get_next_free_sector()) - log.debug("Sectors reserved: %s" % order) + if _dbg: log.debug("Sectors reserved: %s" % order) self.calc_bitmap() return order @@ -337,7 +337,7 @@ class VTOC(BaseSectorList): free = np.nonzero(self.sector_map)[0] if len(free) > 0: num = free[0] - log.debug("Found sector %d free" % num) + if _dbg: log.debug("Found sector %d free" % num) self.sector_map[num] = 0 return num raise NotEnoughSpaceOnDisk("No space left in VTOC") diff --git a/test/mock.py b/test/mock.py index 397fc21..90324ba 100644 --- a/test/mock.py +++ b/test/mock.py @@ -26,5 +26,8 @@ logging.basicConfig(level=logging.WARNING) logger = logging.getLogger() logger.setLevel(logging.DEBUG) +import __builtin__ +__builtin__._dbg = False + import numpy as np from numpy.testing import assert_almost_equal diff --git a/test/test_add_file.py b/test/test_add_file.py index 1a2652e..3895aa6 100644 --- a/test/test_add_file.py +++ b/test/test_add_file.py @@ -159,6 +159,9 @@ class TestDos33Image(BaseFilesystemModifyTest): if __name__ == "__main__": + import __builtin__ + __builtin__._dbg = False + t = TestAtariDosSDImage() for name in dir(t): print name